以 gltf 格式从 Blender 导出组到 Three.js
Posted
技术标签:
【中文标题】以 gltf 格式从 Blender 导出组到 Three.js【英文标题】:Exporting group to Three.js from Blender in gltf format 【发布时间】:2019-06-29 02:52:36 【问题描述】:我有一个 Blender 场景,其中对象被组织成集合。
当我以 gltf 格式导出场景并将其导入我的 Three.js 项目时,没有跟踪这些集合。
我的预期是每个集合对应一个组。
我怎样才能得到这个结果?有可能吗?
【问题讨论】:
【参考方案1】:我认为最稳健的方法可能是在 Blender 中为每个集合创建一个 Empty 对象,并将其用作其集合其余内容的父级。给它起一个你可以从 ThreeJS 端查到的名字。
在 glTF 中本身没有“集合”,但有一个父/子节点层次结构,您可以将其用于分组目的。
附带说明,glTF 确实支持多个“场景”,但我不记得导出器是否会这样写出多个 Blender 场景。无论如何,大多数 glTF 阅读器都不能很好地阅读。我怀疑使用 Empty 节点作为组的父节点来组织事物将是经过更好测试的代码路径。
【讨论】:
您能否详细说明要遵循的程序?【参考方案2】: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
【讨论】:
以上是关于以 gltf 格式从 Blender 导出组到 Three.js的主要内容,如果未能解决你的问题,请参考以下文章
为啥在导出为 GLTF 时,blender rigged 动画会变形?