Вектор направления взгляда из 3D вьюпорта

Для того чтобы получить вектор направления 3D вьюпорта, например, чтобы определить расположение вьюпорта относительно какого-либо объекта сцены, можно воспользоваться функцией region_2d_to_vector_3d из модуля view3d_utils.

Чтобы получить вектор “взгляда” из вьюпорта при помощи функции region_2d_to_vector_3d в первую очередь нужно определить указатель на рабочую область 3D вьюпорта – area.

Для этого пробежим циклом по открытым рабочим областям, пока не дойдем до рабочей области 3D вьюпорта:

В ней нам нужно получить указатель на регион собственно окна вьюпорта. Для его нахождения точно так же пробежим циклом по регионам:

Получив указатель на регион окна, мы можем вызвать для него функцию region_2d_to_vector_3d, которая вернет нам нужный вектор направления взгляда:

В параметрах функции мы передаем:

  1. region – указатель на регион, для которого вызывается проверка
  2. region.data – указатель на данные этого региона
  3. центральную точку текущего региона – точку из которой считается направление взгляда

В результате мы получаем нормализованный вектор, направленный из центральной точки 3D вьюпорта вдоль направления взгляда.

Например, для фронтального вида – когда мы смотрим на объект спереди, полученные вектор взгляда будет направлен вдоль оси Y и иметь длину равную 1:

(-0.0000, 1.0000, 0.0000)

0 0 голоса
Article Rating
Подписаться
Уведомить о
guest

0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии