2013-01-08 6 views
16

Three.js में दृश्य में जोड़ सकते हैं, मैं दृश्य में एक स्थिति के लिए एक जाल जोड़ने के लिएमैं एक जाल की स्थिति सेट कैसे इससे पहले कि मैं Three.js

मैं कोशिश की है चाहता हूँ:

// mesh is a THREE.Mesh 
scene is a THREE.Scene 
scene.add(mesh) 
scene.updateMatrixWorld(true) 
mesh.matrixWorld.setPosition(new THREE.Vector3(100, 100, 100)) 
scene.updateMatrix() 

लेकिन इससे कुछ भी प्रभावित नहीं हुआ।

मुझे क्या करना चाहिए?

उत्तर

42

मैं तुम्हें यहाँ पर documenation जांच करने के लिए सिफारिश करेंगे: यदि आप दस्तावेज-पेज के शीर्ष पर देख सकते हैं http://threejs.org/docs/#Reference/Objects/Mesh , मेष "Object3D" से विरासत। इसका मतलब है कि आप ऑब्जेक्ट 3 डी द्वारा प्रदान की जाने वाली सभी विधियों या गुणों का उपयोग कर सकते हैं। तो डॉक्यू-पेज पर लिंक "ऑब्जेक्ट 3 डी" पर क्लिक करें और गुण सूची जांचें। आपको संपत्ति मिल जाएगी "। स्थिति"। यह देखने के लिए कि डेटा-टाइप किस प्रकार है, "। स्थिति" पर क्लिक करें। Paha..its वेक्टर 3

तो निम्न कार्य करने का प्रयास करें:

//scene is a THREE.Scene 
scene.add(mesh); 
mesh.position.set(100, 100, 100); 
+9

न केवल आप ही उत्तर प्रदान करते हैं। आप दस्तावेज का उपयोग कैसे करें सिखाते हैं! – Novalis

+4

यह सही उत्तर है। Mesh.position.set (x, y, z) का उपयोग करें क्योंकि यदि आप mesh.position = xxx सेट करते हैं, तो आपको बल अद्यतन करने की आवश्यकता नहीं होगी, आप ऑब्जेक्ट विशेषता को बदलते हैं, हमेशा वास्तविक समय में ऑब्जेक्ट को स्थानांतरित नहीं करते हैं। position.set अधिक कोप्लेक्स है और हमेशा ऑब्जेक्ट को गंतव्य पर ले जाता है और एक बार में बफर, रोशनी, छाया आदि को ताज़ा करता है। – Martin

+0

मैंने कोशिश की, और यह पता नहीं लगा सकता कि यह वास्तव में क्या कर रहा है। यदि मैं एक बिंदु खींचता हूं, तो यह सही जगह पर है। लेकिन अगर मैं जाल बना देता हूं, और स्थिति को सेट करने का प्रयास करता हूं, तो यह कुछ स्पष्ट रूप से यादृच्छिक जगह में दिखाई देता है। – Zendel

24

मैं एक GitHub पहले पर देखा। (Three.js R71)

mesh.position.set(100, 100, 100); 

और व्यक्तियों

के लिए किया जा सकता है
mesh.position.setX(200); 
mesh.position.setZ(200); 

सन्दर्भ: https://threejs.org/docs/#api/math/Vector3

विस्तृत विवरण नीचे है:

के बाद से mesh.position है " Vector3 "। वेक्टर 3() में setX() setY() और setZ() विधियां हैं। हम इसका इस्तेमाल इस तरह कर सकते हैं।

mesh.position = new THREE.Vector3() ; //see position is Vector3() 
vector1 = new THREE.Vector3(); 

mesh.position.setX(100); //or this 
vector1.setX(100)   // because all of them is Vector3() 
camera1.position.setZ(100); // or this 
light1.position.setY(100) // applicable to any object.position 
+1

यह मेरे लिए काम करता है, जबकि chysmann का जवाब नहीं है, हालांकि मैं यह नहीं समझा सकता कि यह क्यों नहीं करता/नहीं। क्या आप "गिटूब पर इसे देखा" के बारे में बता सकते हैं? – Nate

+0

मैंने इसे एक github three.js पृष्ठ पर देखा। लेकिन icant अभी स्रोत को ढूंढें –

+2

यह सही जवाब है। Mesh.position.set (x, y, z) का उपयोग करें क्योंकि यदि आप mesh.position = xxx सेट करते हैं, तो आपको बल अद्यतन करने की आवश्यकता नहीं होगी, आप ऑब्जेक्ट विशेषता को बदलते हैं, हमेशा वास्तविक समय में ऑब्जेक्ट को स्थानांतरित नहीं करते हैं। position.set अधिक कोप्लेक्स है और हमेशा ऑब्जेक्ट को गंतव्य पर ले जाता है और एक बार में बफर, रोशनी, छाया आदि को ताज़ा करता है। – Martin

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