Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 仅将Object3Ds中包含的网格导出到Three.js中的GLTF_Javascript_Three.js_Gltf - Fatal编程技术网

Javascript 仅将Object3Ds中包含的网格导出到Three.js中的GLTF

Javascript 仅将Object3Ds中包含的网格导出到Three.js中的GLTF,javascript,three.js,gltf,Javascript,Three.js,Gltf,我进行了一次很好的搜索,但找不到解决方案: GLTFExport for Three.js允许在导出器中指定特定对象时导出它们 我的情况: 我想导出场景中随机数目的带有子网格的Object3Ds,但是我已经从场景中删除了除对象及其子网格和用于显示面法线方向的辅助对象之外的所有内容,我仍然得到错误: Uncaught错误:3.GLTFExporter:userData无法序列化 以前我没有Object3Ds,只是将网格作为场景的子对象,导出工作正常。不幸的是,程序工作需要在对象中包含网格,文档表明

我进行了一次很好的搜索,但找不到解决方案:

GLTFExport for Three.js允许在导出器中指定特定对象时导出它们

我的情况:

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

Uncaught错误:3.GLTFExporter:userData无法序列化

以前我没有Object3Ds,只是将网格作为场景的子对象,导出工作正常。不幸的是,程序工作需要在对象中包含网格,文档表明可以导出网格


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

找到这个问题的简单方法是
scene.transverse((o)=>{console.log(o.userData)})
并查看是否有userData存储在任何对象上

在导出之前,可以使用var sceneCopy=scene.clone(true)创建场景的副本

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

然后尝试导出sceneCopy

试一试,如果不起作用,请在这里再试:)


hth

谢谢!我有用户数据。。。。我知道我以前在什么地方见过这个词!我会尝试你建议的解决方案,并让你知道!我对你的代码有一些问题。。。我可以打印到控制台并查看带有userData的对象,但当我尝试复制场景时,不幸地抛出了一个错误:(three.min.js:498
Uncaught RangeError:超出了最大调用堆栈大小
。我能够从原始对象中删除userData,但这将破坏与场景中网格的任何进一步交互…超出的调用堆栈大小是问题的线索。听起来像是一些实用程序或客户端代码已将一些ta在userData中包含循环引用,或者是不可序列化的。你能报告在你找到它们的对象上userData包含的内容吗?是的。我的场景中有一堆网格,我需要在单击它们时找到它们的父对象。我添加了
userData.parent=parentObject
,这样我就可以得到只需键入
arrayObject.parent
,即可创建父对象(这是从指定在光线投射器中找到的第一个对象的变量中调用的)..我发现调用堆栈大小问题归结为
.clone
命令。我通过创建一个新的导出器场景来测试它,在数组中找到每个object3D,然后克隆object3D。一旦单击clone命令,我就会出错…..顺便说一句,我不知道序列化aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa实际上我并不需要.parent作为用户数据添加项…它已经在那里了=\u=,我现在已经把它取出来了,我会做更多的测试,看看是否可以修复它。