以gltf格式将组从Blender导出到Three.js

时间:2019-02-05 10:03:11

标签: three.js export blender gltf

我有一个Blender场景,其中将对象组织到集合中。

当我以gltf格式导出场景并将其导入到Three.js项目中时,就没有这些碰撞的痕迹。

我期望的是,每个集合对应一个组。

如何获得此结果?有可能吗?感谢您的帮助。

2 个答案:

答案 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