代码之家  ›  专栏  ›  技术社区  ›  Matphy

Qt3D中的QObjectPicker和设置点拾取不起作用

  •  0
  • Matphy  · 技术社区  · 8 年前

    我想使用点选择器在点云中拾取(获取)我的点的坐标。这就是为什么我要设置 QPickingSettings PointPicking 但这似乎无法做到。发送到方法的事件 mouse_event 属于类型 QPickEvent 而不是 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)
    
    1 回复  |  直到 8 年前
        1
  •  1
  •   mkrus    8 年前

    我不熟悉python API,但您不应该创建自己的QPickingSettings实例,而应该使用作为 QRenderSettings (这是一个独生子女)。

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

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