Babylonjs只支持加载“.babylon”模型,官方提供了一些插件可以从3D建模软件导出“.babylon”模型,其它格式的模型只能通过插件来加载。
使用babylonjs.loaders.js来加载模型。
babylonjs.loaders.js下载:https://www.npmjs.com/package/babylonjs-loaders
用法参考:https://blog.csdn.net/qq_30100043/article/details/88933962
我使用LoadAssetContainer来加载,因为我不是一次性加载整个场景,一个模型文件对应一个器材,用到的时候才加载。LoadAssetContainer加载完成之后,会得到一个AssetContainer对象,通过AssetContainer对象的addAllToScene来加载到场景,removeAllFromScene来从场景中删除。
加载完得到一堆mesh,如何拿到器材的一部分(比如铡刀开关的铡刀)?
如果铡刀是一个mesh,可以在建模软件中给铡刀起个名字,代码中通过遍历AssetContainer对象的meshes,通过name属性来找到铡刀。
如果铡刀不是一个mesh,本来想通过分组(blender中是Collection,其它软件不知道),给组起名字,然后来找到。但是发现blender导出".obj"或其它格式之后,Collection信息是丢失的。把多个Mesh放到一个空对象(Empty)中,导出“.gltf”格式,有空对象的信息,“.obj”和“.babylon”文件没有,所以使用“.gltf”格式,把多个mesh放到一个空对象中,给空对象命名,获取的时候,通过AssetContainer对象的transformNodes来获取(遍历,匹配name属性)。
3D开发不熟,不知道别人是怎么做的。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。