Qt3D:带有多相机控制器的多视图
Qt3D : MultiView with MultiCamera Controller
我正在使用 QML MultiViewport 示例。
我想对 cam1 使用 OrbitCameraController
,对 cam2 使用 FirstPersonCameraController
。
问题是无论我移动鼠标,两个摄像头都会移动。
当我从视口 1 移动鼠标并从视口 2 移动 FirstPersonCameraController
时,如何使 OrbitCameraController
移动?
我最终使用 QObjectPicker 管理相机更改(实现是 cpp,但 QML 的想法是相同的)
auto picker = new Qt3DRender::QObjectPicker(rootNode);
QObject::connect(picker, &Qt3DRender::QObjectPicker::pressed, [&](Qt3DRender::QPickEvent* pick) {
if (pick->viewport() == viewport1)
{
orbitCameraController->setEnabled(true);
firstPersonCameraController->setEnabled(false);
}
else if (pick->viewport() == viewport2)
{
orbitCameraController->setEnabled(false);
firstPersonCameraController->setEnabled(true);
}
});
rootNode->addComponent(picker);
我正在使用 QML MultiViewport 示例。
我想对 cam1 使用 OrbitCameraController
,对 cam2 使用 FirstPersonCameraController
。
问题是无论我移动鼠标,两个摄像头都会移动。
当我从视口 1 移动鼠标并从视口 2 移动 FirstPersonCameraController
时,如何使 OrbitCameraController
移动?
我最终使用 QObjectPicker 管理相机更改(实现是 cpp,但 QML 的想法是相同的)
auto picker = new Qt3DRender::QObjectPicker(rootNode);
QObject::connect(picker, &Qt3DRender::QObjectPicker::pressed, [&](Qt3DRender::QPickEvent* pick) {
if (pick->viewport() == viewport1)
{
orbitCameraController->setEnabled(true);
firstPersonCameraController->setEnabled(false);
}
else if (pick->viewport() == viewport2)
{
orbitCameraController->setEnabled(false);
firstPersonCameraController->setEnabled(true);
}
});
rootNode->addComponent(picker);