Wot I learned Today #1: POV-Ray

Mar 17, 2014 00:20

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

Да, в мире происходит всякое разное. Будем считать, что я защищаюсь от этого работой.

Так вот, есть такая программа POV-Ray. Она используется для отрисовки трехмерных сцен по сценариям. Мой основной use case - генерация трехмерных картинок кристаллических структур. Потому что красивую рисуночную графику можно нарисовать разными способами (обычно через формат EPS, справляются программы OLEX2 и XP), а красивый трехмер они не особенно выдают. Но OLEX2 умеет генерировать сцены в POV-Ray.

Там поддерживается и прозрачность, и отражаемость, и все-все-все, но проблема возникает, когда хочешь нарисовать картинку для презентации: выглядят они грязновато. Дело в том, что алгоритм reverse ray tracing следует принципу "один пиксель - один луч", что плохо работает, когда в картинке есть детали меньше пиксела. Простой путь - нарисовать картинку раза в 4 больше нужного и ужать редактором фото, но это дает непонятное размытие. Можно ли обойтись без такой процедуры? Оказывается, да, но нужно читать доки. Бороться с проблемой должен алгоритм anti-aliasing, но то, что предлагается в файле quickres.ini, поставляющемся с POV-Ray - это очень простой метод, который работает даже хуже, чем перегенерирование большой картинки и ужимание. Совсем другое дело - рекурсивный алгоритм Sampling_Method=2. Картинки, которые получаются с ним, хороши сразу в целевом разрешении. Рекурсивный алгоритм позволяет рендерить на один целевой пиксель до 4225 субпикселей (на уровне 6), и это правда хорошо работает. Почему он не стоит по умолчанию?

Сравните сами (рендеринг стандартной сцены woodbox).

Дефолтный 640*480, AA 0.3
Настройки рендеринга:

[640x480, AA 0.3]
Width=640
Height=480
Antialias=On
Antialias_Threshold=0.3



А теперь алгоритм AA2:

[640x480, AA2 0.3]
Width=640
Height=480
Antialias=On
Antialias_Threshold=0.3
Sampling_Method=2
Antialias_Depth=6



Внимание на желтый шарик в ящике и переднюю стенку. После 6-го уровня Antialias_Depth я уже улучшений не вижу.

И ведь со структурами так же :)

what i learned today

Previous post Next post
Up