2012-04-27 15 views
9

मैं अपने दृश्य में कैमरे को नियंत्रित करने के लिए तीन जेएस का उपयोग करने की कोशिश कर रहा हूं। मेरे पास वर्तमान में मेरे कीबोर्ड पर बाएं और दाएं कुंजी का उपयोग करके मेरे ऑब्जेक्ट के चारों ओर एक सर्कल में कक्षा में स्थापित कैमरा है। लेकिन क्या किसी को पता है कि मैं ज़ूम कैसे करूं?बिना ट्रैकबॉल नियंत्रण या अन्य कैमरा नियंत्रण लाइब्रेरी के बिना तीन जेएस में कैमरा ज़ूम करना

camera.fov *= zoomFactor; 
    camera.updateProjectionMatrix(); 

देखें:

camera = new THREE.PerspectiveCamera(45, window.innerWidth/window.innerHeight, 1, 10000); 
camera.position.set(0,20,35); 
var rotSpeed = .02; 

function checkRotation(){ 

    var x = camera.position.x, 
     y = camera.position.y, 
     z = camera.position.z; 

    if (keyboard.pressed("left")){ //MH - find a way to do this in a switch statement 
     camera.position.x = x * Math.cos(rotSpeed) + z * Math.sin(rotSpeed); 
     camera.position.z = z * Math.cos(rotSpeed) - x * Math.sin(rotSpeed); 
    } else if (keyboard.pressed("right")){ 
     camera.position.x = x * Math.cos(rotSpeed) - z * Math.sin(rotSpeed); 
     camera.position.z = z * Math.cos(rotSpeed) + x * Math.sin(rotSpeed); 
    } else if(keyboard.pressed("up")){ 
     //zoom in 
    } else if (keyboard.pressed("down")){ 
     //zoom out 
    } 

    camera.lookAt(scene.position); 

} 

उत्तर

17

आप एक असली जूम चाहते हैं, कैमरा ले जाए बिना, तो आप दृश्य के क्षेत्र के साथ खेल सकते (FOV) कैमरे के पैरामीटर: यहाँ मेरे वर्तमान कोड है: http://jsfiddle.net/bvcCB/87/

यदि आप कैमरे को लक्ष्य के पास (या दूर) ले जाना चाहते हैं, तो कैमरे की स्थिति से वेक्टर की स्थिति में वेक्टर की गणना करें, और उस वेक्टर के साथ कैमरा स्थिति को स्थानांतरित करें।

+0

आह! एफओवी का प्रयास किया लेकिन प्रक्षेपण मैट्रिक्स को अपडेट करना भूल गया। धन्यवाद! – mheavers

11

r69 आप अब camera.zoom उपयोग कर सकते हैं से:

camera.zoom = zoomFactor; 
camera.updateProjectionMatrix(); 
+0

'updateProjectionMatrix() 'के लिए धन्यवाद! – LinusGeffarth

संबंधित मुद्दे