美文网首页
ModelLoader

ModelLoader

作者: 程树欣 | 来源:发表于2017-01-20 18:29 被阅读52次

有些情况下在加载游戏模型的时候需要控制一些加载的进度,因此可以用G3dModelLoader来代替 AssetManager进行资源加载

ModelLoader modelLoader = new G3dModelLoader(new JsonReader());
ModelData modelData = modelLoader.loadModelData(Gdx.files.internal("data/data.g3dj"));
Model model = new Model(modelData, new TextureProvider.FileTextureProvider());
for (int i = 0; i < model.nodes.size; i++) {
    //Todo: do sth
}

在这里,可以通过实现TextureProvider来对textures做更多的控制与操作

ModelData 包含了原始的Model资源,基本上一一对应的包含了所有文件格式,但是并没有包含任何资源,
其中用float和short数组替代了Mesh,以及用只包含了纹理文件名的textures替代了真实的纹理资源

ModelInstance中包含了Model中的部分类型,如materials,nodes和animations数组,这些东西都是ModelInstance在构造的时候从Model中copy来的(注意是copy不是引用)这其实意味着你要修改某一Model的materials的时候不会影响其他的Model
ModelInstance中并没有像Model一样包含 Mesh跟 MeshPart数组,它是通过对Node (NodePart)进行引用来实现的,所以Mesh会被共享在若干个Model对象里面,也会包含在纹理和材质里面,牵一发而动全身

NodePart 是一个Model中最小的组成部分,用来描述如何去渲染一个Model,它包含了MeshPart 以及 Material。一个Renderable也同样包含这些值跟transform,lights,shader,userData一起提供

调用ModelBatch.render(ModelInstance)的时候,ModelInstance中的所有节点将转换到Renderable中然后用ModelBatch绘制

Tips

  • 加载g3dj格式的模型时G3dModelLoader使用JsonReader参数类型
  • 加载g3db格式模型时G3dModelLoader使用UBJsonReader参数类型

相关文章

网友评论

      本文标题:ModelLoader

      本文链接:https://www.haomeiwen.com/subject/hlqgbttx.html