【发布时间】:2018-08-30 08:15:42
【问题描述】:
在代码中调整实体大小很容易:
self.transform = Qt3DCore.QTransform()
self.transform.setScale(1.5)
但我想动态调整实体的大小。我希望我的实体在我将相机远离它时放大或在我接近相机时缩小。是否可以使用适当的着色器来做到这一点?
【问题讨论】:
-
为什么不简单地在相机移动时这样设置比例?为什么要让它变得复杂并使用着色器?
-
在我看来,使用 GPU 比使用 CPU 更好。
-
这当然适用于计算密集型高度并行化的应用程序,例如渲染 3D 场景所需的大量矩阵乘法。根据您的程序,摄像机位置可以每秒更新 60 - 200 次 (fps)。 CPU 很容易处理这么多的调用,我假设 Qt3D 实际上可以像您想要的那样处理缩放 - 使用一个使用矩阵来缩放顶点的着色器。顺便说一句,你必须以某种方式将新的比例传递给 GPU,即你需要 CPU 来传递它 -> 使用 Qt3D 的功能保持它的一致性。
-
如果你真的 真的 真的想按照你的方式去做(虽然我会避免这样做)你需要创建自己的材质 - 效果 - 技术 - 以所需的比例渲染通道作为材质上的可设置。然后,您需要将比例传递给渲染通道并将其添加为参数。这样,您可以使用您指定的名称在自定义着色器(也在渲染过程中设置)中使用它。您可以在互联网上找到如何在 OpenGL 着色器中缩放和对象。
-
再次感谢您,@FlorianBluem。我会按照你的方式去做。
标签: python python-3.x opengl qt3d pyside2