ПРОГРАММИРОВАНИЕ в 3D на основе POV-Ray (версия 3.7 )
Описание мастер-класса
2.ПРОГРАММИРОВАНИЕ В POV-Ray
2.1 Краткое описание скриптового языка
В POV-Ray встроен мощный скриптовый язык. Ознакомиться с ним можно в Help программы. В целом синтаксис очень похож на синтаксис языка программирования СИ. Например для комментирования используются символы // и /* */.
#declare MyArray = array[10] //- одномерный массив #declare MyGrid = array[4][5] //- двумерный массив
Операторы цикла -#while и #for
Пример синтаксиса оператора #while. Оператор #end играет роль операторной скобки.
2.2 Встроенные функции
В состав языка включено большое число функций. Именно они и определяют мощь встроенного языка.. Функции можно разделить на несколько групп
2.3 Группировка операторов
Группе операторов можно присвоить имя. А затем работать с ними как с единым целым. В терминах POV-Ray это означает создать объект.
Например можно создать объект MyObject
2.4 Создание и использование Мacro
Есть другой способ объединения операторов, позволяющий передавать параметры в структурную единицу. Это аналог подпрограммы со списком параметров. Декларация макро выглядит как
3. Пример на програмирование
Применим цикл #for для создания объекта. Возьмем тороид и будем вращать его вокруг оси Z.
Угол поворота равен 30 градусов. Для раскраски тороидов применим текстуру - зеленый мрамор. Блики создает инструкция phong.
В POV-Ray встроено множество различных функций. Они могут использоваться для построения поверхностей. Понятно, что разобраться с некоторыми функциями не так просто. Но можно поэкспериментировать с параметрами, в расчете на получение нового зрительнорго образа. Вот первый пример
Описание мастер-класса
- 1. Введение
- 2. Программирование В POV-Ray
- 2.1 Краткое описание скриптового языка
- 2.2 Встроенные функции
- 2.3 Группировка операторов
- 3. Пример на програмирование
- 4. Использование функций
- 5. Примечания к практической работе
1. Введение
POV-Ray бесплатная программа для 3D моделирования. Сцена создается в виде текстового файла. Интерфейс программы максимально простой, поэтому уже на первом занятии можно создать сцену. Программа имеет встроенный набор примитивов и даже сцен. Отличительная особенность программы - мощная система текстурирования и неплохой рендер. Многие возможности программы раскрываются при использовании встроенного скриптового языка.2.ПРОГРАММИРОВАНИЕ В POV-Ray
2.1 Краткое описание скриптового языка
В POV-Ray встроен мощный скриптовый язык. Ознакомиться с ним можно в Help программы. В целом синтаксис очень похож на синтаксис языка программирования СИ. Например для комментирования используются символы // и /* */.
- Все операторы языка начинаются с символа #.
- Объявление переменной завершается символом ;.
- Имя переменной чувствительно к регистру. Строчные и заглавные символы - это разные символы.
- Все операторы языка начинаются с символа #.
- Тип переменных объявлять не надо. Он - универсальный Предназначен для хранения чисел и символов.
- Все переменные должны быть определены до их первого использования.
- В языке есть встроенные константы, которые не требуют объявления.
- Для объявления переменных используются директивы #declare и #local. #declare - объявляет глобальную переменную.
- Способ комментирования в стиле СИ.
- Можно использовать многомерные массивы. Пример объявление массива
#declare MyArray = array[10] //- одномерный массив #declare MyGrid = array[4][5] //- двумерный массив
Операторы цикла -#while и #for
Пример синтаксиса оператора #while. Оператор #end играет роль операторной скобки.
#declare Count=0; #while (Count < 5) //строки с операторами //....................... //....................... #declare Count=Count+1; #endПример синтаксиса оператора #for. С управляющми операторами и выводом отладочной информации через оператор #debug в окно сообщений
#for (i, 1, 5 ,1) #if (i=4) #debug "\n*** Output in message window ***\n" #else #debug concat(str(i*10,0,1), "\r" ) #end #end
2.2 Встроенные функции
В состав языка включено большое число функций. Именно они и определяют мощь встроенного языка.. Функции можно разделить на несколько групп
- Математические функции
- Функции для работы со строками
- Функции для генерации случайных чисел
- Функции для работы с векторами.
2.3 Группировка операторов
Группе операторов можно присвоить имя. А затем работать с ними как с единым целым. В терминах POV-Ray это означает создать объект.
Например можно создать объект MyObject
#declare MyObject =union{ //....................... //....................... }Директива union объединяет все операторы в одно целое. Теперь можно использовать группу операторов по имени. Например
object{MyObject scale<sx,sy,sz> rotate< rx,ry,rz> translate <tx,ty,tz>}С помощью операторов scale, rotate, translate объект MyObject можно масштабировать, вращать и перемещать по сцене.
2.4 Создание и использование Мacro
Есть другой способ объединения операторов, позволяющий передавать параметры в структурную единицу. Это аналог подпрограммы со списком параметров. Декларация макро выглядит как
#macro MyMacro( P1, P2 ) //....................... //....................... #endВызов макро производится, например, так MyMacro( 10, 2 ) . Здесь формальные параметры P1, P2 заменены численными
3. Пример на програмирование
Применим цикл #for для создания объекта. Возьмем тороид и будем вращать его вокруг оси Z.
Угол поворота равен 30 градусов. Для раскраски тороидов применим текстуру - зеленый мрамор. Блики создает инструкция phong.
#local Tex=texture{pigment{Jade}finish {phong 1.5 phong_size 50}}; #local R=5; #for(i,0,180,30) torus{R,R*0.1 rotate<0,0,i>scale<0.7,1,1> texture{ Tex}} #end
4. Использование функций
В POV-Ray встроено множество различных функций. Они могут использоваться для построения поверхностей. Понятно, что разобраться с некоторыми функциями не так просто. Но можно поэкспериментировать с параметрами, в расчете на получение нового зрительнорго образа. Вот первый пример
#declare R=1.3; #declare F=function {f_mesh1(x,y,z,0.1,0.1,1,0.09,1) - 0.015} isosurface { function { F(f_ph(x*1,y*1,z), f_r(x,y,z)-0.8, f_th(x,y,z)) } max_gradient 5 pigment {rgb <1>} finish {phong 0.5 phong_size 10}}
А вот - второй пример.
#declare Bend=0.5; #declare Sharpness=1.0; isosurface { function { f_torus(y-pow(abs(x),Sharpness)*Bend,z,x,0.8,0.1) } max_gradient 1.5 pigment {rgb x} finish {phong 1.5 phong_size 50}} isosurface { function { f_sphere(y-pow(abs(x),Sharpness)*Bend,z*2,x,0.6) } max_gradient 2.0 pigment {rgb x} finish {phong 1.5 phong_size 50 } }
Комментариев нет:
Отправить комментарий