Blender 模型在 libGDX 中渲染不正确
Blender Model is incorrectly rendered in libGDX
我在 libGdx 中渲染模型时遇到问题。
我在搅拌机中创建了一个简单的汽车模型,但是当我在 libGdx 中渲染它时,它渲染不正确。
这是它在搅拌机中的样子(它应该是这样的):
这是 libGdx 中的样子:
如你所见,轮子都指向错误的方向,这没有意义,因为我根本没有转动它们。
模型中只有 1 个对象时有效,但当我添加更多对象(例如轮子)时,就会发生这种情况。
这是我的 create() 方法:
public void create () {
camera=new PerspectiveCamera(67,800,480);
camera.position.set(0f, 0f, 20f);
camera.lookAt(0f, 0f, 0f);
camera.near=1f;
camera.far=100f;
batch=new ModelBatch();
builder=new ModelBuilder();
UBJsonReader jsonreader=new UBJsonReader();
G3dModelLoader modelloader=new G3dModelLoader(jsonreader);
cubemodel=modelloader.loadModel(Gdx.files.getFileHandle("carmodel.g3db", Files.FileType.Internal));
cube=new ModelInstance(cubemodel,0,0,0);
environment=new Environment();
environment.set(new ColorAttribute(ColorAttribute.AmbientLight,0.65f,0.65f,0.65f,1f));
}
这是我的 render() 方法:
public void render () {
Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);
Gdx.gl20.glEnable(GL20.GL_DEPTH_TEST);
camera.update();
batch.begin(camera);
batch.render(cube, environment);
batch.end();
camera.rotateAround(new Vector3(0f, 0f, 0f), new Vector3(0f, 1f, 0f), 0.5f);
}
这是我的模型:
carmodel.g3db
如果您还需要什么,尽管问,我会post。
提前致谢!
我已经有一段时间没有使用 Blender 了,但这些是我在 LibGDX 中用来使模型方向匹配的设置。这样设置后,如果您的 LibGDX 相机使用与 Blender 相机相同的方向和位置,场景将是相同的。
- 正常创建模型。保存 Blender 文件。
- 将每个模型围绕其中心围绕 +X 轴旋转 90 度并应用变换。
- 导出模型 -Z 向前和 Y 向上。
- 不要保存 Blender 文件,因为您可能想进一步更改原始方向的模型。
我在 libGdx 中渲染模型时遇到问题。
我在搅拌机中创建了一个简单的汽车模型,但是当我在 libGdx 中渲染它时,它渲染不正确。
这是它在搅拌机中的样子(它应该是这样的):
这是 libGdx 中的样子:
如你所见,轮子都指向错误的方向,这没有意义,因为我根本没有转动它们。
模型中只有 1 个对象时有效,但当我添加更多对象(例如轮子)时,就会发生这种情况。
这是我的 create() 方法:
public void create () {
camera=new PerspectiveCamera(67,800,480);
camera.position.set(0f, 0f, 20f);
camera.lookAt(0f, 0f, 0f);
camera.near=1f;
camera.far=100f;
batch=new ModelBatch();
builder=new ModelBuilder();
UBJsonReader jsonreader=new UBJsonReader();
G3dModelLoader modelloader=new G3dModelLoader(jsonreader);
cubemodel=modelloader.loadModel(Gdx.files.getFileHandle("carmodel.g3db", Files.FileType.Internal));
cube=new ModelInstance(cubemodel,0,0,0);
environment=new Environment();
environment.set(new ColorAttribute(ColorAttribute.AmbientLight,0.65f,0.65f,0.65f,1f));
}
这是我的 render() 方法:
public void render () {
Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);
Gdx.gl20.glEnable(GL20.GL_DEPTH_TEST);
camera.update();
batch.begin(camera);
batch.render(cube, environment);
batch.end();
camera.rotateAround(new Vector3(0f, 0f, 0f), new Vector3(0f, 1f, 0f), 0.5f);
}
这是我的模型: carmodel.g3db
如果您还需要什么,尽管问,我会post。
提前致谢!
我已经有一段时间没有使用 Blender 了,但这些是我在 LibGDX 中用来使模型方向匹配的设置。这样设置后,如果您的 LibGDX 相机使用与 Blender 相机相同的方向和位置,场景将是相同的。
- 正常创建模型。保存 Blender 文件。
- 将每个模型围绕其中心围绕 +X 轴旋转 90 度并应用变换。
- 导出模型 -Z 向前和 Y 向上。
- 不要保存 Blender 文件,因为您可能想进一步更改原始方向的模型。