Three.js使用OrbitControls后修改相機旋轉方向無效解決辦法
1.問題復現(xiàn)
在項目中添加了OrbitControls控制器來控制相機的旋轉和平移,但是需要修改初始的相機角度,于是我把相機的角度進行修改,如下:
const camera = new THREE.PerspectiveCamera(75, viewport.offsetWidth / viewport.offsetHeight, 0.01, 20); camera.position.set(0,1,7); //修改相機初始角度 camera.rotation.set(0,-Math.PI/2,0); const controls = new OrbitControls(camera, renderer.domElement); controls.update();
運行項目后發(fā)現(xiàn)相機的位置并沒有發(fā)生變化。原因是相機旋轉和移動被OrbitControls控制器托管了。
2.解決方法
方法1.于是我嘗試創(chuàng)建一個組,將相機加入組里,通過改變組的旋轉角度從而改變相機的初始角度,如下:
const cameraRigY = new THREE.Group();
scene.add(cameraRigY);
const camera = new THREE.PerspectiveCamera(75, viewport.offsetWidth / viewport.offsetHeight, 0.01, 20);
camera.position.set(0,1,7);
//相機加入組里
cameraRigY.add(camera);
//修改整體相機Y軸旋轉
cameraRigY.rotation.set(0,Math.PI/2,0);
const controls = new OrbitControls(camera, renderer.domElement);
controls.update();進過測試,相機的初始角度修改成功了。
方法2:也可以設置焦點:OrbitControls控制器上有target用來設置焦點。相機角度和位置要同步修改才行。
controls.target = new THREE.Vector3(0, 0, 0);//控制焦點
3.重置相機
在相機旋轉操作了之后,想重置到原來的狀態(tài),發(fā)現(xiàn)上訴方法也無效了。而OrbitControls控制器提供了兩個方法來實現(xiàn):
/**
* Save the current state of the controls. This can later be
* recovered with .reset.
*/
saveState(): void;
/**
* Reset the controls to their state from either the last time
* the .saveState was called, or the initial state.
*/
reset(): void;
先調(diào)用saveState()方法保存當前的相機狀態(tài),然后使用reset()方法重置到之前保存的狀態(tài)即可。
總結
到此這篇關于Three.js使用OrbitControls后修改相機旋轉方向無效解決辦法的文章就介紹到這了,更多相關Three.js修改相機旋轉方向無效內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
JavaScript實現(xiàn)輸入框(密碼框)出現(xiàn)提示語
有時候我們需要在登陸表單有一些提示語言,比如“請輸入用戶名”和“請輸入密碼”等語言,通過本文給大家介紹JavaScript實現(xiàn)輸入框(密碼框)出現(xiàn)提示語的相關知識,對js實現(xiàn)輸入框提示相關知識感興趣的朋友一起學習吧2016-01-01
詳解maxlength屬性在textarea里奇怪的表現(xiàn)
這篇文章主要介紹了maxlength屬性在textarea里奇怪的表現(xiàn)的相關資料,需要的朋友可以參考下2015-12-12
Bootstrap面板(Panels)的簡單實現(xiàn)代碼
這篇文章主要為大家詳細介紹了Bootstrap面板(Panels)的簡單實現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-03-03
JS循環(huán)發(fā)送請求時控制請求并發(fā)數(shù)實例
這篇文章主要介紹了JS循環(huán)發(fā)送請求時控制請求并發(fā)數(shù)實例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-12-12

