我试图相对于相机放置一个立方体,而不是相对于场景。问题是,要将它放置在场景中(我必须让它显示),我必须知道对应于立方体相机空间坐标的场景坐标。我在 THREE.Camera 中找到了这个函数“projectionMatrixInverse”。它有一个很好的函数,叫做“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;
multiplyVector3 根本不接受 my myvec
,或者说它是未定义的,即使控制台说它是一个对象。我不明白。