位置(x、y、z)の3Dオブジェクトがあります。そのオブジェクトの画面位置(x、y)を計算するにはどうすればよいですか?
私はそれを検索しましたが、1つの解決策は、投影行列を見つけてから、3D位置ポイントにこの行列を掛けて2D表示面(コンピューター画面)に投影する必要があることです。しかし、Three.jsでこのマトリックスを見つける方法がわかりません。
このような変換関数を試しましたが、間違った結果になります
function Point3DToScreen2D(point3D){
var screenX = 0;
var screenY = 0;
var inputX = point3D.x - camera.position.x;
var inputY = point3D.y - camera.position.y;
var inputZ = point3D.z - camera.position.z;
var aspectRatio = renderer.domElement.width / renderer.domElement.height;
screenX = inputX / (-inputZ * Math.tan(camera.fov/2));
screenY = (inputY * aspectRatio) / (-inputZ * Math.tan(camera.fov / 2));
screenX = screenX * renderer.domElement.width;
screenY = renderer.domElement.height * (1-screenY);
return {x: screenX, y: screenY};
}
少し早いですがお礼を。