离屏渲染器中的 Qt3D 透明度

Qt3D transparency in offscreen renderer

我将 Qt3D 与 offscreen renderer and modified the framegraph to include a background image, like here 的组合结合使用。

不幸的是,使用 QPhongAlphaMaterial 为绘制在背景图像上的对象添加透明度效果并不理想。

这是结果:

你在这里看不到的是整个圆圈部分实际上是透明的,即渲染器为整个像素写了对象的透明度值,而不是将它透明地添加到背景之上。

这是没有透明度的渲染对象的样子:

这是背景:

framegraph有两个分支:一个是背景图,先处理,一个是物体。我为对象添加了一个 QRenderStateSet,其中包含一个 QBlendEquation,混合函数设置为添加,一个 QBlendEquationArguments,源 RGB 和 alpha 设置为 1,目标 RGB 和 alpha 设置为 1减去源 alpha。

有解决此问题的想法吗?

(对于任何想知道的人,我从 T-Less dataset 中获取图像并编写了一个程序来创建用于 6D 姿势估计的地面实况数据)

类似,渲染的纹理格式需要设置为RGB8_UNorm而不是RGBA8_UNorm,即没有alpha通道。