vis-three / scene-editor

vis-three框架衍生出的全自定义web3D场景编辑器

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

外部模型导入后保存,再次加载模型渲染结果有误

waded3 opened this issue · comments

建模工具自制glb模型,上传模型库并导入场景保存,再次加载,渲染模型结果有时正常,有时不正常(部分模型位置不对或缩放比例有误)。
正常
位置偏离
放大
@vis-three/middleware用的版本是0.6.9,项目运行没有错误,渲染模型效果如上面图片(第一张是正常的)。
@vis-three/middleware用0.6.17或最新版本,会报错,渲染不出模型,错误信息如下:
0 6 17版本错误

此issue已归类为“提问”标签,请进入赞助、合作、通知群进行 issue 完成度与回报模式确认,QQ:586362945,详细issue流程请参照README.md。

关于模型渲染有时正常,有时不正常的问题,这个是由于three.js提供的glb,gltfLoader的问题导致的。

问题原因:

three.js的glbLoader和gltfLoader的解析返回模型的顺序是使用的无序promise返回,这就会导致每次loader出来的模型在资源跟踪上出现混乱。

解决方法:

修改three.js提供的glbLoader和glftLoader,可以统一使用promise.all返回,这样可以固定返回顺序,可以在解析前注入顺序标记,然后装饰一下返回场景,按照顺序标记重新排序一下模型children。或者你可以使用自己的方案,保证每次的解析完的场景结构固定就行。

关于使用新版本@vis-three/middleware产生的栈溢出问题,报错上看暂时不知道原因,请定位到项目本地的报错位置。

自定义的loader可以参照文档相关api:https://vis-three.github.io/docs/library/plugins/plugin-loader-manager.html

进行动态的loader替换。

更新代码并重新安装依赖,后运行编辑器工程,进入编辑器主界面,控制台报如下错误:
报错1
找到项目代码报错位置,注释了immediate: true,控制台不报错。
修改
但是导入上传模型或者加载基础几何物体(如立方体等),都会报栈溢出错误。
报错2
请问下本项目的正确打开运行方式?

栈溢出的问题一般是@vis-three/middleware版本问题,新版本在结合层需要通过defineOption处理,参考文档修改:https://vis-three.github.io/docs/start/combine.html

其他问题参考: #45