20 Babylonjs入门进阶 弧形旋转相机的更多设置

限制相机距离焦点的距离

我们可以通过设置弧形旋转相机的lowerRadiusLimitupperRadiusLimit来设置相机距离焦点的距离范围。

camera.lowerRadiusLimit = 2;
camera.upperRadiusLimit = 6;

upperRadiusLimit的值不应小于lowerRadiusLimit,避免出现错误或不起作用。

反弹效果

反弹效果是弧形旋转相机达到设置的极限位置时的一个回馈效果。通过BABYLON.BouncingBehavior实例化对象实现,创建弧形旋转相机时将默认实例化一个BABYLON.BouncingBehavior类。
我们可以通过以下代码开启反弹效果:

camera.useBouncingBehavior = true;

我们还可以通过camera.bouncingBehavior对象来设置一些反弹效果的细节:

camera.bouncingBehavior.transitionDuration = 450; //回弹效果的过渡时间
camera.bouncingBehavior.lowerRadiusTransitionRange = .5; //到达最近距离时回弹的幅度距离,默认值为2
camera.bouncingBehavior.upperRadiusTransitionRange = -20; //达到最远距离时的回弹幅度距离,默认值为-2
camera.bouncingBehavior.autoTransitionRange = true; //是否开启自动定义lowerRadiusTransitionRange和upperRadiusTransitionRange值,默认值为false。过渡范围设置为世界空间中对角线框的5%

当前的配置属性定义:

  • transitionDuration:定义动画的持续时间,以毫秒为单位。默认情况下,该值设置为450毫秒
  • lowerRadiusTransitionRange:定义达到下半径时由过渡设置的动画距离的长度。默认情况下,该值设置为2
  • upperRadiusTransitionRange:定义达到上半径时由过渡设置的动画距离的长度。默认情况下,该值设置为-2
  • autoTransitionRange:定义一个值,指示是否自动定义lowerRadiusTransitionRange和upperRadiusTransitionRange。过渡范围将设置为世界空间中边界框对角线的5%

你可以在此处找到一个官方的示例。

自动旋转效果

自动旋转效果是弧形旋转相机在没有用户交互时的一种自动围绕焦点旋转的效果。通过BABYLON.AutoRotationBehavior实现。
你可以通过以下代码直接开启:

camera.useAutoRotationBehavior = true;

你也可以通过设置camera.autoRotationBehavior对象一些属性来定义自动旋转的细节:

camera.autoRotationBehavior.idleRotationSpeed = 1; //自动旋转速度
camera.autoRotationBehavior.idleRotationWaitTime = 1000; //用户交互后多少时间开启自动旋转(毫秒)
camera.autoRotationBehavior.idleRotationSpinupTime = 1000; //从开始自动旋转到设置的旋转速度所需要的时间(毫秒)
camera.autoRotationBehavior.zoomStopsAnimation = true; //设置缩放是否会停止自动旋转

自动定位功能

自动定位功可以自动定位弧形旋转相机的位置,在用户停止操作后自动返回到某个位置。比如你想防止相机处于一个虚拟的水平面,这个很有用。
你可以通过以下代码开启:

camera.useFramingBehavior = true;

你也可以通过设置camera.framingBehavior对象的属性来对定位功能进行细节调整:

  • mode:模式可以配置为:
  1. BABYLON.FramingBehavior.IgnoreBoundsSizeMode:相机可以一直朝着网格移动
  2. BABYLON.FramingBehavior.FitFrustumSidesMode:不允许摄像机比调整的边界球体接触平截头体侧面的点更接近网格
  • radiusScale:定义应用于半径的比例(默认为1)
  • positionY:从摄像机的焦点定义主网格的Y偏移(默认为0)
  • defaultElevation:定义水平面上方/下方的角度,以便在触发返回默认高程空闲行为时返回,以弧度为单位(默认为0.3)
  • elevationReturnTime:定义返回默认beta位置所用的时间(以毫秒为单位)(默认为1500)。负值表示相机不应返回默认值
  • elevationReturnWaitTime:定义相机返回默认测试版位置之前的延迟(以毫秒为单位)(默认为1000)
  • zoomStopsAnimation:定义用户缩放是否应停止动画
  • framingTime:定义网格框架时的过渡时间,以毫秒为单位(默认为1500)

你可以在此处查看官方示例

发布了402 篇原创文章 · 获赞 544 · 访问量 212万+

猜你喜欢

转载自blog.csdn.net/qq_30100043/article/details/89077258