Привет, у меня есть плоскость в 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)
}
он не работает с текущей версией (r70) из three.js – Syd
, если я не делаю что-то неправильно ... Я пробовал использовать это расширение – Syd
Проверьте свою консоль, там некоторые изменения, поэтому вам нужно Обновите это. – mcode