четверг, 11 декабря 2014 г.

Решение проблемы «гранёных» поверхностей в Cycles Blender. Terminator problem


Когда изучал рендеринг в Cycles, то столкнулся с одной проблемой. Моя модель получалась «гранёной», будто бы я забыл применить шейдинг Smooth. Но режим шейдинга был включён. Однако модель всё равно рендерилась таким образом, что видны были грани. Проанализировав проблему, я заметил, что возникает этот дефект на границе светотени. Именно в области где освещённая часть переходит в неосвещённую. Вся остальная часть модели, которая освещена или которая не освещена выглядит сглаженной.


Чтобы увидеть этот дефект в действии, достаточно создать простейшую сферу и направить на неё прямой свет (например, взять солнце). Также стоит отметить, что при рассеянном свете этот баг почти не заметен.

Когда я первый раз столкнулся с этой проблемой я отнёс её к побочным эффектам применения текстуры с нодой Mapping и совместно с использованием карты нормалей. Поэтому много времени я потратил, копая не в том направлении. Позже выяснилось, что это отдельная проблема, которая вообще не связана с материалами.
Оказалось, что это общий недостаток анбиасед рендеров. Как-то это связано с физическими нормалями и сложностью просчёта шейдинга в местах на стыке света и тени. Не стану скрывать, я не очень-то вник в суть, почему это так происходит. Но главное, что это дело в самом рендере. У этой проблемы есть даже своё название – «Terminator problem» (проблема завершения).

В англоязычных сообществах обсуждалась эта тема не раз. Говорят, что разработчики Tea Render вроде бы нашли решение для своего рендера. Разработчики Blender в курсе этого дефекта и тоже собираются найти решение.

Выход из ситуации

Пока есть несколько выходов из ситуации. Первый заключается в том, чтобы подобрать положение объекта и ракурс так, чтобы дефект был заметен как можно меньше. Согласитесь, это не всегда приемлемо. Второй способ – использовать рассеянное освещение. Это тоже не всегда подходит. Третий способ, на мой взгляд наиболее универсален, но может быть чуть более ресурсоёмким. Он заключается в увеличении итераций сабсёрф модификатора. В разделе Subdivisions в поле Render поставьте значение 2 (оно там по умолчанию уже стоит) или больше. Иногда хватает даже одной итерации. Если не хотите, чтобы модель замедляла работу вьюпорта, то значение поля View можете поставить на 0. Учтите, что при визуализации в реальном времени будет действовать значение View, так что если у вас там стоит 0, то это будет означать, что модификатор вообще не воздействует на модель. Зато работать со сценой будет быстрее. А вот при финальном рендеринге модель будет сглаживаться столько раз, сколько прописано в поле Render в модификаторе Subdivision Surface.

Это конечно костыль, но пока это единственный универсальный выход из положения. Рад буду узнать, если имеются другие решения этой проблемы. Ещё хочу отметить, что в Internal рендере такой проблемы не должно возникать, поскольку это условный рендер, а Cycles это непредвзятый рендер (Biased и Unbiased соответственно).

Чтобы не перегружать сцену модификаторами сабсёрфа, можно наладить драйвер, который связывает расстояние от камеры до объекта. Т.е. если объект будет далеко, то значение сабсёрфа будет нулевое, но при приближении объекта значение будет увеличиваться. Таким образом, как бы мы сильно не приблизились к объекту, он всегда будет достаточно сглаженным и эффект Terminator problem заметен не будет.

13 комментариев:

  1. Привет! Столкнулся с похожей проблемой при применении карты нормалей к glossy shader при минимальном значении шероховатости. Результат выглядит так, как будто поверхность flat shading, хотя она smooth shaded.
    Есть какие идеи как решить эту проблему в cycles render?

    ОтветитьУдалить
    Ответы
    1. Очевидно забыли переключить на Non-color data

      Удалить
  2. https://drive.google.com/file/d/0B8UC94geNTP3WFRNTnh2U3BvWW8/view?usp=sharing

    скрин применения нормалей

    ОтветитьУдалить
    Ответы
    1. А если применять это не к Anisotropic, а к Diffuse BSDF, то тоже такой же глюк?

      Удалить
    2. Нет. Только для глосси с малыми значениями roughness

      Удалить
    3. Ну во-первых на скрине не Glossy, а Anisotropic. Во-вторых, если карта нормали применена к обычной плоскости (если я правильно понял), то здесь другая проблема какая-то.
      Будет понятнее, если пришлёшь файл блендеровский с этой картой.

      Удалить
  3. Terminator в данном случае не «завершение». Это художественный термин, означающий наиболее контрастный край собственной тени и света на переходе между ними. Так и говорится по-русски «терминатор».

    ОтветитьУдалить
  4. подскажите если экспортировать модель с нормалями из Blander в Unreal или другой движок проблема останется

    ОтветитьУдалить
    Ответы
    1. Это проблема самого рендера, а не пакета моделирования. Т.е. это значит, что если в анриале есть такая проблема, то она будет, а если нет, то всё будет нормально. Так что не важно хоть в блендере сделана модель, хоть в максе. Ну и плюс эта проблема распространяется на анбиасед рендеры, а в анриале я так понимаю рендер другого типа.

      Удалить
  5. Рейтинг казино интернет включает клубы, предлагающие посетителям только лицензионные эмуляторы. Представлены веселия от лучших провайдеров Америки, Европы, Азии: NetEnt, N2-Live, Microgaming, MGA, MediaLiveCasino, Mascot, Markor Technology, Lighting Box, Ezugi, Evoplay, Evolution Slots, Endorphina других. Список вендоров постепенно расширяется топ казино. Администрация азартных площадок заключает уговоры с свежими студиями. Такой расклад позволяет разнообразить игротеку, удовлетворить запросы клиентов.

    ОтветитьУдалить
  6. Когда отберёте понравившееся вознаграждение, придёт время прокрутить вейджер. Это одно из главных притязаний, считая обязательной верификации. Если на сайте учтена неотъемлемая процедура подтверждения личности игровые с бездепозитным бонусом с выводом, то исключить выигрыш выйдет только после ревизии данных. Приготовьтесь заполнить анкету и выслать в техподдержку документ, подтверждающий личность.

    ОтветитьУдалить
  7. Ресурсы на 1 позиции обладают 23% от совместного числа продвижение сайта вечными ссылками доменов в ТОП-10. Например, если,тогда, в случае если всего в рейтинге 1 000 ссылающихся вебсайтов, то у первой страницы бесспорно 230 ссылающихся доменов, 2 – 150, третьей – 60.

    ОтветитьУдалить