wpf - 调整 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;
}
解决方案
这现在有点老了,但是……如果我理解的话,你想改变相机的位置。
下面是如何在 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);
}
推荐阅读
- angular - Angular 项目中的 Chrome 开发人员“错误类型错误:无法读取 null 的属性‘动画’”
- c++ - 是否可以更改 vtable 中的任何 func 指针?
- firebase - SPA 和网站的单独托管,但共享域
- c++ - 重载 std::tuple 的类型转换运算符
- python - 在过滤的查询集中获取重复的记录
- python-2.7 - Nifi:如何将 ExecuteStreamCommand 输出嵌入到 PutEmail 消息
- php - 如何在 PHP 中将选择数据保存为逗号分隔值
- mapping - 我如何从 gensim 的 translation_matrix 中获取向量
- java - (Android Studio) 我的井字游戏因 (java.lang.IllegalStateException: Could not execute method for android:onClick) 错误而崩溃
- java - 使用 MongoOperation 在 Spring Data MongoDB 中构建 ArrayFilters 更新