我试图把一个物体放在相机前面,但是还没有.
我正在使用FlyControls移动相机,现在我想在它前面放一个物体.我怎样才能做到这一点?我尝试了很多不同的方法,但我没有成功.
谢谢
Tim*_*Tim 16
您是否尝试过将物体作为相机的一个孩子,然后将其向前翻译?
camera.add(nanobot);
nanobot.position.set(0,0,-100);
Run Code Online (Sandbox Code Playgroud)
上面将纳米机器人永久地放置在相机前面的100个单位......这就是它将保留到你的位置:
camera.remove(nanobot);
Run Code Online (Sandbox Code Playgroud)
...在此之前它应该保持在全球空间中的位置,直到您使用其他方法移动它.
小智 5
我正在使用 Three.js r88 并从 Kaspar Lee 发布的内容开始制定了一个解决方案。
function updatePositionForCamera(camera) {
// fixed distance from camera to the object
var dist = 100;
var cwd = new THREE.Vector3();
camera.getWorldDirection(cwd);
cwd.multiplyScalar(dist);
cwd.add(camera.position);
myObject3D.position.set(cwd.x, cwd.y, cwd.z);
myObject3D.setRotationFromQuaternion(camera.quaternion);
}
Run Code Online (Sandbox Code Playgroud)
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 );
Run Code Online (Sandbox Code Playgroud)
我尝试计算相机方向的方向向量,然后计算穿过腔室的线,在这条线上距相机一定距离处放一个点
归档时间: |
|
查看次数: |
8772 次 |
最近记录: |