gpt4 book ai didi

javascript - Three.js - 在 OrbitControls 和 FirstPersonControls 之间切换

转载 作者:行者123 更新时间:2023-11-29 21:48:26 34 4
gpt4 key购买 nike

我试图在 three.js OrbitControls 和 FirstPersonControls 之间来回切换。 Per Mr. Doob's comment on SODVPassos's example ,我尝试制作自己的按钮,在两个控件之间切换。

我的 html 有:

<button id="controla" type="button" class="btn btn-default">1st</button>
<button id="controlb" type="button" class="btn btn-default">3rd</button>
<script src="js/OrbitControls.js"></script>
<script src="js/FirstPersonControls.js"></script>

我的 three.js javascript 有:

$( 'button#controlb' ).addClass( 'active' );

$( 'button#controla' ).click( function() {
if( !$( 'button#controla' ).hasClass( 'active' ) ){
$( 'button#controla' ).addClass( 'active' );
$( 'button#controlb' ).removeClass( 'active' );

var prevCamera = camera;

camera = new THREE.PerspectiveCamera( VIEW_ANGLE, ASPECT, NEAR, FAR );
camera.position.set( 2000, 1500, 2000 );
camera.lookAt( myTarget.position );
camera.position.copy( prevCamera.position );
camera.rotation.copy( prevCamera.rotation );

controls = new THREE.FirstPersonControls(camera);
}
});

$( 'button#controlb' ).click( function() {
if( !$( 'button#controlb' ).hasClass( 'active' ) ){
$( 'button#controla' ).removeClass( 'active' );
$( 'button#controlb' ).addClass( 'active' );

var prevCamera = camera;

camera = new THREE.PerspectiveCamera( VIEW_ANGLE, ASPECT, NEAR, FAR );
camera.position.set( 2000, 1500, 2000 );
camera.lookAt( myTarget.position );
camera.position.copy( prevCamera.position );
camera.rotation.copy( prevCamera.rotation );

controls = new THREE.OrbitControls( camera );
}
});

当我将其切换为第一人称时,模型消失了。此外,在 IE 控制台中,当我在点击按钮后键入 camera.position 时,我得到 [object Object] {x: NaN, y: NaN, z: NaN}

我在这里错过了什么?我需要指定更多控件吗?

最佳答案

它不起作用,因为 FirstPersonControls 需要时钟才能运行。我没有通过 controls.update(); 时钟函数,如下所示。

function animate() {
requestAnimationFrame( animate );
controls.update( clock.getDelta() );
update();
render();
stats.update();
}

关于javascript - Three.js - 在 OrbitControls 和 FirstPersonControls 之间切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30263264/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com