6

Z 座標を使用して 3D でパーティクル エフェクトをレンダリングしたいと考えています。スプライトの代わりにデカールを使用して独自の ParticleEffect を実装しようとしましたが、成功しませんでした。

Z 座標を使用して ParticleEffect をレンダリングする他の方法はありますか? たぶん、SpriteBatch の変換マトリックスを操作することによってですか?

アップデート:

作業コード

// update projection each frame since my camera is moving
spriteBatch.setProjectionMatrix(camera3d.projection);

for (ParticleEffect effect : effects){
    spriteBatch.setTransformMatrix(camera3d.view);
    spriteBatch.getTransformMatrix().translate(x,y,z); // different for each effect
    spriteBatch.getTransformMatrix().scale(0.1f,0.1f,0.1f); //optional
    spriteBatch.begin();

    effect.draw(spriteBatch, delta);

    spriteBatch.end();
    spriteBatch.getTransformMatrix().idt();
}
4

1 に答える 1

9

3D 効果が視差効果である場合、つまりパーティクルがカメラに垂直に面している場合、実際に SpriteBatch の変換行列を設定できます。

batch.getTransformMatrix().idt().translate(0, 0, z);
batch.begin();
... do your rendering here
batch.end();
// reset the matrix, so you can use the batch for other stuff
batch.idt();

遠近効果を得るには、遠近投影も使用する必要があります。この要件に対処する最も簡単な方法は、OrthographicCamera の代わりに PerspectiveCamera を使用することです。

于 2012-06-10T16:30:20.997 に答える