ThreeJS加载ldraw模型优化方案
ThreeJS官方加载Ldraw文件,实质就是通过循环加载.mpd文件里每一个dat模型,这样相同的dat就会出现重复加载,因此要提升加载速度,唯有将这个流程简化。说一下我的思路:第一步先将ldraw模型文件先解析出来,记录下每一行dat数据的同时,也统计下本模型只需要加载哪些dat模型。接下来,先加载出来本模型所需要的dat模型零件,存到一个列表里,这些模型作为基础模型不需要添加到场景中。通过用
·
ThreeJS官方加载Ldraw文件,实质就是通过循环加载.mpd文件里每一个dat模型,这样相同的dat就会出现重复加载,因此要提升加载速度,唯有将这个流程简化。
说一下我的思路:
- 第一步先将ldraw模型文件先解析出来,记录下每一行dat数据的同时,也统计下本模型只需要加载哪些dat模型。
- 接下来,先加载出来本模型所需要的dat模型零件,存到一个列表里,这些模型作为基础模型不需要添加到场景中。
- 通过用ThreeJS.Object3D的clone()方法,从加载出来的模型列表里找出相同名字的dat模型,不需要做重复的加载工作。毕竟clone一个模型比load一个模型速度快太多了。
- 最后要将clone出来的模型矩阵信息传进来,还有材质附上就大功告成了。
model.matrix.premultiply(_matrix);
model.matrix.decompose(model.position, model.quaternion, model.scale);
model.children[1].material = _material.clone(); - 最后总结:加载型零件越多,相同dat越多的模型文件速度提升越快,加载的时间提升不止两三倍以上。项目代码复杂,无法提供源码参考,本方案仅作参考,有更好的解决方案欢迎大家指点。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)