Числа, векторы и система координат

POV-Ray работает с вещественными числами, записанными в различных формах:

1, -20.1, .5, 0.001, 1.2e4, -12.3e-10, ...

совершает над ними операции, например,

1+1, 2*5, 100/15, ...

и реализует множество математических функций, в частности,

sin(2*pi), sqrt(10), ...

то есть делает все то, что и полагается делать языку программирования.

Система координат, принятая в POV-Ray по умолчанию, выглядит так:

ref_frame.png

Ось Х направлена вправо, ось Y -- вверх, а ось Z -- внутрь монитора. Это умолчание можно изменять.

Вектором называется точка в пространстве, задаваемая следующим образом:

<x,y,z>

где 'x', 'y' и 'z' -- соответствующие координаты точки. Они могут задаваться с помощью чисел или переменных, например

<1,20,-5>

Начало отсчета имеет координаты <0,0,0>.

Чтобы получить изображение, нам понадобится объект для съемки, освещение, и камера. Вот с нее и начнем.

Камера

"Фотографию" сцены, которую создает POV-Ray, невозможно создать без камеры (camera). Точка, в которой располагается камера, задается параметром location. Параметр look_at определяет точку, куда направлена камера. В качестве примера, поместим камеру в точку <0,0,-10> и направим ее в начало отсчета. Записывается это так:

camera
{ location <0,0,-10>
  look_at <0,0,0>
}

Поле зрение камеры задается параметром angle. Пусть, например, поле зрение будет равно 35 градусам:

camera
{ location <0,0,-10>
  look_at <0,0,0>
  angle 35
}

Источники света

Разместим немного позади и справа от камеры источник света light_source:

light_source
{ <10,20,-20>
  color 1
}

Вектор <10,20,-20> определяет положение источника света, а параметр color -- его яркость. Значение color изменяется от 0 (света нет = полная темнота) до 1 (максимальная яркость). Вообще говоря color задает цвет источника, а 1 в нашем примере заменяет собой тройку <1,1,1>, но об этом мы поговорим немного позже.

В POV-Ray существует несколько типов источников света, в том числе и такие, что не оставляют теней. По умолчанию источник света невидим -- это просто светящаяся точка, но его можно сделать видимым, а также привязать к любому объекту, как встроенному, так и созданному пользователем. Что ж, пора переходить к объектам.

Простые объекты

Нам нужен объект для съемки. POV-Ray располагает обширной библиотекой готовых объектов. Вот, например, как задается сфера:

sphere
{ <0,0,0>,2
}

Первый вектор определяет положение центра сферы, а следующее за ним число -- ее радиус. Наша сфера расположена в начале координат, а ее радиус равен 2.

По умолчанию сфера окрашивается в черный цвет. Пигмент (краситель), задающий цвет объекта, определяется в блоке pigment:

sphere
{ <0,0,0>,2
  pigment
  { color <1,1,1> }
}

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

Пример

Собирая все вместе, получим:

camera
{ location <0,0,-10>
  look_at <0,0,0>
  angle 35
}

light_source
{ <10,20,-20>
  color 1
}

sphere
{ <0,0,0>,2
  pigment
  { color <1,1,1> }
}

Пора "попросить" POV-Ray оттрассировать это. Сохраним сцену в файле test.pov и запустим POV-Ray командой:

povray +itest +w320 +h240

Опция +i задает имя файла, из которого вводятся данные (input): test.pov (расширение указывать не обязательно, POV-Ray предполагает, что это будет .pov). Опции +w и +h с последующими цифрами задают ширину (width) и высоту (height) изображения в пикселах.

Вот что получится:

test.png

Неплохо для начала.

Заметим, что знаки "плюс" и "минус" работают в настройках POV-Ray как переключатели: "плюс" устанавливает ту или иную настройку, "минус" отменяет ее. Если же настройка по смыслу не может переключаться, то обычно допустимы оба знака. Так, в нашем случае можно записать:

povray -itest -w320 -h240


Комментарии

comments powered by Disqus