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

时间:2018-06-24 02:42:38

标签: javascript three.js gltf

我打猎不错,但是找不到解决方法:

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

我的情况:

我要导出的场景中有随机数量的带有子网格物体的Object3D,但是我从场景中删除了除对象和它们的子网格物体以外的所有内容,以及一个用来显示面法线方向的助手,并且我仍然收到错误:

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

以前,我没有Object3D,只是将网格物体作为场景的子对象,并且导出效果很好。不幸的是,要使程序正常工作,需要在对象中包含网格,并且文档建议可以将其导出。

有人可以考虑解决此问题的方法吗?

1 个答案:

答案 0 :(得分:1)

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

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

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

导出之前,可以制作场景的副本。

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

,然后尝试导出sceneCopy。

给出一个尝试,如果它不起作用,请在这里重试:)

hth