シーンではなく、カメラを基準にして立方体を配置しようとしています。シーンに配置するには(表示させる必要があります)、立方体のカメラ空間座標に対応するシーン座標を知る必要があります。この関数「projectionMatrixInverse」をTHREE.Cameraで見つけました。これには「multiplyVector3」と呼ばれる優れた関数があり、ベクトル(1,1,1)を次のようなシーン空間に変換できるようになることを望んでいました。
var camera, myvec, multvec; // (and others)
camera = new THREE.OrthographicCamera( window.innerWidth / - 2, window.innerWidth / 2, window.innerHeight / 2, window.innerHeight / - 2, - 2000, 1000 );
camera.position.x = 200;
camera.position.y = 100;
camera.position.z = 200;
myvec = new THREE.Vector3(1,1,1);
console.log("myvec: ", myvec);
multvec = camera.projectionMatrixInverse.multiplyVector3(THREE.Vector3(1,1,1));
console.log("multvec: ", multvec);
事は、私が得るコンソールで:
myvec: Object { x=1, y=1, z=1}
TypeError: v is undefined
var vx = v.x, vy = v.y, vz = v.z;
myvec
multiplyVector3は、コンソールがオブジェクトであると言っていても、単にmyを受け入れないか、未定義であると言います。理解できません。