2012-07-15 14 views
9

जहां तक ​​मुझे पता है var point = object.geometry.vertices[i]; ऑब्जेक्ट की ज्यामिति के अंदर बिंदु के x, y और z के लिए सापेक्ष स्थिति के साथ वापस आ जाएगा।तीन.जेएस में वर्टेक्स की पूर्ण स्थिति कैसे प्राप्त करें?

ऑब्जेक्ट को स्थानांतरित, घूर्णन या स्केल किए जाने पर पूर्ण स्थिति कैसे प्राप्त करें?

उत्तर

33

पहले सुनिश्चित करें कि ऑब्जेक्ट के मैट्रिक्स अपडेट किए गए हैं।

object.updateMatrixWorld(); 

रेंडर पाश आमतौर पर आपके लिए यह कहता है।

var vector = object.geometry.vertices[i].clone(); 

vector.applyMatrix4(object.matrixWorld); 

वेक्टर अब स्थिति में शामिल होंगे दुनिया निर्देशांक में:

फिर, यह करते हैं।

आप कुछ सीजी संदर्भ पुस्तकें पढ़ना चाहेंगे। एक प्रोग्रामर की गाइड जेम्स एम वान Verth और लार्स एम बिशप

:

  1. ग्राफिक्स और खेल के विकास के लिए 3 डी गणित प्राइमर/फ्लेचर डन और इयान पार्बेरी खेलों के लिए

  2. आवश्यक गणित और इंटरएक्टिव अनुप्रयोग द्वारा

Three.js

21

Three.js (V50 +) के हाल के संस्करण r69 इस कार्यक्षमता bui प्रदान the THREE.Object3D class में लेफ्टिनेंट। विशेष रूप से, vector नाम के एक स्थानीय THREE.Vector3 उदाहरण की दुनिया निर्देशांक मिलता है, the localToWorld method उपयोग करने के लिए:

object.localToWorld(vector); 

इसी तरह, वहाँ है a worldToLocal method के लिए दुनिया परिवर्तित स्थानीय निर्देशांक, जो थोड़ा अधिक जटिल है, गणितीय बोल में समन्वय करता है। वस्तुओं में एक विश्व vector अनुवाद करने के लिए स्थानीय अंतरिक्ष समन्वय:

object.worldToLocal(vector); 
+0

... और भूल नहीं है object.updateMatrixWorld चलाने के लिए(); मैं कोशिश करने से पहले मैं थोड़ी देर के लिए अपने सिर खरोंच कर रहा था। – arpo

+0

ऐसा करने का प्रयास किया ... अभी भी 0, 0, 0 :(प्राप्त करें –