首页 > 解决方案 > 调整 HelixToolKit 模型的外观

问题描述

我想在我的一个项目中显示 3D 视图。我有一台设备,想根据来自该设备的数据调整其外观。(如左、右、前)

可能是一个容易的地方,但我找不到它。如何调整模型的外观?

为了更加解释;在位于右下角的 ViewCube 中单击 L、F、R 等可以进行视图调整。这些调整是如何以及在哪里触发的?如何访问这些设置?

使用我需要的 C# 代码进行设置。

在此处输入图像描述

C# 代码

        //Path to the model file
    private const string MODEL_PATH = "C:\\Users\\Desktop\\dice.stl";
    SerialPort serial = new SerialPort();
    public MainWindow()
    {
        InitializeComponent();

        ModelVisual3D device3D = new ModelVisual3D();
        device3D.Content = Display3d(MODEL_PATH);
        // Add to view port
        viewPort3d.Children.Add(device3D);

        var axis = new Vector3D(0, 0, 1);
        var angle = 50;

        var matrix = device3D.Transform.Value;
        matrix.Rotate(new Quaternion(axis, angle));

        device3D.Transform = new MatrixTransform3D(matrix);
    }

    /// <summary>
    /// Display 3D Model
    /// </summary>
    /// <param name="model">Path to the Model file</param>
    /// <returns>3D Model Content</returns>
    private Model3D Display3d(string model)
    {
        Model3D device = null;
        try
        {
            //Adding a gesture here
            viewPort3d.RotateGesture = new MouseGesture(MouseAction.LeftClick);

            //Import 3D model file
            ModelImporter import = new ModelImporter();

            //Load the 3D model file
            device = import.Load(model);
        }
        catch (Exception e)
        {
            // Handle exception in case can not file 3D model
            MessageBox.Show("Exception Error : " + e.StackTrace);
        }
        return device;
    }

标签: wpf3dhelix-3d-toolkit

解决方案


这现在有点老了,但是……如果我理解的话,你想改变相机的位置。

下面是如何在 HelixViewport3D 中强制相机属性的示例。

提示:您可以使用 HelixViewport3D 的 ShowCameraInfo="True" 来测试相机坐标。

<hx:HelixViewport3D x:Name="MyViewport" ShowCameraInfo="True">
     <hx:DefaultLights/>
     <hx:CubeVisual3D/>
</hx:HelixViewport3D>


private void Button_Click(object sender, RoutedEventArgs e)
{
    MyViewport.CameraController.CameraLookDirection = new Vector3D(0, -4.7, 0);
    MyViewport.CameraController.CameraPosition = new Point3D(0, 4.7, 0);
    MyViewport.CameraController.CameraTarget = new Point3D(0, 0, 0);
    MyViewport.CameraController.CameraUpDirection = new Vector3D(0, 0, 1);
}

推荐阅读