gpt4 book ai didi

java - LibGDX 动态构建(快速)模型

转载 作者:行者123 更新时间:2023-12-02 05:27:48 25 4
gpt4 key购买 nike

我正在创建一个类似体素的游戏,其中体素比普通的《我的世界》克隆小。这些体素没有 ID 来确定 block 的类型,而是有颜色。

我的风景对象由微小的体素组成,是由保存每个体素颜色整数的二进制数据构造的。然后,它们根据体素构建一个小型模型。

问题是它不接受我的小网格及其颜色,而是要求我提供覆盖所有其他颜色的 Material 。我还尝试了另一种替代方法,它制作了很多微型模型,但速度太慢了。

我目前拥有的,可以将场景渲染为白色:

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());
}

我现在不太确定该去哪里。我必须能够在渲染时指定环境,因此使用着色器渲染一组网格体将不起作用。

最佳答案

我可以向您保证 Material 不会覆盖顶点颜色(它们是两个截然不同的东西)。您只是从未指定要使用顶点颜色,导致它们不被包含在内。考虑添加 VertexAttributes.Usage.ColorPacked

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

关于java - LibGDX 动态构建(快速)模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25837115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com