arası bir arama sırasında nasıl görüntüleyeceğimi görmek için, bir kameranın fov'unu sahnede tıklatılan bir nesneye göre ara vermek için aralar kullanarak deneme yapıyorum. Bunu yapmak istediğim, kameranın odağını tıklatılmış olan nesneye geçirmesini sağlamaktır, bu da çalışmıyor. İşte tıklama için benim kod:three.js - kameranın bir nesneyi
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();
}
}
ve tween/kamera hareketi için kodum:
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);
kamera düzgün görüş alanını arasını doldurma, ancak göründüğü aynı sivri kalmak lookAt komutunda belirtilen "camTarget" vektörüne geçmek yerine her zaman yöneldi.
Ah - evet, doğru yere bakma sorunu, onu olay işleyicisine koydum, animasyon döngüsüne değil. LookAt() kullanıp copy() işlevini kullanamadım. Güzel yakalayış. Nasıl doldurulacağı konusunda emin değilim. Kamerayı fov gibi hareket ettirerek, bir canlandırma fonksiyonuna yerleştirerek, lookAt fonksiyonunun da dinamik olarak değişeceğini ve bir anlamda, aralarında olduğu gibi görüneceğini düşündüm. Sanırım, kamerayı çalışmak için fov değiştirmek yerine gerçekte hareket ettirmek zorunda kalabilirim. Yine de teşekkürler. – mheavers
Çalıştığına sevindim :) – MikaelEmtinger
@MikaelEmtinger - neden olay işleyicisinde çok fazla yapmamalısınız? – Neil