2

Blenderからエクスポートした球の周りに単一のテクスチャをマッピングしようとしています。モデルはBlenderで見栄えがしましたが、Androidアプリケーションで使用すると、球全体ではなく、ほぼすべての顔にテクスチャがマッピングされているように見えます。何か案は?AndroidでlibGDXを使用しています。

セットアップコード:

    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);
        }
    }

編集:これが私の問題を示すスクリーンショットです: ここに画像の説明を入力してください

4

1 に答える 1

1

私はこの問題を理解することになりました。私はこのリンクに従ってBlenderでモデルを再作成しました. モデルを .obj としてエクスポートしただけで、テクスチャが球全体にマップされるようになりました。

于 2012-12-04T00:58:30.010 に答える