映射球体周围的纹理OpenGL ES Android
我正试图在从Blender导出的球体周围映射单个纹理。该模型在Blender中看起来很棒,但当我在Android应用程序中使用它时,纹理似乎映射到了几乎每一张脸,而不是整个球体。有什么想法吗?我正在Android上使用libGDX 设置代码:映射球体周围的纹理OpenGL ES Android,android,opengl-es,libgdx,blender,texture-mapping,Android,Opengl Es,Libgdx,Blender,Texture Mapping,我正试图在从Blender导出的球体周围映射单个纹理。该模型在Blender中看起来很棒,但当我在Android应用程序中使用它时,纹理似乎映射到了几乎每一张脸,而不是整个球体。有什么想法吗?我正在Android上使用libGDX 设置代码: model = G3dtLoader.loadStillModel(Gdx.files.internal("models/planet.g3dt"), true); for(StillSubMesh mesh: model.subMesh
model = G3dtLoader.loadStillModel(Gdx.files.internal("models/planet.g3dt"), true);
for(StillSubMesh mesh: model.subMeshes) {
mesh.mesh.scale(0.1f, 0.1f, 0.1f);
}
G3dExporter.export(model, Gdx.files.local("models/planet.g3d"));
model = G3dLoader.loadStillModel(Gdx.files.local("models/planet.g3d"));
texture = new Texture(Gdx.files.internal("textures/planet1_pot.png"), true);
bounds = new BoundingBox();
model.getBoundingBox(bounds);
float len = bounds.getDimensions().len();
cam = new PerspectiveCamera(60, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
cam.position.set(bounds.getCenter().cpy().add(len / 2, len / 2, len / 2));
cam.lookAt(bounds.getCenter().x, bounds.getCenter().y, bounds.getCenter().z);
cam.near = 0.1f;
cam.far = 1000;
renderer = new ImmediateModeRenderer10();
渲染代码:
@Override
public void renderScreen(float delta) {
Gdx.gl.glClearColor(0, 0, 0, 1.0f);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
Gdx.gl.glEnable(GL10.GL_DEPTH_TEST);
cam.update();
cam.apply(Gdx.gl10);
if(texture != null) {
Gdx.gl.glActiveTexture(GL10.GL_TEXTURE);
Gdx.gl.glEnable(GL10.GL_TEXTURE_2D);
texture.bind();
}
model.render();
if(texture != null) {
Gdx.gl.glActiveTexture(GL10.GL_TEXTURE);
Gdx.gl.glDisable(GL10.GL_TEXTURE_2D);
}
}
编辑:
下面是一个演示我的问题的屏幕截图:
我最终解决了这个问题。我在Blender following中重新创建了我的模型,上面说它已被弃用,并且缺少屏幕截图,但它帮助了我。我最终只是将我的模型导出为.obj,纹理现在映射到整个球体。可能会发布一张糟糕渲染的图片吗?恐怕唯一可能导致这样问题的是坏模型或坏模型加载程序。我在blender模型导出方面没有很好的记录(它们通常在某种程度上对我来说是坏的),所以也许可以检查一下您的模型以确保它正确导出?只要不是二进制文件,也可以在你的帖子中添加模型源代码。@Tim我添加了我问题的屏幕截图。我有点想,这是一个问题,从搅拌机出口(我不是专家,以任何方式搅拌机哈哈),所以也许这就是它。我可能会尝试在代码中手动创建一个球体,看看是否能够以这种方式正确渲染它。