我試圖把一個對象放在相機前面,但一直未能。如何在THREE.JS中將相機放在相機前?
我正在使用FlyControls什麼移動相機,我現在想要把一個對象放在它前面。我怎樣才能做到這一點?我嘗試過很多不同的方式,但我沒有成功。
由於
我試圖把一個對象放在相機前面,但一直未能。如何在THREE.JS中將相機放在相機前?
我正在使用FlyControls什麼移動相機,我現在想要把一個對象放在它前面。我怎樣才能做到這一點?我嘗試過很多不同的方式,但我沒有成功。
由於
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);
我試圖計算攝像機的方向的方向矢量,並且然後計算通過所述腔室通過的線,把一個點在這條線以一定距離從相機
你有沒有嘗試讓你的物體成爲你的相機的孩子,然後翻譯它呢?
camera.add(nanobot);
nanobot.position.set(0,0,-100);
以上地方納米機器人永久100臺,在鏡頭前......而這也正是它會留到你:
camera.remove(nanobot);
...此時它應該只要保持它在全球空間中的位置,直到使用其他方法移動它。
你還必須讓相機成爲場景的一個孩子(通常不是默認的)'scene.add(camera)' – mattdlockyer
確保'nanobot.position.set(0,0,-100);'是**之後**'camera.add(nanobot);':'position'是相對於相機的本地位置。 [threejs r89] – zwcloud
這裏的另一種方法 - 運用相機的quarternion爲矢量(dist
就是你要如何從相機遠離對象來定):
var vec = new THREE.Vector3(0, 0, -dist);
vec.applyQuaternion(camera.quaternion);
nanobot.position.copy(vec);
使得該對象的相機沒的孩子(這適用於@ WestLangley的答案:Three.js: Get the Direction in which the Camera is Looking)
如果您希望它始終面向相機,您也可以複製相機的旋轉。如果您想在此之後調整對象的確切位置,則可以翻譯X,translateY等。
您可以顯示一些代碼,以便我們可以看到錯誤的位置? – gaitat