симулация на бръмбари

така

Веднъж слушах подкаст, който небрежно говореше за писане на шейдър за бръмбар (25 минути, 35 секунди), който симулира преливаща се повърхност (не знам как се казва на български, но има термин на английски - iridescence). Погледнах този герой и исках да напиша свой собствен шейдър, но имитирайки по-реална повърхност от хитин, ще говоря за това в следващата статия. Но имаше проблем - нямах подходящ модел бръмбар. Първоначално търсих модели в интернет, но безплатните не бяха доволни от качеството, а платените бяха твърде скъпи (

$ 50), особено след като необходимият модел изобщо не съществуваше. Като цяло реших да направя свой собствен бръмбар, така че ще опиша тръбопровода, който направих за себе си.

  1. Търсете референции
  2. Моделиране на high poly модели
  3. Ретопология в нисък поли
  4. Създаване на текстурни координати (почистване)
  5. Нормално печене
  6. Печене на оклузия на околната среда
  7. Добавяне на карта на изместване за определяне на цвета в шейдъра (повече за това по-късно)
Разбира се, тръбопроводите могат да бъдат различни, например елементи като „създаване на концепция“ или „монтиране на персонаж“ могат да присъстват в това. Няма ги, защото като концепция имах рефове на реални бъгове и моделът не беше предвиден да бъде анимиран. При по-сериозните модели има и междинна ретопология на high poly модели. Различните компании използват свой собствен тръбопровод за различни задачи.

така

Затова потърсих в Google колкото се може повече снимки и ги обединих в една. Също така, за по-добро разбиране на структурата, моделите на други бръмбари могат да бъдат полезни. В резултат на това получихме такава картина, която се очертаваше на втория монитор почти през цялото време, когато бръмбарът беше създаден (може да се кликне):

симулация

Моделиране на high poly модели

INНай-вече скулптурирах в ZBrush, започнах с черупки, скулптурирах всеки обект от сфера:

като

В процеса на скулптуриране може да срещнете един проблем - натискането на секция на повърхността - тя се изстисква от другата страна, което понякога е неудобно или изобщо не е необходимо, така че това да не се случи, трябва да активирате опцията BackfaceMask в подменюто Auto Masking на менюто Brush.

Опцията Lazy Mouse в менюто Stroke също може да бъде полезна - ако е активирана, проследяването на четката ще бъде осреднено, което ще избегне ненужното трептене и ще изчертае по-гладки линии. Параметърът LazyRadius променя степента на изглаждане.

Има една страхотна опция в ZBrush, която помага да се избегнат някои от проблемите с свързването - DynaMesh. Всъщност той възстановява модифицирания участък на мрежата, адаптирайки го към геометрията. Някои не го харесват, поради факта, че след прилагането на този модификатор мрежата се оказва грозна, понякога леко нарушава геометрията, но за моите нужди ми беше полезна. Алтернатива на тази опция е постепенното увеличаване на подразделенията на модела и от време на време ретопология.

така
BackfaceMask, Lazy Mouse и DynaMesh

Постепенно добавени нови части и увеличени детайли:

бръмбари

Отделно си струва да говорим за очите. Бръмбарите имат сложни очи, те се състоят от много полукълба, можете да видите, че те са разположени, така да се каже, на шестоъгълна решетка:

симулация

Струваше ми се, че ще бъде най-лесно да ги моделирам в 3D Max, направих ги така: първо трябва да създадете GeoSphere, да зададете необходимия брой сегменти и да го конвертирате в редактируема многоъгълна мрежа:

бръмбари

след това изберете всички ръбове и щракнете върху бутона Chamfer или по-скоро върху бутона до него - полета снастройки. Избираме параметрите така, че да се окаже приблизително както на екранната снимка по-долу:

така

сега изберете всички върхове и изберете Weld, настройте така, че всички върхове в опорните точки да се слеят в едно:

бръмбари

изберете всички полигони и приложете Bevel, екструдирайте ги приблизително до височина, равна на размера на клетката, и ги разширете малко:

бръмбари

щракнете веднъж върху бутона Tesselate, за да добавите полигони:

бръмбари

и накрая, прилагаме модификатора TurboSmooth, две итерации бяха достатъчни, за да получа повече или по-малко изгладена версия:

симулация

Всъщност решетката се оказа не съвсем шестоъгълна, има сегменти, състоящи се не от шест, а от пет ръба. Това се дължи на спецификата на конструкцията на този тип сфери. Но за бръмбар ще стане.

Ретопология в нисък поли

Въпреки факта, че ZBrush има свои собствени инструменти за ретопология, аз го извърших в TopoGun, тъй като за мен е много по-удобно да го направя там. Има много удобен инструмент за антиалиасинг - можете да направите доста голяма мрежа, след което да я приложите. Тази мрежа ще бъде разделена на определен брой подразделения, с нови върхове, разположени върху високополигоналния модел:

бръмбари

Отново, очите са отделни - тъй като това са по същество сфери, взех обикновени сфери като low poly mesh и отрязах невидимата част от тях. В резултат на ретопология е получен модел от 60k полигони. Това, разбира се, не е съвсем нисък поли, но за сцена, състояща се само от един обект, е нормално.

бръмбари
модел с нисък поли

Създаване на текстурни координати

Направих разопаковането в UVLayout - доста удобна програма, базирана на бързи клавиши, работи бързо и визуално, особено ми харесва начина, по който показва цветовете за разтягане / свиванеполигони.

така

Когато разрязвате модела, трябва да направите възможно най-малко шевове, но в същото време се опитайте да не разтягате многоъгълниците. Тъй като няма да имам дифузна текстура, шевовете могат да се появят само в релефа (с нормално картографиране), те няма да бъдат забележими на картата на изместването и оклузията. Бях по-загрижен за липсата на изкривяване на многоъгълниците, така че шевовете се оказаха доста.

С всички модели, готови за разгъване, ги импортирах в 3D Max, за да коригирам относителния размер на разгъването. Това е доста важна стъпка, тъй като ви позволява да увеличите детайлите на особено важни области, без да увеличавате текстурата. Така например умишлено намалих размаха на корема на бръмбара и, напротив, увеличих главите. В крайна сметка използвах стандартната обвивка на модификатора Unwrap UVW и получих това разопаковане на целия модел:

симулация

Пакерът не се опакова много оптимално, освен това оставих доста голяма подложка, така че съседните сегменти да не се намесват един в друг при малки мейпове.

Нормално печене

Нормалната карта е направена в xNormal - доста особена програма с "интересен" интерфейс. Offtopic, като цяло, честно казано, изненадващо е, че всички програми, свързани с графики, имат свой уникален интерфейс, който понякога е труден за разбиране дори с инструкции, които все още можете да опитате да намерите. Въпреки че, ако го използвате известно време, свиквате с него и изглежда дори удобно. Но това е само моето мнение.

симулация

Тъй като моделът се състои от няколко части - всяка трябваше да се пече отделно, ако се опитате да ги изчислите наведнъж - може да се появят артефакти. Избрах размер на текстурата 4096x4096, за модел в близък план точно, ако възникнат проблеми, винаги можете да го намалите два или повече пъти.

симулация

Печене на оклузия на околната среда

AO, изчислен в Maya с Mental Ray render engine (в 3D Max имаше някои проблеми с него и xNormal с пълния списък с модели се обърка малко, отне доста време за изчисляване и има малко настройки сам по себе си):

като

Добавяне на карта на изместване

Ако се вгледате внимателно, забелязва се, че истинският бръмбар има места, които се различават по цвят, нещо като петна по главата и черупката:

симулация

За да маркирам тези места, ръчно нарисувах черни и бели петна на отделен слой в MudBox. По-късно ще ги използвам в шейдъра, за да изместя един от цветовите компоненти:

така

Резултатът е три карти, всички от които могат да бъдат пакетирани в една текстура по следния начин:

  • Червени и зелени канали - нормална карта
  • Син канал - оклузия на околната среда
  • Алфа канал - карта на изместване
Окончателната карта сега изглежда така:

симулация

така

И тук можете да получите грант за тестов период на Yandex.Cloud. Необходимо е само да въведете "Habr" в полето "секретна парола".