POV-Ray
Оригинальный автор(ы) | Дэвид Кирк Бак, Аарон А. Коллинз, Александр Энцманн |
---|---|
Разработчик(и) | Команда POV |
Первоначальный выпуск | 29 июля 1991 г [1] [2] |
Стабильная версия | 3.7.0.0 [3]
/ 7 ноября 2013 г.; 8 июля 2021 г. |
Предварительный выпуск | v3.8.0-beta.2 (9 августа 2021 г [4] ) [±] |
Репозиторий | |
Написано в | С++ |
Операционная система | Кросс-платформенный |
Тип | Трассировщик лучей |
Лицензия | AGPL-3.0 или более поздняя версия [5] |
Веб-сайт | www.povray.org |
The Persistence of Vision Ray Tracer , чаще всего сокращенно POV-Ray , представляет собой кроссплатформенную программу трассировки лучей , которая генерирует изображения на основе текстового описания сцены. Первоначально он был основан на DKBTrace, написанном Дэвидом Кирком Баком и Аароном А. Коллинзом для Amiga компьютеров . Есть также влияние более раннего Polyray. [6] raytracer благодаря вкладу его автора Александра Энцмана. POV-Ray — это бесплатное программное обеспечение с открытым исходным кодом , исходный код которого доступен по лицензии AGPL-3.0 или более поздней версии .
История
[ редактировать ]Где-то в 1980-х годах Дэвид Кирк Бак загрузил исходный код трассировщика лучей Unix на свою Amiga . Некоторое время он экспериментировал с ним и в конце концов решил написать свой собственный трассировщик лучей, названный DKBTrace по своим инициалам. «Вы можете называть меня Рэем» Он разместил это на доске объявлений (BBS) в Чикаго, думая, что это может заинтересовать других. В 1987 году Аарон А. Коллинз скачал DKBTrace и начал работать над x86 его портом для . Он и Дэвид Бак совместно добавили еще несколько функций.
Когда программа оказалась более популярной, чем ожидалось, они не смогли удовлетворить спрос на дополнительные функции. Таким образом, в июле 1991 года Дэвид передал проект команде программистов, работавших на форуме «GraphDev» на CompuServe . В то же время Дэвид считал неуместным использовать его инициалы в программе, которую он больше не поддерживает. Первоначально использовалось название «STAR-Light» (Целевая группа по программному обеспечению для анимации и рендеринга), но со временем оно стало «PV-Ray», а затем, в конечном итоге, «POV-Ray» (Persistence of Vision Ray Tracer). [2] имя, вдохновленное « картиной Дали Постоянство памяти» . [7] [8]
Особенности приложения и краткое изложение его истории обсуждаются в интервью с Дэвидом Кирком Баком и Крисом Кейсоном в феврале 2008 года в 24-м выпуске FLOSS Weekly . [8]
Функции
[ редактировать ]POV-Ray существенно повзрослел с момента своего создания. Последние версии программного обеспечения включают в себя следующие функции:
- язык описания сцен , полный по Тьюрингу (SDL), поддерживающий макросы и циклы. [9]
- библиотека готовых сцен, текстур и объектов
- поддержка ряда геометрических примитивов и конструктивной твердотельной геометрии
- несколько видов источников света
- атмосферные эффекты, такие как туман и среда ( дым , облака )
- отражения , преломления и каустика света с использованием фотонного картирования.
- узоры поверхности, такие как морщины , неровности и рябь , для использования в процедурных текстурах и рельефном отображении.
- радиация
- поддержка текстур и визуализированного вывода во многих форматах изображений, включая TGA , PNG и JPEG и другие.
- обширная пользовательская документация
- поддержка пользовательских выходных разрешений [10] (Сюда входят экстремальные разрешения, такие как 16K )
- два типа SSAA [11] Тип 1 — это адаптивный, нерекурсивный метод супервыборки. Он адаптивный, поскольку не каждый пиксель подвергается суперсэмплированию. Тип 2 — это адаптивный и рекурсивный метод супервыборки. Он рекурсивный , потому что пиксель подразделяется и подразделяется рекурсивно. Адаптивная . природа типа 2 заключается в переменной глубине рекурсии [11]
Одной из главных достопримечательностей POV-Ray является его большая коллекция ресурсов и инструментов сторонних производителей. В сети можно найти большое количество инструментов, текстур, моделей, сцен и учебных пособий. Это также полезный справочник для тех, кто хочет узнать, как работает трассировка лучей и связанные с ней алгоритмы трехмерной геометрии и компьютерной графики.
Текущая версия
[ редактировать ]Текущая официальная версия POV-Ray — 3.7. В этой версии представлены:
- поддержка симметричной многопроцессорной обработки (SMP), позволяющая средству рендеринга использовать преимущества нескольких процессоров.
- поддержка изображений с расширенным динамическим диапазоном (HDRI), включая OpenEXR и radiance. форматы файлов
- улучшенное ограничение с использованием BSP- деревьев
Некоторые из основных особенностей предыдущей версии (3.6):
- расширение UV-мэппинга на большее количество примитивов
- добавление 16- и 32-битных целочисленных данных в файл плотности
- улучшение 64-битной совместимости
В июле 2006 года корпорация Intel начала использовать бета-версию 3.7 для демонстрации своего нового двухъядерного процессора Conroe благодаря эффективности реализации SMP (симметричной многопроцессорной обработки).
Примитивы
[ редактировать ]POV-Ray, в дополнение к стандартным 3D-геометрическим формам, таким как торы , сферы и поля высот , поддерживает математически определенные примитивы, такие как изоповерхность (конечная аппроксимация произвольной функции), полиномиальный примитив ( бесконечный объект, определяемый 15-м порядком или нижний полином ), фрактал Юлия (3-мерный срез 4-мерного фрактала), суперквадратичный эллипсоид (промежуточное звено между сферой и кубом) и параметрический примитив (с использованием уравнений, которые представляют его поверхность, а не его поверхность). интерьер).
POV-Ray внутренне представляет объекты, используя их математические определения; все примитивные объекты POV-Ray можно описать математическими функциями . Это отличается от многих компьютерных программ, включающих 3D-модели, которые обычно используют треугольные сетки для составления всех объектов сцены.
Этот факт дает POV-Ray ряд преимуществ и недостатков по сравнению с другими системами рендеринга и моделирования; Примитивы POV-Ray более точны, чем их полигональные аналоги: объекты, которые можно описать в терминах сфер, плоских поверхностей, цилиндров, торов и т. п., при визуализации POV-Ray являются совершенно гладкими и математически точными, тогда как полигональные артефакты могут быть видимый в программном обеспечении для моделирования на основе сетки. Примитивы POV-Ray также проще определить, чем большинство их полигональных аналогов, например, в POV-Ray сфера описывается просто ее центром и радиусом; в среде на основе сетки сфера должна описываться множеством небольших соединенных многоугольников (обычно четырехугольников или треугольников ).
С другой стороны, примитивное моделирование на основе сценариев не всегда является практичным методом создания определенных объектов, таких как реалистичные персонажи или сложные искусственные артефакты, такие как автомобили. Эти объекты можно сначала создать в приложениях для моделирования на основе сеток, таких как Wings 3D и Blender , а затем их можно преобразовать в собственный формат сетки POV-Ray.
Примеры языка описания сцены
[ редактировать ]Ниже приведен пример языка описания сцены, используемого POV-Ray для описания сцены для рендеринга. Он демонстрирует использование цвета фона, камеры, источников света, простой формы прямоугольника с нормалью и отделкой поверхности, а также преобразующие эффекты вращения.
#version 3.6;
// Includes a separate file defining a number of common colours
#include "colors.inc"
global_settings { assumed_gamma 1.0 }
// Sets a background colour for the image (dark grey)
background { color rgb <0.25, 0.25, 0.25> }
// Places a camera
// direction: Sets, among other things, the field of view of the camera
// right: Sets the aspect ratio of the image
// look_at: Tells the camera where to look
camera { location <0.0, 0.5, -4.0>
direction 1.5*z
right x*image_width/image_height
look_at <0.0, 0.0, 0.0> }
// Places a light source
// color: Sets the color of the light source (white)
// translate: Moves the light source to a desired location
light_source { <0, 0, 0>
color rgb <1, 1, 1>
translate <-5, 5, -5> }
// Places another light source
// color: Sets the color of the light source (dark grey)
// translate: Moves the light source to a desired location
light_source { <0, 0, 0>
color rgb <0.25, 0.25, 0.25>
translate <6, -6, -6> }
// Sets a box
// pigment: Sets a color for the box ("Red" as defined in "colors.inc")
// finish: Sets how the surface of the box reflects light
// normal: Sets a bumpiness for the box using the "agate" in-built model
// rotate: Rotates the box
box { <-0.5, -0.5, -0.5>,
<0.5, 0.5, 0.5>
texture { pigment { color Red }
finish { specular 0.6 }
normal { agate 0.25 scale 1/2 }
}
rotate <45,46,47> }
Следующий фрагмент сценария показывает использование объявления переменных, присваивания, сравнения и конструкции цикла while:
#declare the_angle = 0;
#while (the_angle < 360)
box { <-0.5, -0.5, -0.5>
<0.5, 0.5, 0.5>
texture { pigment { color Red }
finish { specular 0.6 }
normal { agate 0.25 scale 1/2 } }
rotate the_angle }
#declare the_angle = the_angle + 45;
#end
Моделирование
[ редактировать ]Сама программа POV-Ray не включает в себя функцию моделирования ; по сути, это чистый рендерер со сложным языком описания модели. В дополнение к этому набору функций сторонние компании разработали большое количество программного обеспечения для моделирования, некоторые из которых специализируются на POV-Ray, другие поддерживают импорт и экспорт его структур данных, включая бесплатный пакет для создания 3D-изображений с открытым исходным кодом Blender. [12]
Ссылки на ряд дополнительных средств моделирования, совместимых с POV-Ray, можно найти на Povray.org: Программы моделирования .
В 2007 году POV-Ray приобрела права на Moray . [13] программа интерактивного 3D-моделирования, давно используемая с POV-Ray. Однако по состоянию на декабрь 2016 года разработка Moray застопорилась. [14]
Программное обеспечение
[ редактировать ]Разработка и сопровождение
[ редактировать ]Официальные изменения в исходном дереве POV-Ray вносятся и/или одобряются командой POV-Team. Большая часть заявок на исправления и/или сообщений об ошибках осуществляется в группах новостей POV-Ray на news.povray.org сервере новостей ( веб-интерфейс также доступен ). Поскольку исходный код POV-Ray доступен, от третьих лиц доступны неофициальные вилки и исправленные версии POV-Ray; однако они официально не поддерживаются командой POV.
Официальные версии POV-Ray в настоящее время не поддерживают шейдеров . плагины [15] Некоторые функции, такие как радиальность и сплайны, все еще находятся в разработке и могут подвергаться синтаксическим изменениям.
Поддержка платформы
[ редактировать ]POV-Ray 3.6 распространяется в скомпилированном формате для Mac , Windows и Linux . Поддержка Intel Mac недоступна в версии Mac , но поскольку Mac OS X является версией Unix, версию Linux на ней можно скомпилировать .
Версии 3.7 с поддержкой SMP официально поддерживаются для Windows и Linux. неофициальные версии для Mac для версии 3.7. Можно найти [16]
POV-Ray можно портировать на любую платформу, имеющую совместимый компилятор C++ .
Лицензирование
[ редактировать ]Первоначально POV-Ray распространялся под собственной POV-Ray лицензией . А именно, лицензия на распространение POV-Ray 3.6. [17] и исходную лицензию POV-Ray 3.6, [18] который разрешает бесплатное распространение исходного кода программы и двоичных файлов, но ограничивает коммерческое распространение и создание производных работ, кроме полнофункциональных версий POV-Ray.
Хотя исходный код более старых версий доступен для модификации, из-за вышеуказанных 3.6 и предыдущих лицензионных ограничений он не был открытым или свободным программным обеспечением в соответствии с OSI или FSF определением этого термина . Это было проблемой, поскольку обмен исходным кодом с большей экосистемой FOSS был невозможен из-за несовместимости лицензий с лицензиями с авторским левом .
Одна из причин, по которой POV-Ray изначально не лицензировался под лицензией GNU General Public License (GPL) на бесплатное программное обеспечение или другими лицензиями с открытым исходным кодом, заключается в том, что POV-Ray был разработан до того, как лицензии в стиле GPL стали широко использоваться; разработчики написали свою собственную лицензию на выпуск POV-Ray, а участники программного обеспечения работали, исходя из предположения, что их вклад будет лицензироваться по лицензиям POV-Ray 3.6.
В 2013 году с версией 3.7 POV-Ray был повторно лицензирован под лицензией GNU Affero General Public License версии 3 (или более поздней). [19] Таким образом, с тех пор POV-Ray является свободным программным обеспечением согласно определению FSF , а также программным обеспечением с открытым исходным кодом согласно определению открытого исходного кода .
См. также
[ редактировать ]- Blender — бесплатная программа с открытым исходным кодом для 3D-моделирования, анимации и рендеринга.
- Kerkythea — бесплатная программа трассировки лучей с улучшенной со Sketchup. совместимостью
- Sunflow - система рендеринга с открытым исходным кодом для синтеза фотореалистичных изображений, написанная на Java.
Ссылки
[ редактировать ]- ^ «POV-Ray: Документация: 1.1.5.3 Историческая «история версий» » . povray.org . Проверено 19 декабря 2018 г.
- ^ Перейти обратно: а б «POV-Ray: Новости» . povray.org . Проверено 19 декабря 2018 г.
- ^ «Выпуск 3.7.0.0» . 7 ноября 2013 года . Проверено 15 марта 2018 г.
- ^ «Бета-версия POV-Ray v3.8.0-beta.2» . POV-Рэй. 09.08.2021 . Проверено 29 августа 2021 г.
- ^ «Лицензия POV-Ray» . povray.org . Проверено 5 мая 2014 г.
- ^ «Полирей v1.7» . Александр Р. Энцманн . Проверено 5 июля 2016 г.
- ^ «Документация: 1.1.5 Ранняя история» . POV-Рэй . Проверено 5 мая 2014 г.
- ^ Перейти обратно: а б «Сеть TWiT Netcast с Лео Лапортом» . Твит.тв. 07 февраля 2008 г. Проверено 5 мая 2014 г.
- ^ Пол Бурк: Supershape в 3D — это примеры изображений POV-Ray, созданных с помощью очень короткого кода.
- ^ «POV-Ray: Документация: 2.1.2.2 Общие параметры вывода» . www.povray.org . Проверено 8 сентября 2023 г.
- ^ Перейти обратно: а б «POV-Ray: Документация: 2.1.2.8 Параметры трассировки» . www.povray.org . Проверено 8 сентября 2023 г.
- ^ Блендер
- ^ «Новости: Объявление Морей» . POV-Рэй. 01 февраля 2007 г. Проверено 5 мая 2014 г.
- ^ «POV-Ray/povray: устойчивость Vision Raytracer» . POV-Рэй. 06 сентября 2013 г. Проверено 5 августа 2022 г.
- ^ о такой реализации см., например, http://www.aetec.ee/fv/vkhomep.nsf/pages/povman2. Архивировано 7 февраля 2007 г. на Wayback Machine.
- ^ povrayunofficial_mac на megapov.inetart.net
- ^ «Лицензия на распространение POV-Ray 3.6» . povray.org . Проверено 12 декабря 2016 г.
- ^ «Лицензия на исходный код POV-Ray 3.6» . povray.org . Проверено 12 декабря 2016 г.
- ^ Кейсон, Крис (8 ноября 2013 г.). «Загрузить POV-Ray 3.7.0» . Проверено 11 ноября 2013 г.
Начиная с версии 3.7, POV-Ray выпускается под лицензией AGPL3 (или более поздней версии) и, таким образом, является свободным программным обеспечением согласно определению FSF. [...] Доступен полный исходный код, что позволяет пользователям создавать свои собственные версии, а разработчикам включать части или весь исходный код POV-Ray в свое собственное программное обеспечение при условии, что оно распространяется под совместимой лицензией (например, AGPL3). или – по их выбору – любую более позднюю версию).
Внешние ссылки
[ редактировать ]- программное обеспечение для 3D-графики
- Трассировщики лучей Амиги
- Кроссплатформенное программное обеспечение
- Специализированные языки программирования
- Бесплатное программное обеспечение для 3D-графики
- Бесплатное графическое программное обеспечение
- Бесплатное программное обеспечение, написанное на C++.
- Программное обеспечение глобального освещения
- Системы рендеринга
- Программное обеспечение, использующее лицензию GNU AGPL.