2013-01-10 14 views
10

पर मैं एक बिंदु और ओरिएंट पर सामान्य रूप से तीन.जेएस और 3 डी प्रोग्रामिंग में नया हूं, इसलिए यह एक बहुत ही सरल सवाल प्रतीत हो सकता है। आदर्श रूप में, मुझे आशा है कि उत्तर अंतर्निहित सिद्धांतों को समझने में मेरी सहायता कर सकता है।Three.js - किसी ऑब्जेक्ट को देखने के लिए किसी ऑब्जेक्ट को घुमाने के लिए कैसे करें

मेरे पास एक ऑब्जेक्ट है जिसे किसी अन्य बिंदु (मूल, इस मामले में, सादगी के लिए) पर "बिंदु" करने की आवश्यकता है, जिसे Object3D.lookAt(point) फ़ंक्शन के साथ आसानी से किया जा सकता है। यह बिंदु पर वस्तु के जेड अक्ष को अच्छी तरह से इंगित करता है।

मैं अपने जेड अक्ष के चारों ओर looker नामक अपनी वस्तु को घुमाने के लिए भी चाहता हूं, जैसे एक्स एक्स अक्ष आमतौर पर किसी अन्य ऑब्जेक्ट की ओर जाता है, refObj। मुझे पता है कि एक्स अक्ष सीधे refObj पर इंगित नहीं कर सकता है जब तक कि ऑब्जेक्ट मूल के साथ सही कोण न हो। मैं नीचे के रूप में diagramed origin, refObj और looker द्वारा बनाई विमान पर झूठ looker की एक्स अक्ष चाहते हैं,:

diagram of problem

रोटेशन करने का सबसे आसान तरीका है looker.rotation.z संशोधित करने के लिए लग रहे हैं, लेकिन मैं यह नहीं पता कि मूल्य क्या होना चाहिए इसकी गणना कैसे करें।

सामान्यतः, मुझे lookAt फ़ंक्शन का एक विस्तारित संस्करण चाहिए जो एक दूसरा समन्वय लेता है जिसके लिए एक्स अक्ष उन्मुख होगा। कुछ इस तरह:

function lookAtAndOrient(objectToAdjust, pointToLookAt, pointToOrientXTowards) 
{ 
    // First we look at the pointToLookAt 
    objectToAdjust.lookAt(pointToLookAt); 

    // Then we rotate the object 
    objectToAdjust.rotation.z = ??; 
} 

मैं बनाया है एक jsFiddle with the example diagramed above

उत्तर

14

क्या तुम सच में कह रहे हैं आप वस्तु (वस्तु की up -vector) के y- अक्ष चाहते विमान को orthogonal हो रहा है।

आपको केवल lookAt(origin) पर कॉल करने से पहले ऑब्जेक्ट के up -vector सेट करना है।

आप वांछित up वेक्टर की गणना करके दो वैक्टरों का क्रॉस-उत्पाद ले कर विमान में झूठ बोलते हैं। आपकी समस्या का दो समाधान, दोनों गणना वेक्टर के रूप में देखते हैं कि http://jsfiddle.net/rQasN/43/

नोट और यह निषेध विमान के लिए ओर्थोगोनल होगा:

यहाँ एक काम कर रहा बेला है।

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

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