我正在处理有关qt3d的一些代码。我创建了一个Qt3DWindow(命名视图)。
尝试在其中添加一个根实体(名为rootEntity)。
像这样放置一个立方体实体:
m_cubeEntity = new Qt3DCore::QEntity;
...
Qt3DExtras::QCuboidMesh *cubeMesh = new Qt3DExtras::QCuboidMesh;
Qt3DRender::QMaterial *cubeMaterial = new Qt3DRender::QMaterial;
Qt3DCore::QTransform *cubeTransform = new Qt3DCore::QTransform;
Qt3DRender::QObjectPicker *objectPicker = new Qt3DRender::QObjectPicker;
...
m_cubeEntity.addComponent(cubeMesh);
m_cubeEntity.addComponent(cubeMaterial);
m_cubeEntity.addComponent(cubeTransform);
m_cubeEntity.adComponent(objectPicker);
m_cubeEntity.setParent(m_rootEntity);
一切正常。
然后我发现使用PickingSettings.BoundingVolumePicking选择我的多维数据集实体是不准确的。我想要PickingSettings.TrianglePicking。 ================================================== ================= /
所以我就这样:
m_renderSettings = new Qt3DRender::QRenderSettings();
m_renderSettings->pickingSettings()->setPickMethod(Qt3DRender::QPickingSettings::TrianglePicking);
m_renderSettings->pickingSettings()->setPickResultMode(Qt3DRender::QPickingSettings::AllPicks);
m_renderer = new Qt3DExtras::QForwardRenderer();
m_renderer->setClearColor(Qt::lightGray);
m_renderSettings->setActiveFrameGraph(m_renderer);
m_rootEntity->addComponent(m_renderSettings);
但是现在什么也没有呈现。如果我从rootEntity删除“ m_renderSettings”,一切都会正确。
如何为根实体正确设置渲染设置?
答案 0 :(得分:2)
很可能您只是设置了错误的框架。您可以使用dumpObjectTree()
轻松显示标准框架图,这在调试Qt3D框架图时非常有用。
对于您的简单用例,只需使用renderSettings
的{{1}}中已经包含的activeFrameGraph()
。
只需尝试以下简单的应用,其中包含您想要的Qt3DWindow
。
QObjectPicker