微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

HelixToolkit 场景操作

如何解决HelixToolkit 场景操作

我正在使用 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),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 工具包有两种类型的节点,场景节点类型和元素 3d 模型。元素 3d 模型类型是场景节点的包装器,为 xaml mvvm 绑定提供 wpf 依赖属性。但是,不能将元素3d模型类型添加到场景节点树中,但可以使用SceneNodeGroupModel3D将场景节点类型添加到元素模型类型树中。

Assimp 导入器仅提供场景节点类型结果,因为它不依赖于 wpf。您需要使用 Group 节点而不是 GroupModel3D 来添加模型。然后在场景图中找到另一个组节点以添加您的组节点。或者也可以在根节点下添加,也就是Group节点。

这里是维基了解更多详情 https://github.com/helix-toolkit/helix-toolkit/wiki/Use-Element3D-or-SceneNode-under-WPF.SharpDX-or-UWP

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。