12
2020
10

Babylonjs加载模型

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开发不熟,不知道别人是怎么做的。




« 上一篇下一篇 »

相关文章:

babylonjs屏幕坐标世界坐标转换  (2020-10-15 10:53:45)

babylonjs显示坐标轴  (2020-10-15 10:39:55)

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。