0

我想使用点选择器在点云中选择(获取)我的点的坐标。这就是为什么我想设置QPickingSettingsPointPicking但似乎无法做到。发送到方法的事件mouse_event是 typeQPickEvent和 NOT QPickPointEvent。我究竟做错了什么?

self.picker = Qt3DRender.QObjectPicker(self)
picking_settings = Qt3DRender.QPickingSettings(self.picker)
picking_settings.setFaceOrientationPickingMode(
    Qt3DRender.QPickingSettings.FrontAndBackFace)  
# set QObjectPicker to PointPicking:
picking_settings.setPickMethod(
    Qt3DRender.QPickingSettings.PointPicking)
picking_settings.setPickResultMode(
    Qt3DRender.QPickingSettings.NearestPick)
picking_settings.setWorldSpaceTolerance(.5)

self.picker.setHoverEnabled(True)
self.picker.setDragEnabled(True)

def mouse_event(e):
    # do something
    # e should be QPickPointEvent type
    pass

self.picker.moved.connect(mouse_event)
self.picker.pressed.connect(mouse_event)
self.picker.clicked.connect(mouse_event)
self.picker.released.connect(mouse_event)
self.addComponent(self.picker)
4

1 回答 1

1

我不熟悉 python API,但您不应该创建自己的 QPickingSettings 实例,而是使用作为QRenderSettings实例的属性存在的实例(即单例)。

如果您使用Qt3DExtras中的 Qt3DWindow,它将提供对 QRenderSettings 实例的访问器。

否则,您需要创建 QRenderSettings 的实例并将其添加为实体的组件。按照惯例,我们倾向于使用场景图的根。

于 2018-04-20T15:03:44.000 回答