我正在尝试Scenekit,当我尝试在半透明对象后面渲染粒子时遇到了问题。在场景中的其他对象时,它们不会呈现。是否有可能在场景套件中的半透明物体后面渲染粒子?
在此画面中的所有颗粒都在半透明框的前面,不显示是后面的所有粒子。您可以看到球体被正确显示,被覆盖部分的颜色被削弱。我期望粒子也是如此,但是也许框架的渲染选择使粒子系统高效使这种行为正常?
我试图谷歌/ stackoverflow它,但它似乎scenekit是不是一个很好的覆盖主题。
我正在尝试Scenekit,当我尝试在半透明对象后面渲染粒子时遇到了问题。在场景中的其他对象时,它们不会呈现。是否有可能在场景套件中的半透明物体后面渲染粒子?
在此画面中的所有颗粒都在半透明框的前面,不显示是后面的所有粒子。您可以看到球体被正确显示,被覆盖部分的颜色被削弱。我期望粒子也是如此,但是也许框架的渲染选择使粒子系统高效使这种行为正常?
我试图谷歌/ stackoverflow它,但它似乎scenekit是不是一个很好的覆盖主题。
半透明度严重依赖于绘制顺序。使用alpha混合,渲染器读取帧缓冲区中的当前值,并在这些值之上混合半透明颜色。
这是什么意思是不透明物体应先绘制,半透明物体应从后向前绘制。如果在半透明对象之后绘制不透明对象,则渲染器不会混合当前颜色。
使用SceneKit,绘制顺序可以由场景节点上的renderingOrder
属性控制。
该节点的内容被绘制的顺序相对于其他 节点的顺序。
我不知道尽可能多的有关场景套件,但我知道在OpenGL绘制顺序是半透明非常重要。你能控制你是否在盒子之前或之后画出粒子?你应该首先绘制不透明的物体。 –
这是一个很好的提示...我一直在寻找它,但我认为我忽略了...我不能改变粒子渲染顺序,但似乎我可以改变粒子发射器渲染顺序...将尝试它出。 – Xav
只是一个快速的谷歌显示,你可以控制场景图的绘制顺序。 “父母在呈现其子女之前绘制其内容。” “孩子们按照他们出现在孩子数组中的顺序呈现。” –