Я делаю проект с тремя. js, но на самом деле это всего лишь математика.
Обычно у меня есть система по оси Y.
Представьте, что объект расположен в 0, 0,0 (хотя может располагаться где угодно).
У меня есть точечный светильник в положении, может быть любым, кроме как, например, сказать (130,75,50), всегда указывая на 0,0, 0;
У меня есть возможность изменить, какая ось направлена вверх (x, y, z, -x, -y, -z), и я могу изменить ее по своему желанию, с любой на любую. Когда я делаю это, я хочу, чтобы источники света находились в «одной и той же позиции» (с точки зрения пользователя, поэтому матрицу источников света / вектор положения необходимо вращать, чтобы переместить ее в эквивалентную позицию, чтобы сохранить освещение одинаковым.
Так как свет может быть в любом положении, а ось вверх может go от любого к любому, я не могу обойтись простым способом соответственно повернуть вектор. Я уверен, что должен быть какой-то расчет, а не я ось для вращения в каждом случае (например, переход от + x к -z). Надеюсь, это имеет смысл.

