欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Three.js使用OrbitControls后修改相機旋轉(zhuǎn)方向無效解決辦法

 更新時間:2024年01月04日 14:44:20   作者:YanisWu  
three.js是用javascript寫的基于webGL的第三方3D庫,下面這篇文章主要給大家介紹了關(guān)于Three.js使用OrbitControls后修改相機旋轉(zhuǎn)方向無效的解決辦法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

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é)流

    一文學(xué)會JavaScript如何手寫防抖節(jié)流

    其實防抖和節(jié)流不僅僅在面試中會讓大家手寫,在實際項目中也可以起到性能優(yōu)化的作用,所以還是很有必要掌握的。這篇文章就帶大家徹底學(xué)會JavaScript手寫防抖節(jié)流,希望對大家有所幫助
    2022-11-11
  • JavaScript實現(xiàn)簡單音樂播放器

    JavaScript實現(xiàn)簡單音樂播放器

    這篇文章主要為大家詳細(xì)介紹了JavaScript實現(xiàn)簡單音樂播放器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • JSX在render函數(shù)中的應(yīng)用詳解

    JSX在render函數(shù)中的應(yīng)用詳解

    這篇文章主要介紹了JSX在render函數(shù)中的應(yīng)用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • JavaScript實現(xiàn)輸入框(密碼框)出現(xiàn)提示語

    JavaScript實現(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)

    這篇文章主要介紹了maxlength屬性在textarea里奇怪的表現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2015-12-12
  • Bootstrap面板(Panels)的簡單實現(xiàn)代碼

    Bootstrap面板(Panels)的簡單實現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了Bootstrap面板(Panels)的簡單實現(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • 詳解JavaScript發(fā)送埋點請求的兩種方式

    詳解JavaScript發(fā)送埋點請求的兩種方式

    對于發(fā)送埋點請求這種應(yīng)用場景,我們有兩種簡單的處理方式:動態(tài)創(chuàng)建<script>和<img>兩種方式。本文就詳細(xì)講講二種方式的實現(xiàn),需要的可以參考一下
    2022-06-06
  • JS循環(huán)發(fā)送請求時控制請求并發(fā)數(shù)實例

    JS循環(huán)發(fā)送請求時控制請求并發(fā)數(shù)實例

    這篇文章主要介紹了JS循環(huán)發(fā)送請求時控制請求并發(fā)數(shù)實例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-12-12
  • JS使用正則表達式驗證身份證號碼

    JS使用正則表達式驗證身份證號碼

    這篇文章主要介紹了JS使用正則表達式驗證身份證號碼的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • Javascript & DHTML上傳文件控件

    Javascript & DHTML上傳文件控件

    首先來做一個實例,批量上傳的UI控件。以后一般做的示例也是以UI控件為主的。都是封裝成Object或者用Function封裝成"Class"類。
    2008-07-07

最新評論