के दौरान किसी ऑब्जेक्ट को कैसे दिखाना है, इसलिए मैं दृश्य में क्लिक किए गए ऑब्जेक्ट पर आधारित किसी कैमरे के फव्वारे के बीच ट्वेन्स का उपयोग करने के साथ प्रयोग कर रहा हूं, जो कि बहुत अच्छा काम कर रहा है, लेकिन अब मैं यह करना चाहता हूं कि कैमरा उस ऑब्जेक्ट पर अपना ध्यान केंद्रित करे जो क्लिक किया गया था, जो काम नहीं कर रहा है। यहाँ क्लिक करें के लिए अपने कोड है:three.js - कैमरे को एक ट्विन
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();
}
}
और ट्वीन/कैमरा आंदोलन के लिए मेरी कोड:
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);
कैमरा ठीक से दृश्य के क्षेत्र Tweening है, लेकिन ऐसा लगता ही में बताया रहने के लिए lookAt कमांड में निर्दिष्ट "camTarget" वेक्टर पर स्विच करने के बजाय, हमेशा दिशा की दिशा में यह निर्देश दिया गया था।
आह - हाँ, उचित स्थान पर देखने की समस्या यह थी कि मैंने इसे ईवेंट हैंडलर में रखा, न कि एनिमेट लूप। मैं lookAt() का उपयोग करने में सक्षम था और प्रतिलिपि नहीं()। अच्छा पकड़ा। जहां तक यह ट्वेंडेड किया जाएगा, मुझे यकीन नहीं है। मैंने सोचा कि इसे एक एनिमेट फ़ंक्शन में डालकर, जैसे ही कैमरा अपना एफओवी ले जाया गया है, देखो यह फ़ंक्शन गतिशील रूप से बदल जाएगा, इसे एक अर्थ में, जैसा कि यह ट्विनिंग था। मुझे लगता है कि काम करने के लिए एफओवी को बदलने के बजाय मुझे वास्तव में कैमरा ले जाना पड़ सकता है। फिर भी धन्यवाद। – mheavers
खुशी है कि आप इसे काम करने के लिए मिला :) – MikaelEmtinger
@MikaelEmtinger - आपको ईवेंट हैंडलर में इतना अधिक क्यों नहीं करना चाहिए? – Neil