gpt4 book ai didi

java - 在 LibGDX 中合并来自 ModelBuilder 的模型

转载 作者:搜寻专家 更新时间:2023-11-01 02:26:29 30 4
gpt4 key购买 nike

我是 LibGDX 3D 工具的新手,我想知道如何合并使用 ModelBuilder#createCylinder 创建的两个圆柱体类。我有两个模型实例:

  • 第一个是白色圆柱体,
  • 第二个是具有相同属性的红色圆柱体

如何让只渲染一个圆柱体(实例/模型/对象/任何可以渲染的)由白色上方的红色组成(反之亦然)。

Pixmap pixmap1 = new Pixmap(1, 1, Format.RGBA8888);
pixmap1.setColor(Color.WHITE);
pixmap1.fill();
Texture white = new Texture(pixmap1);
//...
Texture red = new Texture(pixmap2);

model1 = modelBuilder.createCylinder(4f, 6f, 4f, 16,
new Material(
TextureAttribute.createDiffuse(white),
ColorAttribute.createSpecular(1,1,1,1),
FloatAttribute.createShininess(8f))
, Usage.Position | Usage.Normal | Usage.TextureCoordinates);
model1I_white = new ModelInstance(model1, 0, 0, 0);
//...
model2I_red = new ModelInstance(model2, 0, 0, -2f);

然后我用 ModelBatch#render 渲染 ModelInstance .

最佳答案

除了使用 createCylinder(),您还可以使用 MeshBuilder 类创建 2 个圆柱体,然后使用 part() 组合您的最终圆柱体。

meshBuilder.begin();
meshBuilder.cylinder(4f, 6f, 4f, 16);
Mesh cylinder1 = meshBuilder.end();

meshBuilder.begin();
meshBuilder.cylinder(4f, 6f, 4f, 16);
Mesh cylinder2 = meshBuilder.end();


modelBuilder.begin();

modelBuilder.part("cylinder1",
cylinder1,
Usage.Position | Usage.Normal | Usage.TextureCoordinates,
new Material(
TextureAttribute.createDiffuse(white),
ColorAttribute.createSpecular(1,1,1,1),
FloatAttribute.createShininess(8f)));

modelBuilder.part("cylinder2",
cylinder2,
Usage.Position | Usage.Normal | Usage.TextureCoordinates,
new Material(
TextureAttribute.createDiffuse(red),
ColorAttribute.createSpecular(1,1,1,1),
FloatAttribute.createShininess(8f)))
.mesh.transform(new Matrix4().translate(0, 0, -2f));

Model finalCylinder = modelBuilder.end();

关于java - 在 LibGDX 中合并来自 ModelBuilder 的模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21670740/

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