Что такое единица измерения в Three.js?

91
10

Скажем, у меня есть сетка. И хотите расположить его в 3D, используя следующее:

mesh.position.set(5, 5, 5);

Что это за цифры? Я уверен, что это не 5 пикселей для х. Например:

mesh.position.x 

Действительно вернул бы 5, но это, где вещи становятся хитрыми.

Я использую raycaster для того, чтобы узнать, где находится мышь, которая является либо Normalized Coordinate System, либо Pixel, используя следующее:

function onMouseMove(event){ // Calculate mouse movements
// Normalized Coordinate System
mouse.ncs.x = (event.clientX / window.innerWidth) * 2 - 1;
mouse.ncs.y = - (event.clientY / window.innerHeight) * 2 + 1;
// Pixel coordinates
mouse.p.x = event.clientX;
mouse.p.y = event.clientY;
};

Но как бы я сказал, что 5 равно этому количеству пикселей? Любая помощь по этому вопросу будет высоко ценится.

спросил(а) 2018-11-28T21:27:00+03:00 1 год, 11 месяцев назад
1
Решение
99

Когда вы используете Raycaster.setFromCamera() вы должны использовать нормализованные координаты, поэтому из [-1, 1], в которую, похоже, вы уже конвертируете. Единицы измерения трехмерного мира не имеют значения, луч рассчитает, пересекается ли он вашим объектом или нет. Попробуйте следовать этому примеру в документации.

Чтобы ответить на ваш первоначальный вопрос, Three.js и WebGL в целом изначально не имеют единиц. Вы можете делать вид, что единицы измерения в дюймах, метрах, какими бы вы ни были. Единственный случай, когда единицы измерения имеют значение, - это THREE.CSS3DRenderer, где единицы измерения представляют собой смесь пикселей и единиц, потому что вы имеете дело с элементами HTML.

ответил(а) 2018-11-28T21:38:00+03:00 1 год, 11 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема