调整 HelixToolKit 模型的外观

Posted

技术标签:

【中文标题】调整 HelixToolKit 模型的外观【英文标题】:Adjusting the HelixToolKit model's appearance 【发布时间】:2021-05-08 16:13:50 【问题描述】:

我想在我的一个项目中展示 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;
    

【问题讨论】:

【参考方案1】:

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

以下是如何在 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);

【讨论】:

以上是关于调整 HelixToolKit 模型的外观的主要内容,如果未能解决你的问题,请参考以下文章

2021-09-20 WPF上位机 30-模型加载(HelixToolKIt使用)

HelixToolkit.WPF Additional DependencyProperty 不工作

使用 Helixtoolkit c# 显示 Point3DCollection

fusuon360怎么整体调整比例

如何更改调整大小手柄的外观?

呈现与模型(隐式动画)