我打猎不错,但是找不到解决方法:
Three.js的GLTFExport允许在导出器中命名特定对象时将其导出。
我的情况:
我要导出的场景中有随机数量的带有子网格物体的Object3D,但是我从场景中删除了除对象和它们的子网格物体以外的所有内容,以及一个用来显示面法线方向的助手,并且我仍然收到错误:
Uncaught Error: THREE.GLTFExporter: userData can't be serialized
以前,我没有Object3D,只是将网格物体作为场景的子对象,并且导出效果很好。不幸的是,要使程序正常工作,需要在对象中包含网格,并且文档建议可以将其导出。
有人可以考虑解决此问题的方法吗?
答案 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