我将 Qt3D 与 offscreen renderer 结合使用并修改框架图以包含背景图像,例如 here .
不幸的是,使用 QPhongAlphaMaterial
为绘制在背景图像上的对象添加透明度效果并不理想。
这是结果:
你在这里看不到的是整个圆圈部分实际上是透明的,即渲染器为整个像素写入了对象的透明度值,而不是将其透明地添加到背景之上。
这是没有透明度的渲染对象的样子:
这是背景:
框架图有两个分支:一个用于背景图像,首先处理,另一个用于对象。我为对象添加了一个 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/