vì vậy tôi đang thử nghiệm bằng cách sử dụng tweens để twov của một máy ảnh fov dựa trên một đối tượng được nhấp vào trong cảnh, mà là làm việc tuyệt vời, nhưng bây giờ những gì tôi muốn làm là để máy ảnh chuyển tiêu điểm của nó sang đối tượng được nhấp vào, điều này không hoạt động. Dưới đây là mã của tôi cho các nhấp chuột:three.js - làm thế nào để làm cho máy ảnh nhìn vào một đối tượng trong một tw232
function onDocumentMouseDown(event) {
event.preventDefault();
var vector = new THREE.Vector3((event.clientX/window.innerWidth) * 2 - 1, - (event.clientY/window.innerHeight) * 2 + 1, 0.5);
var ray = new THREE.Ray(camera.position, vector.subSelf(camera.position).normalize());
var intersects = ray.intersectObjects(objects);
if (intersects.length > 0) { //We've clicked a certain object
camTarget = intersects[0].object.position; //HERE'S THE VECTOR3 I WANT TO LOOK AT
camTween.start();
}
}
và mã của tôi cho phong trào tween/camera:
var camUpdate = function(){
camera.fov = currentFov.fov; //WORKING
camera.lookAt(camTarget); //NOT WORKING
camera.updateProjectionMatrix();
}
var currentFov = { fov: camera.fov };
TWEEN.removeAll();
camTween = new TWEEN.Tween(currentFov).to({fov: +zoomInFov},tweenTime).easing(camEase).onUpdate(camUpdate);
Máy ảnh này được Tweening trường nhìn đúng, nhưng nó xuất hiện để duy trì chỉ trong cùng một hướng nó luôn được chỉ ra, thay vì chuyển sang vectơ "camTarget" được chỉ định trong lệnh lookAt.
Ah - vâng, vấn đề khiến nó nhìn vào vị trí thích hợp là tôi đặt nó vào bộ xử lý sự kiện chứ không phải vòng lặp animate. Tôi đã có thể sử dụng lookAt() và không copy(). Nice bắt. Theo như nó sẽ được tweened, tôi không chắc chắn. Tôi nghĩ rằng bằng cách đặt nó vào một chức năng animate, khi máy ảnh di chuyển fov của nó, chức năng lookAt cũng sẽ thay đổi động, làm cho nó trông, theo nghĩa nào đó, như thể nó đã được tweening. Tôi cho rằng tôi có thể phải di chuyển máy ảnh thay vì thay đổi fov để làm việc. Cảm ơn một lần nữa mặc dù. – mheavers
Vui vì bạn đã làm việc đó :) – MikaelEmtinger
@MikaelEmtinger - tại sao bạn không nên làm quá nhiều trong xử lý sự kiện? – Neil