пятница, 8 октября 2010 г.

Проблемы антиализинга.

   В этой статье я хочу рассказать о нюансах антиализинга, а точнее его подвида - суперсемплинга, который используют большинство рейтрейсеров, таких как Mental Ray, Vray, Final Render, Brazil.
Проблемма состоит в том, что для того чтобы визуализировать мелкие детали, нужно большое кол-во семплов на пиксель. Поясню наглядно.
   Я буду использовать 3d max 2011 и Mental Ray. Создадим конусы с соотношением диаметра основания к высоте, равным 250. Расположим их в ряд, удаляющийся от камеры. Разрешение я специально поставил не большое, т.к. чем меньше разрешение, тем сложнее суперсемплерам проработать мелкие детали.
   Фильтр антиализинга я использую, в основном, по Гауссу, с ширинои и высотой в 2 пиксела. И вот почему:
1. Быстрее Митчелла (с другими не сравниваю, т.к. считаю Митчелл самым достойным аппонентом).
2. По кач-ву практически не уступает. Митчелл немного резче.
3. Не даёт затемнения пикселов на краях, в следствии небольшого эффекта шарпа, которым обладает Митчелл. Это важно на композе.
4. Ланчоз имеет ещё более выраженный шарп и он немного медленнее Митчелла.

   Результаты рендеров, с разными настройками:








     Почему мы имеем такую картину? Суперсемплинг выстреливает луч из пиксела, используя настройку "Minimum", не попадает по самому узкому месту конуса, а это ближе к верхушкам, и с чистой совестью переходит к другому пикселю. Т.е. до следующего уровня семплинга, ограниченного настройкой "Maximum" дело не доходит. Так же, уменьшение настройки "Spatial Contrast" не поможет. Остаётся тупо увеличивать минимальное кол-во лучей, что увеличивает время просчёта. Так же, это относится к предметам любого размера, если они удалены от камеры на столько, что становятся меньше пикселя. Например, объекты уходящие к горизонту (трава, деревья, мелкие ветки и т.д.). Вот такая расплата, за кач-венный рендер.

   Другие результаты показывают сканлайны.

1. Максовский "Scanline".
2. Режим "Fast Rasterizer" в ментале (я не уверен что это настоящий сканлайн, но геометрию он шурует очень быстро).
Вообще Mental Ray заявляет себя как гибридный рендер, Scanline + Raytrace. Но почему включая у него режим "Scanline", у него использует простой суперсемплинг, мне не понятно. Наверно, его сканлайн где-то в другом месте себя проявляет.
3. Maya Software.
4. Renderman.

   Результаты рендеров:





   У них другой алгоритм отрисовки геометрии. И они намного быстрее справились с задачей, это их большой плюс. Но у сканлайнов есть и недостатки, один из них - они не любят рейтрейсинг. Хотя Renderman, например, быстро развивается и рейтрейсинг там имеет хорошие показатели по скорости.
   Итого.
1. Перед финальным рендером, вам надо оценить необходимость в детализации.
2. Если вы используете рейтрейсеры и вам нужна хорошая детализация, мало поднять максимальное значение. Чаще всего надо поднять минимальное. В большинстве случаев, достаточно 16, а максимальными настройками можно считать 64 семплов, для минимума и максимума. В Vray это значение 3. Т.к. в нём 0 = 1 семпл, 1 = 4 семплов, 2 = 16 семплов, 3 = 64 семплов. Также, по идее, очень хорошая опция Anti-aliasing Sampling Override в Maya. Она позволяет по объектно регулировать суперсемплинг. Но к сожалению у меня она не заработала. Подобная опция есть для ментала, если подключить шейдер от фирмы "Ctrl.Studio". Я его не пробовал ещё. Как попробую - напишу.
3. Final Render R3: Вроде внедрили алгоритм гибридного рендеринга, позволяющего отрабатывать мелкие объекты, которые не берут обычные настройки суперсемплинга. Я ещё не тестил. Подробнее тут.
http://www.cebasstation.com/index.php?pid=product&prd_id=75&feature=960
4. Если используете 3дмаксовский сканлайн: Ничего настраивать для антиализинга не надо. Он даёт максимально кач-венную геометрию. Про текстуры разговор отдельный. Я как раз готовлю статью про это.
5. Maya Software: настройка антиализинга "Highest quality" является максимальной и даёт хороший результат, без доп. настройки.
6. Renderman: настройка антиализинга "Pixel Samples", влияет ещё и на кач-во моушен блюра. Как правило, больше 15х15 не требуется.

   Вот такой расклад.  Я надеюсь что знания особенностей рендеров, помогут вам достичь лучших результатов. Спасибо за проявленный интерес, к данному вопросу. До свидания.

P.S. На текущий момент (2012 г.) в ментал рее имеются и другие алгоритмы антиализинга - это "unified sampling" (что-то наподобие вреевского DMC) и "progressive rendering" (рендерится вся картинка с 1 семплом, и постепенно проявляется по мере добавлении семплов в нужные части изображения). Они лучше по соотношению скорость/кач-во, чем стандартный алгоритм. Чтобы воспользоваться ими в 3д максе, нужно скачать и подключить к максу бесплатный скрипт, вот от сюда: http://www.infinity-vision.de/page/ro_menue . Т.к. в 3д максе не реализованы эти фичи, в отличии от майи и софтимиджа.

Начиная с 3д макс 2014 "unified sampling" встроен.

четверг, 7 октября 2010 г.

Будущее компьютерной графики.

   Прочитал в одном блоге (http://3d-spike.blogspot.com), о нашествии рендеров, делающих быстро и красиво, и возможными переменами, в связи с этим, для всех старожил, которые годами набирали опыт. И вот решил написать свои мысли по этому поводу.
   С начала развития КГ и компьютерных технологий, для более менее широкого круга людей, тех кто мог позволить себе комп дома, это примерно начиная с 90-х годов. Кол-во людей, делающих быстро и красиво, стало быстро увеличиваться, почти экспоненциально. В основном, это результат развития железа, которое позволило внедрять более сложные алгоритмы, описывающие реальный и не очень, мир. И конечно же интернета, который является огромным информационным пространством, в котором, как на дрожжах, развиваются начинающие пользователи.

   По сути, сейчас происходит разработка и изобретение нового инструментария. Оно сопровождается жаркими дискуссиями, пробами, ошибками, оттачиванием более менее рабочего инструмента. И т.к. в основном, вся текущая работа, сводится к разработке и оптимизации алгоритмов, для доступных аппаратных мощностей, то этот инструментарий будет развиваться параллельно росту технологий. Т.е. пока будет расти мощность компов, программы будут меняться, отжившие своё кнопки и алгоритмы, будут заменяться другими, более совершенными и соответственно придётся их изучать. Т.е. придётся учиться. Надеюсь это будет происходить не слишком быстро. )) С другой стороны, будет и дальнейшее резвитие и упрощение манипуляторов, т.е. настройки для чайников никогда не исчезнут. Как например режим "авто" на большинстве фотоаппаратов. Т.е. настройки программ, будут удовлетворять широкому кругу пользователей, от новичка до проффи.

Но, техническое развитие, не слишком сильно влияет на развитие более сложное - творческое. Одновременно с этим, широкая доступность инструмента помогает раскрытию талантов среди масс. Поэтому, с одной стороны, конкуренции будет больше. А с другой стороны, эффект новизны постепенно рассеится, что несколько снизит интерес к этой области, у массового пользователя. Думаю ситуация будет похожа на волну распространения цифровых фотоаппаратов. Все накупили, первое время везде таскали, но спустя некоторое время пользуются уже не часто, а проффессионалов вообще не много. Вот приблизительно тоже самое будет и с КГ. Уметь простые вещи будет каждый второй, но работать и развиваться будут лишь сильно заинтересованные. Думаю эти процессы будут постепенно происходить в течении лет 20.

Вот такие мысли. Надеюсь вам было хоть сколько интерестно и познавательно. ))