qt - 屏幕外渲染器中的 Qt3D 透明度
问题描述
我将 Qt3D 与此屏幕外渲染器组合使用,并修改了框架图以包含背景图像,如此处。
不幸的是,使用 only 为在背景图像上绘制的对象添加透明度QPhongAlphaMaterial
不能令人满意。
这是结果:
在这里你看不到的是整个圆圈部分实际上是透明的,即渲染器为整个像素写入了对象的透明度值,而不是透明地添加到背景之上。
这是渲染对象在没有透明度的情况下的样子:
这是背景:
框架图有两个分支:一个用于首先处理的背景图像,一个用于对象。我QRenderStateSet
为包含QBlendEquation
混合函数设置为添加的对象添加了一个QBlendEquationArguments
,源 RGB 和 alpha 设置为 1,目标 RGB 和 alpha 设置为 1 减去源 alpha。
任何想法如何解决这个问题?
(对于任何想知道的人,我从T-Less 数据集中获取图像并编写了一个程序来创建用于 6D 姿态估计的真实数据)
解决方案
与此问题类似,需要将要渲染的纹理格式设置为RGB8_UNorm
and not RGBA8_UNorm
,即没有 alpha 通道。
推荐阅读
- android - 运行 react-native run-android 时的一些问题
- react-native - 输入符号后,redux-form 的 React-native Input HOC 失去焦点
- jquery - 有没有办法用里面替换部分文本
?
- c++11 - 将 constexpr const 指针指向嵌入式应用程序的易失性内存位置的现代 C++ 方法是什么?
- c# - 从子类中获取元素名称
- c# - 使用 .NET SDK 的 Dropbox API 应用程序身份验证
- c# - Microsoft.Toolkit.Wpf.UI.Controls.WebView 运行时错误
- c - 上下文保存——如何读取 C 中的段寄存器和指令指针?
- python - 查找每周重复发生的事件
- mobile - 是否可以基于 AppSheet 中的键列嵌套值?