首页 > 解决方案 > 屏幕外渲染器中的 Qt3D 透明度

问题描述

我将 Qt3D 与此屏幕外渲染器组合使用,并修改了框架图以包含背景图像,如此

不幸的是,使用 only 为在背景图像上绘制的对象添加透明度QPhongAlphaMaterial不能令人满意。

这是结果:

这是结果

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

这是渲染对象在没有透明度的情况下的样子:

在此处输入图像描述

这是背景:

在此处输入图像描述

框架图有两个分支:一个用于首先处理的背景图像,一个用于对象。我QRenderStateSet为包含QBlendEquation混合函数设置为添加的对象添加了一个QBlendEquationArguments,源 RGB 和 alpha 设置为 1,目标 RGB 和 alpha 设置为 1 减去源 alpha。

任何想法如何解决这个问题?

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

标签: qttransparencyqt3d

解决方案


与此问题类似,需要将要渲染的纹理格式设置为RGB8_UNormand not RGBA8_UNorm,即没有 alpha 通道。


推荐阅读