2012-08-11 14 views
18

मैंने एक सिलेंडर बनाया है और मैं इसके बाउंडिंग बॉक्स को बदलकर इसके एक छोर पर अपने घूर्णन के केंद्र को स्थानांतरित करना चाहता हूं लेकिन यह काम नहीं कर रहा है।थ्री.जेएस ने ज्यामिति के केंद्र को स्थानांतरित किया

http://jsfiddle.net/736a7/1/

मैं क्या पर काम कर रहा हूँ का एक उदाहरण नहीं है।

असल में मैं सिलेंडर को घूमना चाहता हूं जैसे कि यह तलवार को उसके हैंडल द्वारा घुमाया जा रहा था।

उत्तर

28

कुछ मदद के लिए धन्यवाद मिला।

geometry.applyMatrix(new THREE.Matrix4().makeTranslation(x, y, z)); 
का उपयोग कर कि मैं 100 अंक से सिलेंडर के y अनुवाद तो यह मूल रूप से घूमता है यह निचले सिरे है पर

+0

मेरे जीवन के लिए मैं इसे काम नहीं कर सकता। यह उत्पत्ति के बिंदु का भी अनुवाद करता है, और घूर्णन बिल्कुल नहीं बदलता है। – Tyguy7

+2

@ Tyguy7 - आपको geometry.verticesNeedUpdate = true –

+5

सेट करने की आवश्यकता है अब आप इस शॉर्टकट 'geometry.translate (x, y, z) का उपयोग कर सकते हैं;', http://stackoverflow.com/questions/12835361/three-js देखें -move-कस्टम ज्यामिति करने वाली मूल – kraftwer1

2

मैंने अपने मामले में पिवट का उपयोग करके एक दृष्टिकोण लिया। मूल रूप से, आप एक धुरी बनाने के लिए:

var pointToRotateAround; 
var objectToRotate; 
... 
var pivot = new THREE.Object3D(); 
pivot.position=pointToRotateAround.position; 
pivot.add(objectToRotate); 
scene.add(pivot); 
... 
function render(){ 
pivot.rotation.z +=0.05; 
} 
... 

यह एक शरीर एक और या किसी बिंदु के आसपास बारी बारी से करना संभव तरीके देता है। यहां उस दृष्टिकोण के बारे में अधिक जानकारी है: https://github.com/mrdoob/three.js/issues/1830

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