qt - Qt3D : MultiView 与 MultiCamera 控制器
问题描述
我正在使用 QML MultiViewport 示例。
我想OrbitCameraController
用于 cam1 和FirstPersonCameraController
cam2。问题是无论我在哪里移动鼠标,两个摄像头都会移动。
OrbitCameraController
当我从 viewport1 和 viewport2 移动鼠标时,如何移动FirstPersonCameraController
?
解决方案
我最终使用 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);
推荐阅读
- javascript - 如何在 ios 系统上监听 keydown 事件?
- javascript - 使用有效负载在输入上手动触发“更改”事件
- powerbi - 如何在 Power BI 中刷新时保存数据?
- ruby-on-rails - 使用 Active Storage 直接上传时自动将 HEIF 转换为 JPEG
- c++ - 使用 C++17 的可选且可变排序的函数参数
- linux - 我应该在哪里保存我在 Rust 中的配置文件
- testing - 文件下载超时
- javascript - Uncaught Promise Rejection SyntaxError: 位置 0 处 JSON 中的意外标记 u
- javascript - 如何在 node.js 中获取 firebase 实时数据库的子节点值?
- r - 有没有办法从 csv 文件中组合多个时间序列,以便值匹配日期