跟随3D空间并正确朝向相机旋转

时间:2016-02-25 15:06:49

标签: 3d three.js 2d

我试图让一些3D文字跟随移动的立方体。我希望文本始终平滑地显示在屏幕上,就好像在屏幕空间中移动一样(即使它会在所有轴上移动)。所以它需要在移动时朝向相机进行旋转校正。我试图通过这里(Converting 3D position to 2d screen position [r69!])来调整答案以进行定位及其工作,但我最后的计算(* 1000)是完整的猜测工作(参见下面的函数)。它应该是什么?我如何解决相机的旋转校正?

function toScreenPosition(obj, camera)
{
var vector = new THREE.Vector3();

//var widthHalf = 0.5*renderer.context.canvas.width;
//var heightHalf = 0.5*renderer.context.canvas.height;

obj.updateMatrixWorld();
vector.setFromMatrixPosition(obj.matrixWorld);
vector.project(camera);

//vector.x = ( vector.x * widthHalf ) + widthHalf;
//vector.y = - ( vector.y * heightHalf ) + heightHalf;

//how should I be calculating position here?
vector.x = vector.x * 1000;
vector.y = - vector.y * 1000;

console.log(vector.x + 'px, ' + vector.y + 'px');

return { 
    x: vector.x,
    y: vector.y
};

}

我的完整工作示例如下: http://www.asquare.org/in-progress/webgldemo/rotation-test.html

1 个答案:

答案 0 :(得分:0)

您只需要将obj的lookAt设置为相机:

obj.lookAt( camera.position );