Qt Widget点击2D pos到3D世界坐标

Qt Widget click 2D pos to 3D world coordinate

我的 Qt 小部件显示 3D 世界。

我有3D世界的Qt3DRender::QCamera

如何使用Qcamera将widget中的鼠标位置转换为3D世界坐标?

我尝试使用 point * .viewMatrix4x4().transposed().inverted() 但它是错误的。

您不能简单地将 2D 点击转换为 3D 坐标,只能转换为 3D 矢量,即方向矢量。只有在鼠标下方有物体时,才能获得 3D 坐标。

此时可以使用QObjectPicker获取坐标

这样做的步骤是:

  1. 在场景层次结构中创建对象选择器(最好将其创建为要选择的对象的子对象,但我不确定是否有必要)
  2. 将对象选取器作为组件附加到您要选取的对象
  3. 将您单击对象时触发的对象选择器信号连接到您提供坐标的函数

您还可以查看 manual Qt3D test on GitHub。它在 QML 中,但你应该能够将它翻译成 C++(如果你正在用它编程)。