限制相机距离焦点的距离
我们可以通过设置弧形旋转相机的lowerRadiusLimit
和upperRadiusLimit
来设置相机距离焦点的距离范围。
upperRadiusLimit
的值不应小于lowerRadiusLimit
,避免出现错误或不起作用。
反弹效果
反弹效果是弧形旋转相机达到设置的极限位置时的一个回馈效果。通过BABYLON.BouncingBehavior
实例化对象实现,创建弧形旋转相机时将默认实例化一个BABYLON.BouncingBehavior
类。
我们可以通过以下代码开启反弹效果:
我们还可以通过camera.bouncingBehavior
对象来设置一些反弹效果的细节:
当前的配置属性定义:
- transitionDuration:定义动画的持续时间,以毫秒为单位。默认情况下,该值设置为450毫秒
- lowerRadiusTransitionRange:定义达到下半径时由过渡设置的动画距离的长度。默认情况下,该值设置为2
- upperRadiusTransitionRange:定义达到上半径时由过渡设置的动画距离的长度。默认情况下,该值设置为-2
- autoTransitionRange:定义一个值,指示是否自动定义lowerRadiusTransitionRange和upperRadiusTransitionRange。过渡范围将设置为世界空间中边界框对角线的5%
你可以在此处找到一个官方的示例。
自动旋转效果
自动旋转效果是弧形旋转相机在没有用户交互时的一种自动围绕焦点旋转的效果。通过BABYLON.AutoRotationBehavior
实现。
你可以通过以下代码直接开启:
你也可以通过设置camera.autoRotationBehavior
对象一些属性来定义自动旋转的细节:
- 在这里你可以查看到官方的示例
自动定位功能
自动定位功可以自动定位弧形旋转相机的位置,在用户停止操作后自动返回到某个位置。比如你想防止相机处于一个虚拟的水平面,这个很有用。
你可以通过以下代码开启:
你也可以通过设置camera.framingBehavior
对象的属性来对定位功能进行细节调整:
- mode:模式可以配置为:
- BABYLON.FramingBehavior.IgnoreBoundsSizeMode:相机可以一直朝着网格移动
- BABYLON.FramingBehavior.FitFrustumSidesMode:不允许摄像机比调整的边界球体接触平截头体侧面的点更接近网格
- radiusScale:定义应用于半径的比例(默认为1)
- positionY:从摄像机的焦点定义主网格的Y偏移(默认为0)
- defaultElevation:定义水平面上方/下方的角度,以便在触发返回默认高程空闲行为时返回,以弧度为单位(默认为0.3)
- elevationReturnTime:定义返回默认beta位置所用的时间(以毫秒为单位)(默认为1500)。负值表示相机不应返回默认值
- elevationReturnWaitTime:定义相机返回默认测试版位置之前的延迟(以毫秒为单位)(默认为1000)
- zoomStopsAnimation:定义用户缩放是否应停止动画
- framingTime:定义网格框架时的过渡时间,以毫秒为单位(默认为1500)
你可以在此处查看官方示例