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

Скульптинг и детализация "тяжёлых" моделей в Blender без торможения

Если делать скульптинг на простых вещах, например на полисфере, то даже после применения Multires модификатора с разбиением до 7 уровня мы всё ещё можем более мене комфортно делать скульптинг. Но вот что делать если изначальная модель даже на низкополигональном уровне уже содержит большое количество треугольников? Например модель человека может содержать около 30 000 треугольников. И это только изначальный низкополигональный уровень. А чтобы нанести мелкие детали на такую модель, нужно подразбить её как минимум до 6 уровня. Но в таком случае получится свыше 300 миллионов треугольников! Не знаю как ваш, но мой компьютер зависает намертво на этом моменте, не давай не то что скульптить, а даже просто вращать модель. И что уж говорить о таком ресурсоёмком процессе, как запекание карты нормалей - тут вообще никаких шансов. 
Как же выйти из этой ситуации? Решение довольно простое. Не обязательно делать мультирес 7 уровня для всей модели. Мы можем работать кусками. Действительно, а зачем глотать кусок целиком, если мы можем поделить его на порции и, спокойно пережёвывая, скушать. Конечно это не так комфортно, как если бы мы работали со всей моделью сразу, но к сожалению этот вариант недоступен (ну по крайней мере я других вариантов не встречал). Кстати в Zbrush есть подобное решение на вкладке HD Geometry. Когда вы включаете режим высокой детализации, программа вырезает определённую часть модели, которую ваш компьютер способен более менее нормально обрабатывать и вы с этой частью работаете. Когда вы хотите перейти к другой части модели, вы переключаетесь на неё. Это конечно удобнее, поскольку детализация хранится автоматически.

И так, вот мой способ работать с деталями в Blender 

1. Заходим в режим редактирования и выделяем полигоны части объекта, с которой мы собрались работать. Давайте возьмём за пример модель человека. Например, мы хотим детализировать лицо. Я выделяю часть лица с которой хочу поработать. Мне было бы комфортнее работать с этой частью, если бы в ней было как можно меньше полигонов. Поэтому я не стану копировать всю голову. Я не стану выделять скальп, уши (которые кстати содержат много полигонов), затылок и шею. Теперь я нажимаю SHIFT+D, а затем ESC. Конечно в данном случае не обязательно следить за тем, чтобы модель оставалась на том же месте, имела тот же объём и пропорции, расположение ориджина, потому что самое главное для нас - сохранить первоначальное расположение полигонов и UV. Эта часть, которую мы сейчас скопировали будет удалена в дальнейшем, поэтому вы можете делать с ней всё что угодно, пока это не изменяет UV.

2. Теперь отделяем нашу скопированную часть от основного объекта. Делается это нажатием клавиши P. Выберите вариант Selection. 

3. Для удобства рекомендую спрятать все лишние модели, в том числе и оригинал. Оставьте только ту модель, которую отделили. Сделать это проще, если выделить только эту модель, затем нажав CTRL+I и потом H. 

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

5. Когда вы закончили скульптинг, пришло время запечь карту нормалей. Тут вы тоже справитесь сами. Но я всё же отмечу один важный момент. Когда вы будете создавать в блендере чистое изображение на которое будете запекать карту нормалей, важно выставить ему нейтральный цвет. Это конечно можно будет сделать и на этапе с Photoshop, но удобнее это сделать заранее здесь. Нейтральный цвет, который не влияет на нормали это - 0.5, 0.5, 1 (последнее значение для синего канала). В Photoshop это нейтральный серый (50% серый) в красном и зелёном каналах и абсолютно белый в синем канале. Теперь перед запеканием важно отключить опцию Clear. В общем не важно на каком этапе и каким способом вы его сделаете, главное, чтобы вся карта нормалей имела правильные цвета иначе, если в каких-то участках цвета не будет и сохраните это в Jpg или png, то в этом месте будет белый цвет (в случае с png чёрный) и тогда в этих местах возникнут ошибки отображения карты нормалей. Например, мы сделали детализацию лица и рук, забыли убрать галочку Clear, в Photoshop не исправили нашу ошибку и сохранили. В блендере будет отображаться правильно только та часть лица, которую мы детализировали, всё остальное будет иметь более тёмный оттенок.

6. Карта нормалей запеклась, мы её сохранили под соответствующим именем (можно добавить название части объекта, чтобы не запутаться потом, если их будет много. Я бы назвал так Normal_face. Объект, который мы скульптили теперь можно спокойно удалить (ну или спрятать, мало ли, вдруг вы потом заметите что-то и захотите внести мелкие изменения). 

Далее вы можете повторить все эти пункты для других частей тела, которые вы хотите детализировать. Когда вы всё закончите, то просто откройте все полученные карты нормалей в Photoshop и накидайте в один файл (можно взять один из файлов с картой нормалей, например, Normal_face). Важно, чтобы каждый слой не был сдвинут в сторону. Если на предыдущих этапах вы забыли отключить галочку Clear в каком-то из файлов, то сейчас самое время всё исправить. Создайте слой и залейте его цветами 127,127,255 и переместите его так чтобы он был самым нижним. Включите у всех слоёв, кроме нижнего, режим Overlay. Если вы забыли установить нейтральный цвет перед запеканием, но галочку Clear не забыли убрать и в итоге у вас получилась текстура с чёрным фоном, то тут уже исправить сложнее. В данном случае вы можете только лишь удалить чёрную часть стёркой. Теперь сохраните этот файл в любой доступный для Blender'a формат (например png). Готово!

Эту карту вы можете теперь применить к вашей модели и все детализированные участки будут единым целым. 

Теперь совет 

Карта нормалей не сохраняет инофрмацию о геометрии, поэтому если глядеть на поверхность под очень плоским углом, она будет плоская. Поэтому желательно сделать небольшую предварительную детализацию с модификатором multires на уровне сабдива 2 или 3 (если мощность компьютера позволяет). Таким образом вы создадите крупные детали на вашей модели, которые будут иметь объём даже под плоским углом. Например, это могут быть складки, бугорки. Для этих деталей не обязательна сверхвысокая детализация. 
Эти детали важно нанести до всего того что я описал выше. По крайней мере конкретно те участки которые вы собрались детализировать. 
В чём смысл? Эти детали сохранятся на вашей модели, но чтобы при работе с моделью (анимирование например) компьютер не тормозил, вы можете отключить модификатор Multires или установить Preview на 1 или 0. Это позволит вам комфортно работать с моделью, а при рендеринге включится детализация. 
А когда вы перейдёте к детализации и отделите часть меша, модификатор Multires и информация о нанесённых вами деталях останутся! В этом и вся прелесть данного метода. Вам только останется добавить уровней сабдива до нужного и нанести более мелкие детали. Таким образом получается, что во вьюпорте вы (после того как закончите детализацию и сведёте карту нормалей) будете работать с низкополигональной моделью, но при рендеринге она будет содержать более детализированную геометрию, а карта нормалей добавит ещё и мелких деталей!

Надеюсь этот совет поможет вам справиться со страхом, перед детализацией больших моделей))

Ну а если я по невнимательности пропустил альтернативный способ сделать высокую детализацию в Blender, буду рад если кто подскажет.

1 комментарий:

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

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