Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
369 views
in Technique[技术] by (71.8m points)

c# - Helix Toolkit - Rotating Model3DGroup its Center

Here is my code. I want to rotate satellite through its center but it rotates through (0,0,0). I can't find its center. What can I do? satellite I get roll,yaw and pitch datas from serial port and then rotate satellite.

//Salih Gumusbuga Copyright ? 11 Jan 2021 

namespace WPF_3D_gettingStarted { public partial class MainWindow : Window { Model3DGroup satellite; BoxVisual3D mybox;

    Model3D part;
    Form1 form1 = new Form1();

    public Model3D our_Model { get; set; }
    public Model3DGroup dondur(Model3DGroup uydu, double angle)
    {
        RotateTransform3D myRotateTransform = new RotateTransform3D(new AxisAngleRotation3D(new Vector3D(1, 0, 0), 0));
        myRotateTransform.CenterX = 0;
        myRotateTransform.CenterY = 0;
        myRotateTransform.CenterZ = 20;
        uydu.Transform = myRotateTransform;

        return uydu;
    }


    private void dispatcherTimer_Tick(object sender, EventArgs e)
    {
        satellite=dondur(satellite, form1.angle);
    }
    public MainWindow()
    {
        InitializeComponent();
        DispatcherTimer dispatcherTimer = new System.Windows.Threading.DispatcherTimer();
        dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
        dispatcherTimer.Interval = new TimeSpan(0, 0, 1);
        dispatcherTimer.Start();
        Loaded += MainWindow_Loaded;

        ModelImporter importer = new ModelImporter();
        Material material = new DiffuseMaterial(new SolidColorBrush(Colors.Beige));
        importer.DefaultMaterial = material;

        satellite = new Model3DGroup();
        m_helix_viewport.DefaultCamera = new PerspectiveCamera();
        m_helix_viewport.DefaultCamera.Position = new Point3D(400,0, 0);
        m_helix_viewport.DefaultCamera.LookDirection = new Vector3D(-400, 0, 0);
        m_helix_viewport.DefaultCamera.UpDirection = new Vector3D(0, 0, 1);
        part = importer.Load(@"uydu/uydu.obj");
        

        satellite.Children.Add(part);

        this.our_Model = satellite;


        mybox = new BoxVisual3D();
        mybox.Height = 5;
        mybox.Width = 5;
        mybox.Length = 5;
        m_helix_viewport.Children.Add(mybox);


        overall_grid.DataContext = this;
    }

    private void MainWindow_Loaded(object sender, RoutedEventArgs e)
    {
        
        form1.Show();

    }


}

}


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
等待大神答复

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...