c++ - 缩放 Qt3D 的相机

标签 c++ qt qml pinchzoom qt3d

如何为 Qt3D Camera 的 FOV 实现双指捏合手势处理?

FirstPersonCameraControllerOrbitCameraController 相机 Controller 来处理鼠标/触摸板事件。后者甚至有 zoomLimit 属性,但它的意思不是我需要缩放场景(从立方体贴图中,相机位置固定为 (0, 0, 0) ).我用的是前者。它可以正确处理鼠标拖动和单指触摸事件,但不能处理类似双指捏合的手势。

我能否以简单的方式自定义 PinchArea 以与 Qt3DCamera 交互?或者 Qt Quick 的 API 在这个意义上与 Qt3D 的 API 正交?

最佳答案

使用 PinchArea 的 pinchUpdated 事件查找有关 Pinch 的信息:根据文档

The pinch parameter provides information about the pinch gesture, including the scale, center and angle of the pinch. These values reflect changes only since the beginning of the current gesture, and therefore are not limited by the minimum and maximum limits in the pinch property.

所以你应该能够做这样的事情:

Camera {
    id: myCamera
}

PinchArea {
    onPinchUpdated: {
        myCamera.fieldOfView = pinch.scale*someFactor
    } 
}

这可以在您拥有的任何可以访问 Pinch 和 Camera 的自定义 QML 中完成。 如果它是自定义脚本,您可以将相机作为属性传递

property Camera myCamera

关于c++ - 缩放 Qt3D 的相机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46928812/

相关文章:

c++ - 使用 l+(r-l)/2 避免溢出

c++ - Qt 单个应用程序文件打开

c++ - 使用 QtUdpSocket 的简单通信 c/s 应用程序

QML 文件包括 - 还是一个整体文件(结构 QML 代码)?

c++ - 是否可以在 C++ 中动态填充 char* 数组

c++ - Char* 输入检查它是十六进制还是十进制,并使用适当的错误处理和报告将其解析为无符号短整型

c++ - 如何让视频中的所有帧都变成 i 帧?

qt - 如何将 QLineEdit 添加到菜单栏

c++ - QML textInput 元素中的自动完成和建议

android - 应用程序在 android qtquick 中单击后退按钮时退出