【问题标题】:QObjectPicker works strange with QCuboidMeshQObjectPicker 与 QCuboidMesh 一起工作很奇怪
【发布时间】:2023-01-26 14:21:09
【问题描述】:

我有 Qt6.2.4。即使我用鼠标靠近实体单击,QObjectPicker 也会选择实体。

为了测试这个案例,你可以修改basic shapes example。如果我点击图像上的红点,我会得到“选中”的长方体。为什么?

    // Cuboid shape data
    //   ... 
    Qt3DRender::QObjectPicker *cubePicker = new Qt3DRender::QObjectPicker(cuboid);
    connect(cubePicker, &Qt3DRender::QObjectPicker::pressed, this, [] (Qt3DRender::QPickEvent *pick) {
         qDebug() << "pick = " << pick->worldIntersection() << ", " << pick->entity()->objectName();
    });
    
   //Cuboid
   {
        // ...
        m_cuboidEntity->addComponent(cubePicker);
        m_cuboidEntity->setObjectName("Cuboid 1");
   }

输出:

pick =  QVector3D(4.56187, -0.592511, 0.443995) ,  "Cuboid 1"

【问题讨论】:

    标签: c++ qt qt3d


    【解决方案1】:

    Qt3D窗口有渲染设置。它包含QPickingSettings,其中有 pickMethod()。默认情况下,它使用边界球体积拾取(PickingSettings.BoundingVolumePicking).你应该选择PickingSettings.TrianglePicking.这是解决方案。

    Qt3DRender::QPickingSettings *pikingSettings = view->renderSettings()->pickingSettings();
    pikingSettings->setPickMethod(Qt3DRender::QPickingSettings::TrianglePicking);
    

    【讨论】:

      猜你喜欢
      • 2019-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-15
      • 2014-12-27
      • 2011-05-07
      相关资源
      最近更新 更多