我试图把一个对象放在相机前面,但一直未能。如何在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