我想要做的是在Three.js中獲取從ColladaLoader獲得的場景的中心(因爲加載的模型是場景),然後將其設置爲Camera的目標。Three.js獲取場景的中心
-1
A
回答
2
@ gaitat的解決方案將工作,只要模型的起源只是恰巧也是其中心,但我不認爲這很可能是這種情況。模型的原點可能是左下角,或頂層平面的中間,或與模型「中心」無關的任何其他點。
要獲得模型的「中心」,您需要從幾何中計算出它的中心。幸運的是,THREE.Geometry有一些方便的方法來幫助解決這個問題。您可以計算幾何圖形的「邊界球」,即適合所有幾何圖形點的最小可能球面。該邊界球體的中心將是整個幾何體的「中心」。
var mesh; // this should be your model's mesh
// it might be buried inside the DAE object somewhere
mesh.geometry.computeBoundingSphere(); // this isn't calculated automatically
// you need to call it
mesh.geometry.boundingSphere.center; // THREE.Vector3 which is the center of the sphere
我不確定您是否需要計算所生成的boundingSphere.center的世界矩陣轉換,但這是一個開始。
請記住,幾何圖形的邊界球不考慮點的分佈。幾何體中距離其他幾何體非常遠的單個孤立點將拋出邊界球體的中心,因爲它需要移動以包含該點。儘管如此,邊界球方法是最快和最簡單的方法,並且應該在大多數情況下工作。
0
您可以使用camera.lookAt(scene.position);
相關問題
- 1. 在three.js場景中動態獲取對象位置
- 2. 如何獲取GridPane中Rectangle的屏幕/場景中心x,y?
- 3. ExtJS面板中的Three.js場景
- 4. Three.js - 訪問場景中的子對象
- 5. Three.js場景背景不出現
- 6. Three.js:在場景中間顯示對象
- 7. 如何在Three.js中拖動場景
- 8. 有角度的畫布(Three.js)場景
- 9. 我的three.js場景沒有燈光
- 10. three.js-Uncaught ReferenceError:場景未定義
- 11. 將THREE.js場景轉換爲CANNON.js世界
- 12. Three.js按名稱訪問場景
- 13. 使用矩陣變換Three.js場景圖
- 14. Threejs:WebGL 3D文本到three.js海洋場景
- 15. three.js如何將場景放入表格
- 16. 將場景渲染爲紋理Three.js
- 17. 如何加載collada場景(使用three.js)?
- 18. three.js所場景劇烈晃動
- 19. VTK場景的旋轉中心
- 20. 在場景中無法獲取object3D
- 21. JavaFX從控制器中獲取場景
- 22. 點擊說明這個場景的圖像後,顯示一個three.js場景
- 23. 獲取新場景的兒童
- 24. 如何在舞臺中更換場景後獲取正確的場景位置?
- 25. 如何在three.js中與場景中的對象進行交互?
- 26. 如何從three.js中刪除場景中的所有Mesh對象?
- 27. three.js所:從三維視角場景轉換到2D正交HUD場景
- 28. 提高three.js場景中的燈光效果
- 29. Three.js |將matrixAutoUpdate = false應用於場景中的所有網格
- 30. Three.js一個場景中的多個紋理和圖像
謝謝,但我知道這一點。重點是Dae場景包含多個網格。那麼如何計算中心呢? –
@ Artus90那麼爲什麼不找到所有相關網格的邊界球,然後將它們平均到一起?如果這不是你想要的,那麼你需要更具體地說明你的場景的「中心」是什麼意思。 – jered
在現場,大約有1000個網格,它們一起構建一個建築物。我在論壇上看到ColladaLoader將整個Three.Scene加載到返回的對象中。我想將相機置於返回場景中所有網格的中心。 –