Разъяснение по ориентации слушателя OpenAL - PullRequest
3 голосов
/ 22 октября 2011

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

Меня также смущает, почему во всех уроках позиция установлена ​​на 0,0,0, а ориентация - на 0,0, -1.

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

1 Ответ

2 голосов
/ 23 октября 2011

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

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

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

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

...