【发布时间】:2014-01-27 17:43:46
【问题描述】:
我正在尝试从单独的纹理转移到为我的盒子使用纹理图集(它们都显示了类似拼字游戏的单独字母)。我坚持这一点,我找到的所有示例都是针对 2D 精灵的。
如何使用来自 AtlasRegion 的正确贴图坐标创建材质并将其分配给 3D 表面?
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);
...
【问题讨论】:
-
如果您需要纹理,您可以从 TextueAtlas.getTexture 获取纹理,也可以将纹理传递给自定义着色器。