0
您好,我在three.js中有一个宽度为5000和高度为5000的平面。用下面的代码将3d坐标转换为2d,更具体的我得到左上角的点飞机和右下角。 我用位置x:0,y:0,z:70000和旋转x:0,y:0,z:0初始化我的相机。将3d坐标转换为2D坐标(平面网格)
如果我不(使用轨道控制)转动我的相机,我得到的坐标是正确的:
但是如果我转动我的相机的坐标是不正确的,我不能找出原因。 这里是我到目前为止的代码:
var vec3 = new THREE.Vector3();
vec3.set(_that.model.position.x - 2500, _that.model.position.y + 2500, _that.model.position.z); // top left corner
vec3.project(_that.vise.camera);
var percX = Math.abs(vec3.x + 1)/2;
var percY = Math.abs(-vec3.y + 1)/2;
this.topLeft = {
x : percX * _that.vise.options.generic.container.clientWidth,
y : percY * _that.vise.options.generic.container.clientHeight
}
var vec4 = new THREE.Vector3();
vec4.set(_that.model.position.x + 2500, _that.model.position.y - 2500, _that.model.position.z); // top left corner
vec4.project(_that.vise.camera);
var percX = Math.abs(vec4.x + 1)/2;
var percY = Math.abs(-vec4.y + 1)/2;
this.bottomRight = {
x : percX * _that.vise.options.generic.container.clientWidth,
y : percY * _that.vise.options.generic.container.clientHeight
}
this.projectedVector = {
x : Math.abs(this.topLeft.x - this.bottomRight.x),
y : Math.abs(this.topLeft.y - this.bottomRight.y)
}
它不适用于three.js – Syd
的当前版本(r70),除非我做错了什么......我试过使用这个扩展 – Syd
检查你的控制台,有一些变化,所以你必须更新这个。 – mcode