gpt4 book ai didi

java - libgdx 的模型纹理错误

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:48:46 24 4
gpt4 key购买 nike

我在使用 libgdx 时遇到问题,当我以任何格式加载模型时,纹理无法正确显示。我不确定是什么导致了这个问题。

示例:在 3ds max 或 blender 中它看起来像这样

但是当我把它放到一个 libgdx 项目中时它看起来像这样

我的代码基于 http://blog.xoppa.com/loading-models-using-libgdx/

我试过带灯和不带灯都没有运气

代码:

//Loading the model
assetManager = new AssetManager();
assetManager.load("data/models/M4A1 SOPMOD/M4A1 SOPMOD.g3db", Model.class);
//..................................................
//Calling to an object and drawing it
public void create()
modelBatch = new ModelBatch();
box = Assets.assetManager.get("data/models/M4A1 SOPMOD/M4A1 SOPMOD.g3db", Model.class);
//box = Assets.getModelByName("M4");
//box = modelBuilder.createBox(1f, 1f, 1f, new Material(ColorAttribute.createDiffuse(Color.WHITE), ColorAttribute.createSpecular(Color.WHITE), FloatAttribute.createShininess(64f)), Usage.Position | Usage.Normal);
boxInstance = new ModelInstance(box);
lights = new Lights();
lights.ambientLight.set(1f, 1f, 1f, 1f);
lights.add(new DirectionalLight().set(1f, 1f, 1f, -1f, -0.8f, -0.2f));
}

public void Update(float deltaTime)
{
dotd.camera.rotateAround(Vector3.Zero, new Vector3(0, 1, 0), deltaTime* 50.0f);
dotd.camera.update();
}

public void Render()
{
modelBatch.begin(dotd.camera);
modelBatch.render(boxInstance, lights);
modelBatch.end();
}

最佳答案

我的第一个猜测是需要翻转纹理坐标,尝试添加(或删除)fbx-conv 的 -f 命令行选项(例如 fbx-conv - f 模型.fbx).

您可能还想检查法线。将以下行添加到您的创建方法:DefaultShader.defaultCullFace = 0; 并且不应用灯光。如果这样可以更好地渲染您的模型,您可能需要在 3ds max 或 blender 中重新计算法线。之后不要忘记删除 defaultCullFace 行。

最后,显然,确保加载了正确的纹理并且不要使用高模。

关于java - libgdx 的模型纹理错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17606888/

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