2012-12-24 13 views
8

में कैमरा का ओरिएंटेशन कैसे प्राप्त करें मैं THREE.JS और वेब ऑडियो API का उपयोग करके एक 3 डी गेम बना रहा हूं। मेरी समस्याओं में से एक यह है कि मैं वेब ऑडियो श्रोता अभिविन्यास का उपयोग करना चाहता हूं, और श्रोता को कैमरे के रूप में परिभाषित करना चाहता हूं, जिनकी स्थिति और दिशा लगातार अद्यतन हो रही हैTHREE.js

मेरा प्रश्न, वैसे भी आसानी से प्राप्त करने के लिए वैसे भी है एक तीन कैमरे की वेक्टर दिशा?

मैं पुराने कैमरे की स्थिति का उपयोग कर, और गणना करने के लिए जो तरीका यह सामना कर रहा है वेग वैक्टर का उपयोग करके इसे गणना करने के लिए कोशिश कर रहा था, लेकिन यह काम नहीं करेगा जब कैमरा अभी भी खड़े कर रहा है ...

चाहेंगे camera.rotation.x, camera.rotation.y, camera.rotation.z का उपयोग करके यूनिट वेक्टर बनाने के लिए संभव हो सकता है?

या क्या कोई आसान तरीका है?

आपके समय के लिए बहुत बहुत धन्यवाद!

उत्तर

15

आप दुनिया की जगह में दिशा जानना चाहते हैं जिसमें कैमरा दिख रहा है।

कैमरा अंतरिक्ष में, कैमरा मूल पर स्थित है और नीचे की तलाश में है यह नकारात्मक z- अक्ष है।

कैमरा अंतरिक्ष में कैमरे के सामने एक बिंदु चुनें:

:

var pWorld = pLocal.applyMatrix4(camera.matrixWorld); 

अब आप वांछित दिशा वेक्टर का निर्माण कर सकते हैं:

var pLocal = new THREE.Vector3(0, 0, -1); 

अब दुनिया अंतरिक्ष में उस बिंदु को बदलने

var dir = pWorld.sub(camera.position).normalize(); 

संपादित करें: तीन.जेएस के लिए अपडेट किया गया r.57

संपादित करें: यह भी देखें: three.js set and read camera look vector

+0

बिल्कुल सही! आपको बहुत - बहुत धन्यवाद! – Cabbibo

2

संशोधन 69 (क्या संशोधन यह पेश किया गया था में यकीन नहीं) में, आप

camera.getWorldDirection() 

फोन कैमरा उन्मुखीकरण वेक्टर प्राप्त करने के लिए कर सकते हैं।

+0

[इसे आर 6 9 में जोड़ा गया था] (https://github.com/mrdoob/three.js/releases/tag/r69) –

2

यदि आपका कैमरा प्लेयर ऑब्जेक्ट का बच्चा है .e.g। एफपीएस खेल में। खिलाड़ी (कैमरे के माता पिता) पर एक ही गणना करते हैं, और इस (Bullit सही दिशा हो जाता है इस मामले में obj से,) का उपयोग

Bullit.prototype.getDirection=function(obj){ 
this.position.add(obj.position); 
var pLocal = new THREE.Vector3(0, 0, -1); 
var pWorld = pLocal.applyMatrix4(obj.matrixWorld); 
var dir = pWorld.sub(obj.position).normalize(); 
this.direction=dir; 

}

+0

'लागू मैट्रिक्स 4' क्या करता है? –

+0

मैट्रिक्स गणित के लिए: http://threejs.org/docs/#Manual/Introduction/Matrix_transformations – Joris

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