提问人:Lluis 提问时间:10/25/2023 最后编辑:Lluis 更新时间:10/25/2023 访问量:19
在 C 中使用 HelixToolkit 和 SharpDX 将相同的 SceneNode 添加到 SceneNodeGroupModel3D#
Adding the same SceneNode to a SceneNodeGroupModel3D with HelixToolkit and SharpDX in C#
问:
我有一个绑定到 ModelGroup(即 SceneNodeGroupModel3D)的 Viewport3DX。就我而言,我必须将 .obj 文件导入为 SceneNode,并使用函数 ModelGroup.AddNode(node) 将其添加到 ModelGroup。我这样做如下:
var importer = new Importer();
HelixToolkitScene scene = importer.Load("PathToTheModel");
ModelGroup.AddNode(scene.Root)
但是,一旦我尝试添加相同的 SceneNode(因为我想导入相同的模型,然后将其放置在不同的位置),它就不起作用了。事实上,第二个将返回 false,因为我们在 SceneNodeGroupModel3D 中都有这样的 SceneNode。ModelGroup.AddNode(scene.Root)
我发现的解决方案是再次使用导入器,但我觉得这不是该怎么做的方法,因为一旦我加载了模型,重新加载它就没有意义了,对吧?
据我所知,当您使用导入器时,SceneNode 链接到新的 GUID(全局唯一标识符),并且该函数会检查 SceneNodeGroupModel3D 的现有节点,如果匹配,则忽略该命令。然后,在使用相同模型的情况下,只需添加一个,如果我导入两次,我就可以在组中获得两个相同的模型,但具有不同的 GUID。.AddNode()
scene.Root
那么,问题是如何添加到 SceneNode 并克隆到同一个 SceneNodeGroupModel3D?我不介意它是否修改 GUID、克隆整个 SceneNode 或您可能建议的任何解决方法。对于这个例子可能不是问题,但想象一下,如果我们有 1 个模型但 100 次,那么一直导入和加载同一个模型会浪费资源。
提前致谢!
答: 暂无答案
评论