【问题标题】:LibGdx Rendering images on a surface in 3DLibGdx 在 3D 表面上渲染图像
【发布时间】:2014-08-15 05:15:58
【问题描述】:

如何在 3D 环境中的表面上渲染图像?我知道如何渲染 3D 形状和 2D 精灵,但是我如何将某个图片放在立方体/盒子的一侧?或者例如我想创建一个 2D 正方形并在其两侧放一张图片,然后在我的 3D 环境中渲染整个东西。或者每边都有不同图像的盒子。我不知道我是否有道理。

顺便说一下,我在 Eclipse 上使用 libGdx。

【问题讨论】:

  • 你说的是弹孔之类的东西吗?那你应该看看Decal
  • 不是弹孔。我还没到哈哈。我想我在墙上。就像我想建立不同表面的墙壁,但我不知道如何在 3D 环境中绘制带有图像的表面
  • 也许blog.xoppa.com/basic-3d-using-libgdx-2 会是一个很好的介绍。它被称为纹理,而不是图像。然后使用Materials 将它们应用到Models。
  • 我确实阅读了该教程,但他并没有完全按照我的要求进行操作。他不会将纹理应用到他的形状上。

标签: eclipse opengl-es 3d libgdx


【解决方案1】:

我的游戏中有如下代码。墙是我在代码中生成的一个简单的盒子模型。纹理通过Material 应用。

private static final ModelBuilder MODEL_BUILDER = new ModelBuilder();

public static Model createWall(float width, float height, float depth) {
    Texture texture = new Texture("wall.png");
    Material material = new Material(TextureAttribute.createDiffuse(texture), ColorAttribute.createSpecular(1, 1, 1, 1), FloatAttribute.createShininess(8f));
    long attributes = Usage.Position | Usage.Normal | Usage.TextureCoordinates;
    Model wall = MODEL_BUILDER.createBox(width, height, depth, material, attributes);

    return wall;
}

之后,您可以从该 (new ModelInstance(wallModel)) 创建一个 ModelInstance,然后通过 ModelBatch 渲染它。

【讨论】:

  • 非常感谢。我现在就试试。我将如何创建一个表面而不是一个盒子?
  • 对于单个表面,您可以使用 ModelBuilder.createRect(...)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-20
  • 1970-01-01
  • 2014-09-18
  • 1970-01-01
  • 1970-01-01
  • 2010-09-30
  • 1970-01-01
相关资源
最近更新 更多