Three.js使用OrbitControls后修改相機旋轉(zhuǎn)方向無效解決辦法
1.問題復(fù)現(xiàn)
在項目中添加了OrbitControls控制器來控制相機的旋轉(zhuǎn)和平移,但是需要修改初始的相機角度,于是我把相機的角度進行修改,如下:
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ā)生變化。原因是相機旋轉(zhuǎn)和移動被OrbitControls控制器托管了。
2.解決方法
方法1.于是我嘗試創(chuàng)建一個組,將相機加入組里,通過改變組的旋轉(zhuǎn)角度從而改變相機的初始角度,如下:
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軸旋轉(zhuǎn) cameraRigY.rotation.set(0,Math.PI/2,0); const controls = new OrbitControls(camera, renderer.domElement); controls.update();
進過測試,相機的初始角度修改成功了。
方法2:也可以設(shè)置焦點:OrbitControls控制器上有target用來設(shè)置焦點。相機角度和位置要同步修改才行。
controls.target = new THREE.Vector3(0, 0, 0);//控制焦點
3.重置相機
在相機旋轉(zhuǎn)操作了之后,想重置到原來的狀態(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()方法保存當(dāng)前的相機狀態(tài),然后使用reset()方法重置到之前保存的狀態(tài)即可。
總結(jié)
到此這篇關(guān)于Three.js使用OrbitControls后修改相機旋轉(zhuǎn)方向無效解決辦法的文章就介紹到這了,更多相關(guān)Three.js修改相機旋轉(zhuǎn)方向無效內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
一文學(xué)會JavaScript如何手寫防抖節(jié)流
其實防抖和節(jié)流不僅僅在面試中會讓大家手寫,在實際項目中也可以起到性能優(yōu)化的作用,所以還是很有必要掌握的。這篇文章就帶大家徹底學(xué)會JavaScript手寫防抖節(jié)流,希望對大家有所幫助2022-11-11JavaScript實現(xiàn)輸入框(密碼框)出現(xiàn)提示語
有時候我們需要在登陸表單有一些提示語言,比如“請輸入用戶名”和“請輸入密碼”等語言,通過本文給大家介紹JavaScript實現(xiàn)輸入框(密碼框)出現(xiàn)提示語的相關(guān)知識,對js實現(xiàn)輸入框提示相關(guān)知識感興趣的朋友一起學(xué)習(xí)吧2016-01-01詳解maxlength屬性在textarea里奇怪的表現(xiàn)
這篇文章主要介紹了maxlength屬性在textarea里奇怪的表現(xiàn)的相關(guān)資料,需要的朋友可以參考下2015-12-12Bootstrap面板(Panels)的簡單實現(xiàn)代碼
這篇文章主要為大家詳細(xì)介紹了Bootstrap面板(Panels)的簡單實現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-03-03JS循環(huán)發(fā)送請求時控制請求并發(fā)數(shù)實例
這篇文章主要介紹了JS循環(huán)發(fā)送請求時控制請求并發(fā)數(shù)實例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-12-12