c# - 转换 Model3DGroup 两次

标签 c# wpf

我需要对 Model3DGroup 进行两次变换(一次设置位置,一次设置旋转)。我试过这个:

var model = ModelImporter.Load(gameAssetPath);
model.Transform = new TranslateTransform3D(
        placedObject.SpawnCoordinates.X,
        placedObject.SpawnCoordinates.Y,
        placedObject.SpawnCoordinates.Z);
var modelRotation = new Model3DGroup();
modelRotation.Children.Add(model);
modelRotation.Transform = new RotateTransform3D(new AxisAngleRotation3D(), placedObject.SpawnCoordinates.Roll, placedObject.SpawnCoordinates.Pitch, placedObject.SpawnCoordinates.Yaw);

那是不行的。我在 google 和 SO 上搜索过,似乎找不到任何东西。

最佳答案

你需要TransformGroup为此上课。

该类将结合您的转换。

var model = ModelImporter.Load(gameAssetPath);
var modelRotation = new Model3DGroup();
modelRotation.Children.Add(model);
var t1 = new TranslateTransform3D(
        placedObject.SpawnCoordinates.X,
        placedObject.SpawnCoordinates.Y,
        placedObject.SpawnCoordinates.Z);
var t2 = new RotateTransform3D(
         new AxisAngleRotation3D(), 
        placedObject.SpawnCoordinates.Roll, 
        placedObject.SpawnCoordinates.Pitch, 
        placedObject.SpawnCoordinates.Yaw);
var tg = new TransformGroup();
tg.Children.Add(t1);
tg.Children.Add(t2);
modelRotation.Transform = tg;

关于c# - 转换 Model3DGroup 两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14924756/

相关文章:

c# - 为模型属性添加自定义错误消息

wpf - 列表框和 MVVM 的用户控制数据绑定(bind)问题

wpf - 在代码隐藏(WPF)中使用附加属性进行控制

c# - 使用资源中的几何图形的 WPF 自定义按钮

c# - 使用 LINQ 访问文件夹

c# - 排序时ASP.net gridview数据源为空

c# - 检查文本文件是否在记事本中打开

c# - Datagridview 列限制

c# - 在 WCF 中使用 netsh 添加端口作为没有管理员权限的域管理员

c# - 如何获取canvas wpf中的所有对象坐标