默认 Qt3D OrbitCameraController 的行为是: - 鼠标左键移动相机。- 鼠标右键旋转相机。
我需要相反的解决方案,简单地旋转显示产品模型。C++ 代码或 AxisActionHandler 可能有效,但我不知道如何编写它。感谢帮助。
默认 Qt3D OrbitCameraController 的行为是: - 鼠标左键移动相机。- 鼠标右键旋转相机。
我需要相反的解决方案,简单地旋转显示产品模型。C++ 代码或 AxisActionHandler 可能有效,但我不知道如何编写它。感谢帮助。
在尝试了不同的解决方案后,我使用 MouseHandler 完成了这项任务。核心代码如下:
Entity{
id: root
property Camera camera;
MouseDevice {
id: mouseDevice
}
MouseHandler {
property point _lastPt; // 鼠标最后的位置
property real _pan; // 相机沿y轴旋转角度
property real _tilt; // 相机沿x轴旋转角度
on_PanChanged: root.camera.panAboutViewCenter(_pan);
on_TiltChanged: root.camera.tiltAboutViewCenter(_tilt);
sourceDevice: mouseDevice
onPressed: {_lastPt = Qt.point(mouse.x, mouse.y);}
onPositionChanged: mouseMove(mouse);
...
function mouseMove(mouse){
if (mouse.buttons == 1){
_pan = -(mouse.x - _lastPt.x);
_tilt = (mouse.y - _lastPt.y);
_lastPt = Qt.point(mouse.x, mouse.y);
}
}
}
}