首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >LibGDX动态构建(快速)模型

LibGDX动态构建(快速)模型
EN

Stack Overflow用户
提问于 2014-09-14 19:24:38
回答 1查看 1.4K关注 0票数 1

我正在创建一个类似体素的游戏,其中体素比你的平均我的克隆人小。这些体素没有确定块类型的ID,而是颜色。

我的风景对象,由微小的体素组成,是由包含每个体素颜色整数的二进制数据构成的。然后他们用体素建立了一个小模型。

问题是,它不接受我的小网格与他们的颜色,但要求我提供一个材料,覆盖所有其他颜色。我也尝试过另一种选择,它制造了许多微小的模型,但这实在太慢了。

我现在所拥有的,使场景变成白色:

代码语言:javascript
运行
复制
private void buildFromColours(int[][][] colours) {
    MeshBuilder mb = new MeshBuilder();
    ModelBuilder mm = new ModelBuilder();
    mm.begin();

    List<Mesh> meshes = new LinkedList<Mesh>();
    for (int x = 0; x < colours.length; x++) {
        for (int y = 0; y < colours[x].length; y++) {
            for (int z = 0; z < colours[x][y].length; z++) {
                int col = colours[x][y][z];

                if ((col & 0xFF) == 0) {
                    continue;
                }


                mb.begin(VertexAttributes.Usage.Position | VertexAttributes.Usage.Normal, GL20.GL_TRIANGLES);
                mb.setColor(new Color(col));
                mb.box(x, y, z, 1, 1, 1);
                Mesh m = mb.end();
                meshes.add(m);
            }
        }
    }

    Mesh finalMesh = Mesh.create(true, meshes.toArray(new Mesh[0]));
    mm.part("box", finalMesh, GL20.GL_TRIANGLES, new Material()); /* I have to specify a material :( */
    model = new ModelInstance(mm.end());
}

我现在不太确定该去哪里。在渲染时,我必须能够指定一个环境,所以用着色器渲染一组网格将无法工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-14 20:02:24

我可以向你保证,材料不会覆盖顶点颜色(它们是两种截然不同的东西)。您根本没有指定要使用顶点颜色,从而导致不包括顶点颜色。考虑添加VertexAttributes.Usage.ColorPacked

顺便说一句,您可能需要重新考虑您的方法(体素需要特别注意,MeshBuilder并不适合这样做)。如果您仍然想使用ModelBuilder/MeshBuilder (您只需要其中一个,而不是两者都需要),那么请考虑阅读https://github.com/libgdx/libgdx/wiki/ModelBuilder%2C-MeshBuilder-and-MeshPartBuilder

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25837115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档