我有一个Blender场景,其中将对象组织到集合中。
当我以gltf格式导出场景并将其导入到Three.js项目中时,就没有这些碰撞的痕迹。
我期望的是,每个集合对应一个组。
如何获得此结果?有可能吗?感谢您的帮助。
答案 0 :(得分:0)
我认为,最可靠的方法可能是在Blender中为每个集合创建一个Empty对象,并将其用作其集合其余内容的父对象。给它一个名称,您可以在ThreeJS方面进行查找。
在glTF中,本身没有“集合”,但是有一个父/子节点层次结构,您可以将其用于分组目的。
请注意,glTF确实支持多个“场景”,但是我不记得出口商是否会像这样写出多个Blender场景。无论如何,大多数glTF读者都做得不好。我怀疑使用Empty节点作为组的父级来组织事物将是测试得更好的代码路径。
答案 1 :(得分:0)
emackey的答案很好:
objects_x children of parent y = collection1
objects_z children of parent a = collection2
Three.js具有一个名为Layers的Object3D属性,该属性允许这种使用情况:
objects_x = collection1
objects_z = collection2
objects_x & objects_z = collection3
这允许部分显示收藏夹,或者单个对象出现在多个收藏夹中。
我发现执行此操作的唯一方法是为每个对象手动分配Three.js图层值,如下所示:
gltf.scene.children[0].layers.enable(1);
camera.layers.enable(1)
然后您可以使用以下命令切换第1层中对象的可见性:
camera.layers.toggle(1);
在这里查看更多详细信息:https://threejs.org/examples/#webgl_layers