Карта текстуры вокруг сферы OpenGL ES Android
Я пытаюсь нанести на карту одну текстуру вокруг сферы, которую я экспортировал из Blender. Модель выглядела великолепно в Blender, но когда я использую ее в своем приложении для Android, текстура отображается почти на каждом лице, а не на всей сфере. Есть идеи? Я использую libGDX на Android.
Код настройки:
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);
}
}
Изменить: Вот скриншот, демонстрирующий мою проблему:
1 ответ
Решение
В итоге я понял эту проблему. Я воссоздал свою модель в Blender по этой ссылке, которая говорит, что она устарела и не имеет скриншотов, но она мне помогла. В итоге я просто экспортировал свою модель в формате.obj, и текстура теперь отображается на всю сферу.