离屏渲染器中的 Qt3D 透明度

标签 qt transparency qt3d

我将 Qt3D 与 offscreen renderer 结合使用并修改框架图以包含背景图像,例如 here .

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

这是结果:

this is the result

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

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

enter image description here

这是背景:

enter image description here

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

有什么办法可以解决这个问题吗?

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

最佳答案

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

关于离屏渲染器中的 Qt3D 透明度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50619082/

相关文章:

c++ - QTextEdit 中不可编辑的文本

c++ - QMessageLogger : Singleton for a Logger?

c++ - 如何将 QImage 从 C++ 发送到 Qt3D 实体到 QML 以将其用作纹理?

qt - Qt3D中网格尺寸变化时如何保持纹理纵横比

python - QGraphicsView 自动放置元素

c++ - Qt Creator找不到丢失的库

ios - ABPeoplePickerNavigationController透明顶栏

css - 边框内有透明间隙的 Div

qt - QML 3D - 更改在 UI 中呈现的模型的大小(扩大/缩小)以适应当前窗口