Числа, векторы и система координат
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 по умолчанию, выглядит так:
Ось Х направлена вправо, ось 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) изображения в пикселах.
Вот что получится:
Неплохо для начала.
Заметим, что знаки "плюс" и "минус" работают в настройках POV-Ray как переключатели: "плюс" устанавливает ту или иную настройку, "минус" отменяет ее. Если же настройка по смыслу не может переключаться, то обычно допустимы оба знака. Так, в нашем случае можно записать:
povray -itest -w320 -h240
Комментарии
comments powered by Disqus