如何使用 Qt3D 在网格中制作透明线?

Posted

技术标签:

【中文标题】如何使用 Qt3D 在网格中制作透明线?【英文标题】:How to make transparent lines in a mesh using Qt3D? 【发布时间】:2021-04-16 14:52:13 【问题描述】:

我正在使用 Qt3D 来绘制线条,并使用 QPerVertexColorMaterial 方法来提高效率(代码示例请参见此处:How to optimize point cloud rendering in Qt3D)。

我为颜色属性 (rgba) 定义了 4 个顶点的大小,因为我想修改特定行的透明度。但是修改 alpha 值似乎对显示没有影响。

是否可以使用 Qt3D 中的 QPerVertexColorMaterial 实现来做到这一点?

【问题讨论】:

【参考方案1】:

虽然您可以为顶点提供具有适当 alpha 值的颜色属性,但 QPerVertexColorMaterial 本身并没有实现 alpha 混合。 查看qt/qt3d/src/extras/defaults/qphongalphamaterial.cpp 下的QPhongAlphaMaterial,了解处理透明度需要什么。

【讨论】:

所以你确认不能用 QPerVertexColorMaterial 处理透明度,我需要创建一个特定的材料来做到这一点? 没错,就是这个意思。 感谢您的帮助。我很惊讶地发现关于这种需求的信息如此之少。我觉得这是一个非常基本的功能,想知道 Qt3d 用户通常如何解决它。当然,我们可以逐个实体地管理透明度,但这样做时,我注意到显示速度大大降低。

以上是关于如何使用 Qt3D 在网格中制作透明线?的主要内容,如果未能解决你的问题,请参考以下文章

在 HTML5 画布中绘制鼠标移动的半透明线

使用 qt3d 渲染已经加载的网格

Qt3D:“网格是空的,没有可加载的”消息

如何在标准GUI应用程序中使用Qt3D进行渲染?

如何在 android 中使用图像制作自定义网格?

如何在 kivymd 中制作网格布局?