2014-01-30 6 views
4

Это выдержка из Основы компьютерной графики автор Peter Shirley. На странице 114 (в 3-м издании гласит:Как вы определяете вектор просмотра?

Мы хотели бы, чтобы иметь возможность изменить точку зрения в 3D и смотреть в любом направлении Есть множество условностей для определения просмотра положения и ориентации. . Мы будем использовать следующий:

  • положение глаз е
  • направление взгляда г
  • вид вверх вектор т

Положение глаз - это местоположение, которое глаз «видит». Если вы считаете графики графическим процессом, это центр объектива. Направление взгляда - это любой вектор в том направлении, в котором находится зритель . Вектор просмотра - любой вектор в плоскости, который и делит пополам голову зрителя на правую и левую половинки и указывает « небо» для человека, стоящего на земле. Эти векторы обеспечивают нам достаточно информации, чтобы создать систему координат с началом e и uvw основе .....

Смелое предложение является один запутанным меня больше всего. К сожалению, книга содержит только очень простые и грубые диаграммы и не дает никаких примеров.

Означает ли это предложение, что все векторы просмотра - это просто (0, 1, 0)?

Я попробовал это на некоторых примерах, но это не совсем соответствовало данным решениям (хотя иногда оно приближалось).

ответ

2

Я взял класс графики в прошлом году, и я довольно ржавый. Я ссылался на некоторые старые заметки, поэтому здесь.

Я думаю, что выделенная жирным шрифтом просто пытается объяснить, что в конечном счете будет означать, что вектор просмотра (VUP) будет означать в одном случае для введения, а не во всех случаях. Формулировка немного странная; вот переписывание: «Подумайте, кто стоит на земле. VUP в этом случае будет вектором, который делит пополам голову зрителя и указывает на небо».

Для определения стандартного восходящего вектора, сделайте следующее:

  1. Нормализовать g.
  2. g_norm x (0,1,0) дает view-right, или вектор справа от вашей точки зрения камеры
  3. view-right x g дает VUP.

Затем вы можете применить поворот, если хотите.

+0

Из того, что я понял, вектор просмотра как-то естественно вытекает из двух основных векторов, которые мы установили: местоположение камеры и то, на что она смотрит (посмотреть). Цель состоит в том, чтобы использовать 'e',' g' и 'v' для создания основы для системы координат камеры. – CodyBugstein

+0

'v'? Это 'VUP'? Или опечатка? В вашем оригинальном сообщении говорится, что 'VUP' является' t'. – esel

+0

Извините, что вы правы - он должен сказать 't'. Причина в том, что 'v' используется как одна из оснований пространства камеры' u, v, w' – CodyBugstein

5

Короткий ответ: вектор просмотра не является производным от других компонентов: вместо этого он представляет собой пользовательский ввод, выбранный так, чтобы обеспечить правильную сторону камеры.Или, другими словами, вектор просмотра - , как вы сообщаете своей системе камер, какое направление «вверх», для ориентации камеры.


Причина вам нужен вектор вида деятельности является то, что позиция и взгляд направление камеры не достаточно, чтобы полностью определить его позу: вы можете вращать камеру вокруг оси позиции/взора. Для завершения блокировки камеры необходим вектор просмотра. и поскольку люди обычно предпочитают смотреть на вещи вправо, вектор просмотра обычно является фиксированным направлением, определяемым тем, как сцена ориентирована в вашем координатном пространстве.

Теоретически вектор просмотра может быть в любом направлении, но на практике «вверх» обычно является координатным направлением. Какая координата «вверх» является условной: в вашем случае кажется, что ось Y «вверх», но некоторые системы предпочитают ось Z.

Это, я еще раз повторю: вы можете выбрать практически любое направление, которое вы хотите. Если вы хотите, чтобы ваш POV от первого лица «наклонился» (например, чтобы посмотреть вокруг угла или указать интоксикацию), вы можете настроить свой вектор просмотра для достижения этого. Кроме того, рассмотрите управление камерой в игре, такой как Super Mario Galaxy ...

Смежные вопросы