【发布时间】:2016-09-03 01:09:02
【问题描述】:
谁能告诉我为什么我从像 {x:0.50516157, y:-0.62950189, z:0} 这样的位置值得到像 {x:Infinity, y:-Infinity, z:-Infinity}我正在尝试将我的位置矢量投影到相机上。我在此找到了类似的查询Converting World coordinates to Screen coordinates in Three.js using Projection,但该解决方案并不能解决我的问题。如果有人可以帮助我,那将真的很有帮助,而且可以节省时间。
var screenvector = new THREE.Vector3();
var position = new THREE.Vector3();
position = convertLatLontoVec3(lat, lng).multiplyScalar(radius);
//convertLatLontoVec3(returns new THREE.Vector3(x, y, z);)
screenvector.copy(position);
//till here during debugging i can find the values of position.x, .y, .z
screenvector.project(camera); //But once this step is executed all the values are becoming infintiy. I don't understand why is it happening.
【问题讨论】:
-
检查
camera.projectionMatrix以及camera.matrixWorld是否可逆(即new THREE.Matrix4().getInverse(camera.matrixWorld))我们无法在不知道您的相机设置的情况下回答您 -
嗯,这是投影还是非投影?只是一个疯狂的猜测,没有费心打开 NDC 的图表,但我认为如果你在镜头后面,你应该得到无穷大。您可能想要unproject 的屏幕矢量
-
感谢您的回复,为了更好地理解这是我的代码,请看一下,如果有什么问题pastebin.com/ei7T0mXr
-
经过一番挣扎,我得到了答案。在将我的屏幕矢量投影到相机上之前,我忘记更新我的 camera.updateMatrixWorld();现在我有了有效的坐标..
标签: javascript 3d three.js