繁体   English   中英

以编程方式更改模型纹理 libgdx

[英]Programmatically change model texture libgdx

我正在制作一个游戏,我想根据相关数据更改模型上的纹理,但无论我怎样,只要纹理发生变化,模型就会变得不可见,模型采用 g3dj 格式,这里是材料部分

"materials":[
    {
        "id":"default",
        "diffuse": [0.640000, 0.640000, 0.640000],
    },
    {
        "id":"plant fibre",
        "textures":[
            {
                "id": "Texture.001",
                "filename": "graphics/plant fibre.png",
                "type": "DIFFUSE"
            }
        ]
    },
    {
        "id":"logs",
        "textures":[
            {
                "id": "Texture.001",
                "filename": "graphics/logs.png",
                "type": "DIFFUSE"
            }
        ]
    }
],

这是我最近的尝试

 self.getMaterial("default").clear();
 self.getMaterial("default").set(self.getMaterial(extra.getString("item")).get(TextureAttribute.Diffuse));

我已经尝试了通过在线搜索找到的所有内容,但都遇到了同样的问题

原来未使用的材料没有传递给模型实例我只需要修改模型然后创建和渲染模型实例

Ps:这总是发生我对某些事情感到厌烦所以我在这里发布问题然后在 24 小时内解决问题

// trees

val loader: ObjLoader = ObjLoader()
tree = loader.loadModel(Gdx.files.internal("data/tree2.obj"))
treeInstance = ModelInstance(tree)

for (m in treeInstance!!.materials) {
    println("material id: ${m.id}")
    m.remove(ColorAttribute.Emissive)
    if (m.id == "Leafs" || m.id == "Leafs2") {
        m.set(ColorAttribute.createDiffuse(Color.FOREST))
    } else {
        m.set(ColorAttribute.createDiffuse(Color.BROWN))
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM