6

我想使用 Z 坐标在 3D 中渲染粒子效果。我尝试使用贴花而不是 Sprite 来实现自己的 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();

对于透视效果,您还必须使用透视投影。处理此要求的最简单方法是使用 PerspectiveCamera 而不是 OrthographicCamera。

于 2012-06-10T16:30:20.997 回答