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

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

Меня также смущает, почему все учебники устанавливают положение 0,0,0, но устанавливают ориентацию «на» 0,0,-1.

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


person AGuyInAPlace    schedule 22.10.2011    source источник


Ответы (1)


Думайте о «АТ» как о струне, прикрепленной к вашему носу, а о «ВВЕРХ» — как о струне, прикрепленной к макушке вашей головы.

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

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

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

person Karl    schedule 23.10.2011
comment
Так что в основном at — это прямой вектор, а вверх — это вверх. - person Brian_Entei; 27.07.2015