我试图从使用单独的纹理转变为使用纹理图集来为我的盒子创建材质(它们都显示类似于Scrabble的游戏中的单个字母)。但我卡在这里了,我找到的所有示例都是针对2D精灵的。
我该如何创建并分配材质给一个3D表面,并使用来自AtlasRegion的正确映射坐标?
public void createModelInstance(TextureAtlas letterAtlas) {
AtlasRegion region = letterAtlas.findRegion(this.textureID);
Material mat = new Material(???);
modelInstance = new ModelInstance(modelTile);
modelInstance.nodes.get(0).parts.get(0).material.set(mat);
}
当每个纹理都使用单独的文件时,它可以正常工作:
Material mat = new Material(TextureAttribute.createDiffuse(
assetManager.get("textures/" + textureFile, Texture.class));
表面被创建:
MeshPartBuilder tileBuilder;
tileBuilder = modelBuilder.part("top", GL10.GL_TRIANGLES, Usage.Position | Usage.Normal | Usage.TextureCoordinates, new Material(ColorAttribute.createDiffuse(Color.WHITE)));
tileBuilder.rect(-0.45f, 0.1f, 0.45f, 0.45f, 0.1f, 0.45f, 0.45f, 0.1f, -0.45f, -0.45f, 0.1f, -0.45f, 0f, 1f, 0f);
...