2013-06-20 8 views
5

मैं एक वस्तु को कैमरे के सामने रखने की कोशिश कर रहा हूं, लेकिन ऐसा करने में सक्षम नहीं है।THREE.JS में कैमरे के सामने ऑब्जेक्ट को कैसे रखा जाए?

मैं फ्लाईकंट्रोल का उपयोग कर रहा हूं जो कैमरे को ले जाता है, और अब मैं इसके सामने एक ऑब्जेक्ट रखना चाहता हूं। मैं यह कैसे कर सकता हूँ? मैंने कई अलग-अलग तरीकों की कोशिश की है, लेकिन मैं सफल नहीं हुआ।

धन्यवाद

+0

क्या आप कुछ कोड दिखा सकते हैं ताकि हम देख सकें कि त्रुटि कहां है? – gaitat

उत्तर

1
var cx, cy, cz, lx, ly, lz; 



dir.set(0,0,-1); 
dir.applyAxisAngle(0,camera.rotation.x); 
dir.applyAxisAngle(1,camera.rotation.y); 
dir.applyAxisAngle(2,camera.rotation.z); 
var dist = 100; 

cx = camera.position.x; 
cy = camera.position.y; 
cz = camera.position.z; 

lx = dir.x; 
ly = dir.y; 
lz = dir.z; 


var l; 

l = Math.sqrt((dist*dist)/(lx*lx+ly*ly+lz*lz)); 

var x1, x2; 
var y1, y2; 
var z1, z2;  

x1 = cx + lx*l; 
x2 = cx - lx*l; 

y1 = cy + ly*l; 
y2 = cy - ly*l; 

z1 = cz + lz*l; 
z2 = cz - lz*l; 


nanobot.position.set(x1, y1, z1); 

मैं कैमरे की दिशा की दिशा वेक्टर गणना करने के लिए, और फिर लाइन पर सदन के माध्यम से गुजरता की गणना करने की कोशिश की, कैमरा

से दूरी पर इस लाइन पर एक बिंदु डाल
15

क्या आपने अपनी ऑब्जेक्ट को अपने कैमरे का एक बच्चा बनाने और फिर इसे आगे अनुवाद करने का प्रयास किया है?

camera.add(nanobot); 
nanobot.position.set(0,0,-100); 

उपरोक्त स्थानों nanobot स्थायी रूप से 100 कैमरे के सामने इकाइयों ... और है कि जब तक आप ऐसा है, जहां यह रहेगी:

camera.remove(nanobot); 

... जो उस समय चाहिए बस जब तक आप इसे किसी अन्य विधि का उपयोग नहीं करते हैं, तब तक वैश्विक स्थान पर रहें।

var vec = new THREE.Vector3(0, 0, -dist); 
vec.applyQuaternion(camera.quaternion); 

nanobot.position.copy(vec); 

वस्तु कैमरा didn का एक बच्चा बनाना: एक सदिश करने के लिए कैमरे के quarternion लागू करने (dist कैसे कैमरे से दूर दूर आप वस्तु बनना चाहते है) -

+4

आपको कैमरे को दृश्य का एक बच्चा बनाना है (डिफ़ॉल्ट रूप से डिफ़ॉल्ट नहीं) 'scene.add (कैमरा)' – mattdlockyer

+0

सुनिश्चित करें कि 'nanobot.position.set (0,0, -100);' ** है ** 'camera.add (नैनोबोट);': 'स्थिति' कैमरे के सापेक्ष स्थानीय स्थिति है। [तीनjs r89] – zwcloud

1

यहाँ एक और तरीका है मेरे लिए काम नहीं करते हैं, लेकिन यह लागू होता है क्वार्टरियन विधि (@ वेस्टलैंगली के उत्तर से अनुकूलित: Three.js: Get the Direction in which the Camera is Looking)

यदि आप हमेशा कैमरे का सामना करना चाहते हैं तो आप कैमरे से रोटेशन की प्रतिलिपि बनाना चाहेंगे। और यदि आप इसके बाद ऑब्जेक्ट की सटीक स्थिति को ट्विक करना चाहते हैं, तो आप अनुवाद कर सकते हैं, अनुवाद, आदि।

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