7
スプライトのバッチをレンダリングするためにパースペクティブカメラを使用できますか?libGDXのPerspectiveCameraを使用してSpriteBatchをレンダリングできますか?
私のスプライト(同じテクスチャを搭載しているもの)は同じサイズに見えますが、カメラの高さを画面の下側に配置したいので、画面の上部近くに配置されているスプライトが小さく見えます。右のように見えますが、右のようにしてください:
スプライトのバッチをレンダリングするためにパースペクティブカメラを使用できますか?libGDXのPerspectiveCameraを使用してSpriteBatchをレンダリングできますか?
私のスプライト(同じテクスチャを搭載しているもの)は同じサイズに見えますが、カメラの高さを画面の下側に配置したいので、画面の上部近くに配置されているスプライトが小さく見えます。右のように見えますが、右のようにしてください:
はい、座標を少し調整する必要がありますが(spriteBatch.setTransformMatrix 1回の呼び出しでこれを行う)。小さな例があります:
public class SpriteBatch3DTest extends GdxTest {
PerspectiveCamera cam;
CameraInputController camController;
SpriteBatch spriteBatch;
Texture texture;
@Override
public void create() {
cam = new PerspectiveCamera(67, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
cam.position.set(0f, 8f, 8f);
cam.lookAt(0,0,0);
cam.near = 0.1f;
cam.far = 300f;
cam.update();
spriteBatch = new SpriteBatch();
camController = new CameraInputController(cam);
Gdx.input.setInputProcessor(camController);
texture = new Texture(Gdx.files.internal("data/badlogic.jpg"));
}
@Override
public void render() {
camController.update();
spriteBatch.setProjectionMatrix(cam.combined);
Gdx.gl.glViewport(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
spriteBatch.begin();
spriteBatch.draw(texture, -5f, -5f, 10f, 10f);
spriteBatch.end();
}
@Override
public void dispose() {
spriteBatch.dispose();
texture.dispose();
}
public boolean needsGL20() {
return true;
}
public void resume() {
}
public void resize (int width, int height) {
}
public void pause() {
}
}
ありがとうございます。しかし、私の円形スプライトは、円滑に見えるのに、円周上にギザギザが見えましたか?また私がここから使用していた私のタッチパッドhttp://www.bigerstaff.com/libgdx-touchpad-example/が表示されますが、私はそれを使用することはできません、私はノブの動きを意味しないので、私はそれから任意の入力を取得しないでください –
なぜこのパースペクティブカメラはステージ上の俳優であるタッチパッドを変えないのですか?私は通常のオブジェクトとtouchapdのために同じSpriteBatchを使用しますが、通常のオブジェクトは好きなように見えます –
デフォルトでステージはOthographicCameraを使用していますが、stage.setCamera(...);を使用してカメラを変更できます。また、stageはcamera.unprojectを使用して、画面をステージ座標に変換します。この座標では、z = 0とみなされます。これはうまくいかないかもしれませんので、おそらくStageを拡張してscreenToStageCoordinatesをオーバーライドする必要があります。より良い(滑らかな)レンダーを得るには、テクスチャのminFilter/magFilterを変更してみてください。私はそれがデフォルトで最も近いと信じて、それをリニアに設定してみてください。 Tl; dr Stageは、PerspectiveCameraでの使用のために設計されていないため、私はそれをお勧めしません。 – Xoppa