gpt4 book ai didi

javascript, three.js - 如何补间相机的 FOV

转载 作者:行者123 更新时间:2023-11-29 22:20:16 24 4
gpt4 key购买 nike

我正在尝试按照本教程进行操作:

http://learningthreejs.com/blog/2011/08/17/tweenjs-for-smooth-animation/

在 three.js 中补间相机的视野,但该值似乎没有更新。知道我做错了什么吗?这是我的代码:

    var fov = 70;
var zoomFov = 100;

function onDocumentMouseUp( event ) {
castRay();
}

function castRay(){
var vector = new THREE.Vector3( ( event.clientX / window.innerWidth ) * 2 - 1, - ( event.clientY / window.innerHeight ) * 2 + 1, 0.5 );
projector.unprojectVector( vector, camera );
var ray = new THREE.Ray( camera.position, vector.subSelf( camera.position ).normalize() );
var intersects = ray.intersectObjects( objects );
if ( intersects.length > 0 ) {
var camObj = intersects[0].object;
camTween = new TWEEN.Tween( fov ).to( zoomFov,500 ).easing( camEase );
camTween.start();
camTween.onUpdate(function(){
updateCam(fov);
});
}
}

function updateCam(fov){
console.log(fov); //MH - outputs 70 every time
}

function animate() {

requestAnimationFrame( animate );
render();
TWEEN.update();

}

最佳答案

我用下面的代码解决了这个问题。似乎补间类需要一个对象的属性才能正确更新(?)

var fov = 70, zoomFov = 10, currentFov, camTween;

function castRay(){
var vector = new THREE.Vector3( ( event.clientX / window.innerWidth ) * 2 - 1, - ( event.clientY / window.innerHeight ) * 2 + 1, 0.5 );
projector.unprojectVector( vector, camera );
var ray = new THREE.Ray( camera.position, vector.subSelf( camera.position ).normalize() );
var intersects = ray.intersectObjects( objects );
if ( intersects.length > 0 ) {
setupTween();
}
}

function setupTween(){
var update = function(){=
camera.projectionMatrix.makePerspective( currentFov.fov, window.innerWidth / window.innerHeight, 1, 1100 );
render();
}

currentFov = { fov: 70};
TWEEN.removeAll();
camTween = new TWEEN.Tween( currentFov ).to( {fov: zoomFov},500 ).easing( camEase ).onUpdate(update);
camTween.start();
}

function animate() {

requestAnimationFrame( animate );
render();
TWEEN.update();

}

关于javascript, three.js - 如何补间相机的 FOV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12847496/

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