2017-02-18 76 views
4

我想限制攝像機位置移動到由3D對象/對象兒童定義的特定區域。例如,如果我在海洋上有人行道物體,並且只希望我的用戶能夠在該人行道上向前和向後移動相機。類似於Unity中的第一人稱控制器導航網格,但沒有AI方面。限制攝像機位置移動到特定3D對象的區域

我很喜歡基於AFrame的解決方案,但如果有三種js解決方案,我不介意編寫自定義組件。

謝謝!通過

+0

在舊時代,有一位叫* PathControls *是實現此功能的公平位three.js所組成。請參閱http://stackoverflow.com/questions/23443110/how-to-move-camera-along-a-simple-path。該組件不再可用。 –

回答

3

您可以創建一個THREE.Box3來獲得3D對象的邊界/對象兒童:

var box = new THREE.Box3(); 
box.setFromObject(yourObject); 

裏面的第一人稱控制器,你可以檢查相機是否出界:

if(camera.position.x > box.max.x){ 
    camera.position.x = box.max.x; 
} 

if(camera.position.x < box.min.x){ 
    camera.position.x = box.max.x; 
} 

if(camera.position.z > box.max.z){ 
    camera.position.z = box.max.z; 
} 

if(camera.position.z < box.min.z){ 
    camera.position.z = box.max.z; 
} 

我希望這將是有益的

+0

這就是我最終這樣做的結果。這適用於像盒子這樣的簡單形狀,但如果我們有一個自定義形狀,它會更加困難。 – cnzac

+0

我對複雜的形狀有一個建議。我曾經使用它:創建一個高度圖。 B&W中的位圖表示有限制的位置 – Tlatis