离屏渲染器中的 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通道。
我将 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通道。