Измените систему координат / ось вверх и переместите вектор в «ту же» эквивалентную позицию - PullRequest
0 голосов
/ 26 апреля 2020

Я делаю проект с тремя. js, но на самом деле это всего лишь математика.

Обычно у меня есть система по оси Y.

Представьте, что объект расположен в 0, 0,0 (хотя может располагаться где угодно).

У меня есть точечный светильник в положении, может быть любым, кроме как, например, сказать (130,75,50), всегда указывая на 0,0, 0;

У меня есть возможность изменить, какая ось направлена ​​вверх (x, y, z, -x, -y, -z), и я могу изменить ее по своему желанию, с любой на любую. Когда я делаю это, я хочу, чтобы источники света находились в «одной и той же позиции» (с точки зрения пользователя, поэтому матрицу источников света / вектор положения необходимо вращать, чтобы переместить ее в эквивалентную позицию, чтобы сохранить освещение одинаковым.

Так как свет может быть в любом положении, а ось вверх может go от любого к любому, я не могу обойтись простым способом соответственно повернуть вектор. Я уверен, что должен быть какой-то расчет, а не я ось для вращения в каждом случае (например, переход от + x к -z). Надеюсь, это имеет смысл.

y is up

z is up

...