我正在使用HelixToolkit导入模型并显示它。
现在我想获取模型的一个对象并旋转它。
不幸的是,我找不到编辑导入程序给我的场景的方法。
var imp = new HelixToolkit.SharpDX.Core.Assimp.Importer();
var scene = imp.Load(".\test.obj");
foreach (var node in scene.Root.Traverse().ToList())
{
if (node.Name.Contains("gate"))
{
node.RemoveSelf(); // remove from scene to be able to add to group
var mg = new SceneNodeGroupModel3D();
mg.AddNode(node);
mg.Transform = new RotateTransform3D(new AxisAngleRotation3D(new Vector3D(1,0,0), 45 ));
// could not find a way to add the group back
}
}
this.ModelGroup.AddNode(scene.Root); // That's the SceneNodeGroupModel3D that is bound to the Viewport3DX for displaying
虽然我可以移除对象并将其添加到旋转组,但我无法将其添加回场景。
SceneNodeGroupModel3D
的Parent属性不可设置,SceneNode
也无法向其添加子级。
那么如何使用HelixToolkit进行场景编辑
Helix工具箱有两种类型的节点,场景节点类型和元素三维模型。元素三维模型类型是场景节点的包装器,为xaml-mvm绑定提供wpf依赖属性。但是,元素三维模型类型不能添加到场景节点树中,但可以使用SceneNodeGroupModel3D将场景节点类型添加到元素模型类型树中。
Assimp导入器只提供场景节点类型的结果,因为它不依赖于wpf。您需要使用"组"节点而不是"GroupModel3D"来添加模型。然后在场景图中找到另一个组节点以添加您的组节点。也可以将其添加到根节点下,根节点是Group节点。
以下是有关详细信息的wikihttps://github.com/helix-toolkit/helix-toolkit/wiki/Use-Element3D-or-SceneNode-under-WPF.SharpDX-or-UWP