Pov ray for windows что это за программа

Обновлено: 07.07.2024

Эта статья является третьей в цикле, посвященном различным реальным приложениям, которые могут использоваться для тестирования процессоров, компьютеров, ноутбуков и рабочих станций и которые в дальнейшем будут положены в основу нового тестового пакета iXBT Application Benchmark 2017. Напомним, что в первой статье данного цикла мы рассматривали два специализированных приложения LAMMPS и NAMD, которые используются для решения задач молекулярной динамики. Во второй статье мы уделили внимание специализированным математическим пакетам FFTW и GNU Octave. В нынешней же мы рассмотрим программы, которые используются для рендеринга трехмерных сцен. Всего рассматривается три популярных рендера: POV-Ray 3.7, LuxRender 1.6 и Вlender 2.77a.

POV-Ray 3.7

POV-Ray — это бесплатная программа с доступным исходным кодом, которая позволяет создавать трехмерные, фотореалистичные изображения с использованием техники рендеринга, называемой трассировкой лучей.

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

Имеются скомпилированные под Windows версии программы.

Вообще, скорость работы рендеров часто измеряется в PPS (Pixel Per Second), то есть в количестве отрендеренных пикселей за секунду. Но в нашем случае измеряется именно время рендеринга всей сцены.


LuxRender 1.6 x64 OpenCL

LuxRender относится к категории фотореалистичных или физически точных (без допущений) рендеров. Это бесплатная программа с удобным пользовательским интерфейсом. Сцены для LuxRender могут быть подготовлены в различных 3D-программах, таких как Blender, 3DS Max, Maya и пр.

Имеются версии LuxRender под Windows, Mac OS X и операционные системы на базе ядра Linux. При тестировании мы используем 64-битную Windows-версию программы с поддержкой технологии OpenCL (LuxRender 1.6 x64 OpenCL).

На сайте разработчика можно скачать сцену (luxtime.lxs), которую рекомендуется использовать для тестирования.


Вlender 2.77a

В отличие от LuxRender и POV-Ray, Blender) — это уже полноценный редактор трехмерной графики и анимации. Приложение бесплатное и включает в себя средства моделирования, анимации, постобработки и монтажа видео со звуком и, что самое главное, средства рендеринга.

На сайте производителя есть версии этого программного пакета под Mac OS X, Linux и Windows. Для тестирования мы используем 64-битную Windows-версию Вlender 2.77a.

Кроме того, на сайте производителя есть примеры сцен, которые можно использовать для тестирования. Мы используем сцену BMW Benchmark (файл BMW27.blend.zip).


Запуск процесса рендеринга возможен как из интерфейсного окна самой программы (клавиша F12), так и из командной строки. Для тестирования режим запуска из командной строки более удобен. Команда запуска процесса рендеринга имеет огромное количество параметров, ознакомиться с которыми можно, набрав команду blender.exe -h.

Для тестирования мы используем следующую команду:

В данном случае подразумевается, что процесс рендеринга происходит в фоновом режиме (параметр —b) и рендерится только один кадр (параметр -f 1).

Тестовый стенд и методика тестирования

В ходе тестирования замерялось время выполнения тестовых задач.

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

Зависимость результатов от количества ядер процессора

Количество используемых в ходе тестирования ядер процессора Intel Core i7-6950X регулировалось через настройки UEFI BIOS платы Asus Rampage V Edition 10. Напомним, что процессор Intel Core i7-6950X является 10-ядерным, но поддерживает технологию Hyper-Threading, поэтому операционной системой и приложениями он видится как 20-ядерный (имеет 20 логических ядер).

Мы не отключали технологию Hyper-Threading и меняли лишь количество физических ядер процессор от 1 до 10. В дальнейшем мы будем говорить о логических ядрах процессора, количество которых менялось от 2 до 20 с шагом 2.

Частота работы всех ядер процессора фиксировалась и составляла 4,0 ГГц.

Результаты тестирования следующие:


Для всех рендеров время выполнения тестовой задачи зависит от количества процессоров примерно одинаково. При удвоении числа ядер процессора время выполнения теста уменьшается примерно в 2 раза, скорость выполнения тестовых задач меняется почти линейно в зависимости от числа ядер процессора. Это особенно хорошо видно по графику зависимости нормированной скорости выполнения тестовых задач от числа ядер процессора (нормируется относительно времени выполнения задач на двух логических ядрах процессора).


Для рендеров POV-Ray и LuxRender скорость выполнения тестовых задач меняется линейно в зависимости от числа ядер процессора фактически во всем диапазоне: при увеличении числа ядер от 2 до 20 скорость возрастает почти в 10 раз. Для рендера Blender линейная зависимость скорости выполнения тестовой задачи от числа ядер процессора наблюдается лишь в диапазоне от 2 до 12 ядер. При большем количестве ядер (от 12 до 20) зависимость тоже почти линейная, но коэффициент линейной зависимости уже меньше. В результате при увеличении числа ядер от 2 до 12 скорость возрастает почти в 5,5 раза, а при увеличении числа ядер от 2 до 20 скорость возрастает в 7,7 раза.

Зависимость результатов от частоты процессора

Частота ядер процессора Intel Core i7-6950X менялась в настройках UEFI BIOS платы Asus Rampage V Edition 10 путем изменения коэффициента умножения. Частота работы всех ядер фиксировалась (то есть режим Turbo Boost отключался). Использовались все ядра процессора (10 физических/20 логических). Частота менялась от 3,0 ГГц до 4,2 ГГц с шагом 200 МГц.

Результаты тестирования следующие:


Как видно по результатам тестирования, во всех трех рендерах время выполнения тестовых задач зависит от частоты ядер процессора практически одинаково. При увеличении частоты с 3 до 4,2 ГГц (увеличение на 40%) время выполнения тестовых задач уменьшается примерно на 24%.

Зависимость результатов от частоты памяти

Теперь рассмотрим зависимость скорости выполнения тестовых задач от частоты работы памяти. Память DDR4 работала в четырехканальном режиме (по одному модулю на канал), а частота памяти менялась в настройках UEFI BIOS в диапазоне от 1600 МГц до 2800 МГц c шагом в 200 МГц. Тайминги памяти фиксировались и не менялись при изменении частоты. Все ядра процессора работали на частоте 4,0 ГГц.

Результаты тестирования следующие:


Как видим, скорость выполнения тестовых задач во всех рендерах никак не зависит от частоты работы памяти. По крайней мере, в четырехканальном режиме работы пропускной способности памяти DDR4 вполне достаточно даже на частоте 1600 МГц, и дальнейшее увеличение частоты памяти не позволяет ускорить выполнение тестовых задач.

Это типичный для большинства приложений результат. Приложения, скорость работы которых зависит от частоты памяти — это, скорее, исключение из правил.

Заключение

Итак, в этой статье были рассмотрены три приложения для рендеринга: POV-Ray 3.7, LuxRender 1.6 и Вlender 2.77a. На примере 10-ядерного процессора Intel Core i7-6950X было показано, что, во-первых, тестовые задачи в этих пакетах отлично распараллеливаются на все ядра процессора и загружают их на 100%. Именно это обстоятельство позволяет рассматривать данные приложения как отличный вариант для тестирования многоядерных процессоров. Зависимость скорости выполнения тестовых задач от числа ядер процессора является почти линейной для всех рендеров.

Во-вторых, было показано, что время выполнения тестовых задач во всех трех рендерах линейным образом зависит от частоты ядер процессора. При увеличении частоты процессора на 40% время выполнения тестовых задач уменьшается примерно на 24%.

В-третьих, было показано, что время выполнения тестовых задач во всех трех рендерах никак не зависит от частоты памяти DDR4 (в четырехканальном режиме и в диапазоне от 1600 до 2400 МГц).

В следующей статье данного цикла мы рассмотрим два видеоконвертора: HandBrake 0.10.5 и MediaCoder 0.8.45.5852.



Windows XP


Windows Vista


Windows 7


Windows 8


Windows 10

Скриншот POV-Ray

Скриншот POV-Ray

Скриншот POV-Ray

Скриншот POV-Ray

Скриншот POV-Ray

Скриншот POV-Ray

Скриншот POV-Ray

Основная информация о программе

POV-Ray - это программа, которая создает трехмерные, фотореалистичные изображения с использованием техники, называемой трассировкой лучей. Программа читает текстовые файлы, в которых хранится информация описывающая объект и освещение сцены, и генерирует сцену из определенной точки расположения камеры (которая также описана в файле). Язык описания сцен очень похож на C++.

Графики и диаграммы давно стали привычными атрибутами научной литературы. Однако ими научная иллюстрация далеко не ограничивается. Нередко объект исследований настолько сложен (течение жидкости, движение системы твердых тел), что важно увидеть весь процесс происходящих в нем изменений целиком, иначе просто неясно какой график следует строить. Здесь на помощь ученым приходят средства трехмерной визуализации. Об одном из таких средств и пойдет наш рассказ.


Обычная кухня. Нет, это не фотография, а изображение, созданное в программе POV-Ray методом трассировки лучей. Представьте, что экран вашего компьютера — это окно, за которым что-то происходит. Это «что-то» называется сценой. Цвет каждого пикселя на экране — это цвет луча, который выходит из глаза, проходит через этот пиксель и сталкивается со сценой. Луч может просто вернуться назад, а может отразиться от зеркальной поверхности или преломиться, проходя, например, из воздуха в стекло. Чтобы узнать цвет, в который окрасится пиксель, нужно запустить через него луч и проследить путь этого луча по сцене. Отсюда произошло название алгоритма: ray-tracing — трассировка лучей.

Точнее, это обратная трассировка лучей. Ведь, как мы знаем, луч не выходит из глаза, а наоборот, попадает в него, проделав свой путь от источника света. Однако такая (прямая) трассировка требует огромных вычислительных ресурсов, ведь большая часть лучей пропадает даром, не попав в наше поле зрения. Подробнее физические основы метода обратной трассировки лучей изложены в книге Е. В. Шикина и А. В. Борескова «Компьютерная графика. Динамика, реалистические изображения» (М.: Диалог-МИФИ, 1995).

POV-Ray или, полностью — The Persistence of Vision Ray-Tracer — использует обратную трассировку лучей для создания трехмерных фотореалистических изображений. Сцена в POV-Ray описывается на SDL (Scene Description Language) — интерпретируемом языке программирования с С-подобным синтаксисом. При помощью SDL пользователь задает положение камеры, источников света, размещение объектов и их свойства, атмосферные эффекты и т. п.

Применение POV-Ray для научной иллюстрации — лишь малая часть среди возможных направлений использования этой программы. И даже с этой малой частью мы в статье успеем лишь познакомимся. Что ж, приступим…

Векторы и система координат. POV-Ray работает с вещественными числами и векторами. Вектором называется точка в пространстве, задаваемая как <x,y,z>. Координаты вектора могут быть числами или переменными, например: <1,.2,cos(alpha)>.

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


Ось Z направлена внутрь монитора.

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

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

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

Вектор <10,20,-20> определяет положение источника света, а вектор color — его цвет <R,G,B>. Яркость каждой из компонент цвета изменяется от 0 (полное отсутствие соответствующего цвета) до 1 (максимальная яркость).

По умолчанию, источник света невидим — это просто светящаяся точка, но его можно сделать видимым, а также привязать к любому объекту, как встроенному, так и созданному пользователем.

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

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


Вставка готовых объектов POV-Ray при помощи меню Insert (POV-Ray для Windows).

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

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

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

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

povray +itest +w320 +h240

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

В POV-Ray для Windows трассировку можно выполнить с помощью меню:


Запуск трассировки сцены с помощью кнопки Run.

Вот что у нас получилось:


Для начала неплохо. Напоминает планету в космосе. Можно усилить это сходство, нанеся на поверхность сферы рельеф и текстуру. Как это сделать, описано здесь, а мы пойдем дальше.

Конструктивная геометрия. Новые тела можно получать из уже имеющихся при помощи операций объединения, слияния, разности, пересечения и т. п. Такой способ создания новых объектов называется конструктивной блочной геометрией (Constructive solid geometry, CSG).

Создадим изображение молекулы воды, состоящее из большой сферы — атома кислорода и двух малых сфер — атомов водорода:

В POV Ray все объекты могут перемещаться, вращаться и масштабироваться. Для этого используются модификаторы translate, scale, rotate. Все модификаторы используют вектор в качестве аргумента. Например, translate <x,y,z> , где x,y,z - координаты точки, в которую будет перенесен объект. scale <kx,ky,kz> , где kx,ky,kz коэффициенты изменения размеров вдоль соответствующих координатных осей. rotate< Fx,Fy,Fz > , где Fx,Fy,Fz углы поворота вдоль соответствующих координатных осей, причем значения углов подставляют в градусах.


Обсудим сцену.
В POV Ray используется механизм подключаемых файлов. Две первых строки подключают стандартные файлы POV Ray, в которых описаны предопределенные цвета и предопределенные текстуры. Пользователь может создавать собственные подключаемые файлы. Например, отдельные элементы сцены могут быть размещены в подключаемых файлах. Отметим, что в POV Ray много стандартных подключаемых файлов, которые чрезвычайно полезны. Для покраски фона мы используем текстуру с названием pigment . Как видно текстура имитирует мрамор. Переменная Yell объявляет вектор, что также полезно. Для подсветки сцены используются два источника света со своебразным расположением. В источниках используется директива shadowless, и объекты лишаются тени. Сцена иллюстрирует использованием модификаторов. Последовательность модификаторов чрезвычайно важна. Поворот производится относительно начала координат. Модификатор scale также чувствителен к удалению объекта от начала координат. Отсюда последовательность rotate<. > translate<. > даст одно изображение, а translate<. > rotate<. > - другое.

3. Операции

Немногие реальные объекты могут быть собраны из примитивов. В то же время некоторые операции над примитивами могут существенно изменить их внешний вид. Скажем можно взять сферу и внедрить ее в другой объект. В результате объект и сфера приобретают некоторую общую область. Можно изъять общую область из объекта и тем изменить его внешний вид. Это соответствует операции difference. Напротив. можно извлечь только общую область объекта и сферы и также получить новый объект. Такая операция называетсяintersection. Группу объектов можно объединить при помоши операции union. Операции такого рода называются булевыми.

. В качестве примера создадим предмет под названием игральный кубик. В качестве основы возьмем куб, а затем с помощью сфер выдавим на его поверхности необходимое число углублений.


В операции difference самый первый объект выполняет роль заготовки. Все остальные объекты 'выедают' часть его объема.
Сферы создают лунки на поверхности кубика. Важно отметить, что цвет сфер определяет цвет лунок.

С помощью операции intersection создадим объект, который в оптике называется линзой. Как известно, линза состоит из двух сферических поверхностей. Поэтому возьмем две сферы и расположим их так, чтобы они частично пересекались.

Теперь остается извлечь их общую объемную область.
Создадим сцену

Читайте также: