JavaFX 3D 手势交互与 Leap Motion 控制器应用
1. JavaFX 3D 场景中的触摸、旋转和缩放
在操作 3D 场景时,旋转和缩放是最常见的交互方式,主要用于移动和改变对象或相机的方向。将手势支持集成到 3D 应用程序中,是对传统鼠标和键盘操作的自然增强。JavaFX 的 Shape3D 对象,无论是基本图形还是自定义三角网格,默认都支持所有手势事件,如旋转和缩放。
为了演示如何在 JavaFX 3D 场景中使用手势事件,我们以一个三角网格示例为例,添加触摸静止、旋转和缩放手势事件。
1.1 基础三角网格示例
创建四个金字塔三角网格对象,每个对象添加到 MeshView 容器中以使其可见。每个 MeshView 容器添加到 Group 节点,然后将 Group 节点添加到 3D 场景图中。
1.2 添加旋转手势事件
我们希望通过为每个金字塔添加旋转手势事件来增强场景。用户应该能够触摸金字塔,然后使用旋转手势绕 z 轴旋转它。为了实现这一点,我们需要添加旋转手势的事件处理程序。
首先,我们需要确定要旋转的屏幕对象。如果在多点触摸模式下,我们需要先添加 OnTouchStationary 事件处理程序。OnTouchStationary 事件表示发生了一次触摸并保持在同一相对位置,这与 OnTouchPressed 和 OnTouchMoved 事件不同,后两者在设备上发生任何触摸时立即触发,无论是否是移动手势的一部分。
以下是选择活动节点的事件处理程序:
scene.setOn