Разъяснение ориентации слушателя OpenAL

#position #orientation #openal

#позиция #ориентация #openal

Вопрос:

Какова цель первого вектора в ориентации слушателя? В руководствах говорится, что два вектора «at» и «up», но разве установка позиции уже не определяет, где находится «at»?

Я также в замешательстве, почему во всех руководствах позиция устанавливается на 0,0,0, но устанавливается ориентация «на» 0,0, -1.

Чего мне не хватает?

Ответ №1:

Думайте о «AT» как о струне, прикрепленной к вашему носу, а о «UP» — как о струне, прикрепленной к макушке вашей головы.

Без шнура, прикрепленного к макушке вашей головы, вы могли бы наклонять голову по часовой стрелке / против часовой стрелки и по-прежнему смотреть на «AT». Но поскольку вы можете наклонять голову, компьютер не может быть уверен, должно ли что-то каноническое «справа» звучать в вашем правом ухе (верхняя часть головы обращена «вверх») или в левом ухе (верхняя часть головы обращена «вниз», потому что вывверх ногами). Векторы «AT» и «UP» закрепляют «голову» слушателя таким образом, чтобы не было двусмысленности в отношении того, в какую сторону он обращен и в какую сторону он ориентирован.

На самом деле вам нужно установить 3 вектора: положение, «НА» и «ВВЕРХ». Позиция 0,0,0 означает, что голова находится в центре вселенной. «НА» 0,0, -1 означает, что голова смотрит на экран, а «ВВЕРХ» обычно равно 0,1,0, так что верхняя часть «головы» направлена вверх. При такой настройке все, что пользователь видит в левой части экрана, будет звучать в его левом ухе. Единственный раз, когда вы выбираете что-то другое, — это игра от первого лица, в которой игрок перемещается в виртуальном 3D-мире. На самом деле векторы не обязательно нормализовать, поэтому вы можете использовать 0,42,0 для «ВВЕРХ», и это будет делать то же самое, что и 0,1,0.

Если вы измените «AT» и «UP» от их канонических значений, векторы ДОЛЖНЫ быть перпендикулярны.

Комментарии:

1. Таким образом, в основном «at» — это прямой вектор, а up — вверх.