在 Three.js 中仅将 Object3D 中包含的网格导出到 GLTF

Exporting only meshes contained in Object3Ds to GLTF in Three.js

我已经找到了很好的方法,但找不到解决方案:

Three.js 的 GLTFExport 允许导出在导出器中命名的特定对象。

我的情况:

我的场景中有随机数量的带有子网格的 Object3D 要导出,但是我已经从场景中删除了除对象及其子网格和显示面法线方向的助手之外的所有内容,我仍然得到错误:

Uncaught Error: THREE.GLTFExporter: userData can't be serialized

以前我没有 Object3D,只有网格本身作为场景的子项,导出工作正常。不幸的是,程序运行需要对象中的网格,并且文档表明可以导出它们。

谁能想出办法解决这个问题?

userData 是每个 Object3D 上的一个字段,通常设置为 {}。它旨在允许用户(您)将自己的数据存储在 Object3D 或派生 class 上,而不会弄乱对象的内部结构。您可能在场景中的 object3D 上设置了一些 .userData。 .

查找的简单方法是 scene.traverse((o)=>{console.log(o.userData)}) 并查看您的任何对象上是否存储了 userData。

您可以在使用 var sceneCopy = scene.clone(true);

导出之前复制场景

然后sceneCopy.traverse((o)=>{o.userData={};});

然后尝试导出sceneCopy。

试一试,如果它不起作用,请返回这里:)

hth