Theory/LeftHandAndRightHandCoordinateSystems

Rib 

Левосторонняя и правосторонняя системы координат


Пример:

Результат рендеринга:


В трехмерном евклидовом пространстве возможны два варианта системы декартовых прямоугольных координат: левосторонняя и правосторонняя. Они отличаются расположением координатных осей между собой. В левой системе, если расположить ось Х перпендикулярно линии взгляда слева-направо, а ось Y перпендикулярно снизу-вверх, то ось Z будет направленна от наблюдателя; в правой — с точностью до наоборот.

Левая (слева) и правая (справа) координатные системы

Rib-файлы, созданные с помощью Renderman Studio и Renderman Artist Tools


В отличие от RenderMan'a в большинстве 3D пакетов правосторонняя система координат (СК). В Rib-файлах, созданных в Maya и Pixar's RenderMan Studio (RMS), используется видовое преобразование с масштабированием на -1 по оси Z. Это делается для того, чтобы мировая СК (внутри WorldBegin/WorldEnd-блока) стала правосторонней. Предшественник RMS, Renderman Artist Tools (RAT) также добавляет ReverseOrientation непосредственно сразу после WorldBegin. Это делается поскольку, несмотря на использование правой мировой СК, RAT перечисляет элементы поверхностей (вершины, полигоны и т.д.) в «левом» порядке (т.е. нормалями внутрь в понимании правой СК). Команда ReverseOrientation гарантирует, что нормали поверхностей будут корректно ориентированы. В RMS и Renderman for Maya Pro вершины перечисляются в правильном правостороннем порядке, поэтому команда ReverseOrientation не требуется.

Rib-файлы создаваемые Houdini

Порядок перечисления точек поверхностей в Rib, создаваемых Houdini та же что и в Rib RAT (т.е. нормалями внутрь). Однако, вместо использования команды ReverseOrientation в Rib-файлах Houdini используется команда Orientation “rh”, вставляемая непосредственно после WorldBegin.

Rib-файлы создаваемые в Cutter

Rib-файлы, создаваемые в Cutter, также как и те, что приводятся в листингах уроков, изначально подразумевают правостороннюю систему координат для World-блока и вершины в них перечисляются в правостороннем порядке.

Rib-файлы в технической документации Pixar


Традиционно в примерах технической документации Pixar в Rib-файлах система координат камеры — правосторонняя, а world-блока — левосторонняя. Другими словами ось Z мировой СК направлена от камеры. В отличие от RMS, RAT, Houdini и Cutter-а, в которых правосторонний world-блок направляет ось Z к камере.

Возможные трудности при работе с нормалями квадратичных поверхностей.

В то время как ReverseOrientation решает проблему вывернутых нормалей в Rib файлах, созданных в RAT (плагин mtor в Maya) это выходит боком для квадратичных поверхностей, которые как раз наоборот выворачиваются на изнанку. Хотя Maya и Houdini не используют квадратичные поверхности с подобной проблемой можно столкнуться при использовании квадратичных поверхностей в написанных вручную Rib-файлах. Более подробно об решении этой проблемы будет написано в последующих статьях.


Разберем по этапам приведенный выше пример.



Устанавливаем перспективную проекцию с углом зрения в 40 градусов и размером кадра 320 на 240 пикселей. В данный момент активная СК — СК камеры:



Команды трансформаций применяются к преобразуемой СК в обратном порядке. В первую очередь отрицательное масштабирование по оси Z:

Потом пововрот на 20 крадусов вокруг оси Y, на 40 градусов вокруг оси X:


И наконец сдвиг преобразуемой СК на 3 вдоль оси Z СК камеры:


Преобразуемая СК становится мировой и текущей:



Выбираем красный цвет. Вставляем диск. Выбираем желтый цвет. Вставляем полигон размером 1 на 1 и задаем для него текстурные координаты “st”:

Завершаем описание трехмерной сцены.

Приведенные выше иллюстрации поясняют эффект каждой из команд видовых преобразований. Иллюстрации сделаны исходя из предположения, что камера остается неподвижной, а трансформации затрагивают мировую СК, в которой находятся полигон и диск. Хотя, как подсказывает принцип относительности, полагать неподвижным с равным успехом можно и сам мир (главное не путаться в знаках поворотов и сдвигов).


Источники

1. Оригинальная статья Left-hand & right-hand coordinate systems. на www.fundza.com: http://fundza.com/rib/example4/example4.html