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)

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章