Потапяне в менталното (Прокси - митове и реалност)

В първата част на този урок ще ви покажа как да използвате обекта mr Proxy. Всъщност в това няма нищо сложно, но съм изненадан от двусмисленото отношение към него. Във форумите някои се оплакват, че прокситата не спестяват време за изобразяване, но очакват, че огромни сцени могат да бъдат изобразени на почти 386 процесора. А някои казват, че няма смисъл от пълномощници - само вреда. В този урок ще разгледаме осъществимостта на този обект, като използваме реални числа. Във втората част ще разгледаме един от специалните случаи на оптимизация на сцената за бързо изчисление. В урока няма да качвам сценични файлове, тъй като в първата част всичко е елементарно, а във втората искам изпълнителите сами да направят шейдърния материал, като по този начин разбират гъвкавостта на структурата на шейдърите. Урокът се изпълнява в 3ds Max 2009. Предназначен за потребители, които са запознати с интерфейса Max, и разбира се опитът в него е желателен, за да се разбере осъществимостта на различни действия.

Част първа - Прокси

Създаване - Геометрия - ментален лъч - г-н. Прокси

На сцената се поставя празен контейнер. Влизаме в свойствата на създадения mr Proxy, горната графика е Source Object - щракнете върху бутона с надпис None и с щракване на мишката върху обекта, който искаме да направим proxy обект.

Може да се добави само един обект! Групи обекти и сглобки също не могат да се добавят към един и същ прокси. В мрежата има скрипт, който ви позволява автоматично да комбинирате няколко обекта и да ги запазвате като прокси обект, но когато комбинирате сложни обекти, той се проваля (поне за мен), така че трябва да запомните поговорката за безплатно сирене и вие също трябва да комбинирате няколко обекта в една решетка (мрежа) с ръцете си не е толкова трудно.

След добавяне получаваме копие на оригинала в размерен контейнер. Разделът в настройките - „Дисплей“ ви позволява да конфигурирате показването на обекта в изгледите; „Viewport Verts“ - задава броя на обектните върхове, които ще бъдат видими. На етапа на позициониране на контейнера на обект на сцената, броят може да бъде увеличен, за да има представа за реалната геометрия на обекта, след което да се зададе минималната стойност (да се грижи за производителността). Под "Viewport Verts" има два превключвателя "Show Point Cloud" - за показване на точки (върхове) на обекта и "Show Bounding Box" - за показване на рамка около контурния контейнер (без рамка е трудно да се избере обект с мишка).

Бутонът „Запис на обект във файл“ запазва прокси обекта във файл (записан като * .mib файл и допълнително графичен файл за предварителен преглед) по време на записването, ще бъде зададен въпрос за метода на запазване - единичен кадър, фрагмент или цяла анимация (да, да, проксито позволява да се поддържа ефектът на модификаторите върху обекта във времето). След запазване, "вътрешните елементи" на проксито ще бъдат изобразени и ще имаме файл с обекта.

Когато добавяте прокси обекти към сцената, първо трябва да създадете празен mr Proxy, след това в настройките щракнете върху бутона в полето "Прокси файл" и посочете пътя към обектния файл.

Важно: Когато посочва името и местоположението на файла на прокси обекта, Макс помни само връзката на обекта, файлът не се отваря! Ако група от няколко души работи върху една сцена, тогава прокси обектите, разположени на сцената, могат да се променят и подобрят. Отварянето на прокси файла се извършва само когато сцената е рендирана, съответно и се вземат предвид промените в изходния файл в този момент. Ако няма файл на посочения път, тогава визуализацията ще покаже съобщение за това.

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

Материалът не се записва в прокси обекта! Следователно, когато създавате, вземете материала от създадения обект с капкомер (ако не е предварително подготвен) и го запазете в библиотеката за по-нататъшна употреба. След добавяне на прокси обект, можете просто да добавите записания материал към него (мрежовата структура на ниво елемент е запазена, така че е възможно използването на многоподподдържащ материал).

Помощта за mr Proxy споменава използването на материал "Xref". Според мен използването на този материал е от значение само при групова работа, въпреки това, нека го анализираме.

В настройките, пътят до файла на сцената (донор) и името на обекта (донора) на посочената сцена:

Нека завършим с теоретичната част и да видим ефекта от използването на прокси на практика.

Например, на равнина, състояща се от 2 полигона, добавих 10 еднакви дървета (засега без листа) със сложна, TurboSmooth мрежа. Общо получихме сцена с четири милиона и половина полигони: (тестване на машина с E4400 - 2x2Ghz и 2GB RAM)

Рендериране (GI с минимални настройки за качество)

Възпроизвеждане 5 минути 30 секунди.

Макс с отворен етап отнема 322 MB RAM, използвани по време на рендиране 1348 мегабайт RAM (операционната система също е включена в количеството RAM и всичко, което е висяло в тавата, тоест това е общото потребление на RAM)

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

Възпроизвеждане 4 минути 42 секунди. (Не донесох изображението за изобразяване, то е едно към едно - изобщо няма разлики)

Макс с отворена сцена отнема 282 мегабайта RAM, използвани по време на изобразяване 1170 мегабайт RAM.

Времето за изобразяване не е много различно (на някои сцени това изобщо не се забелязва), но спестяванията в RAM са много силни!

Като цяло се очакват последиците, тъй като все пак трябва да изобразите обект от прокси, вземете го предвид и при разпространението на фотони, дори ако той е представен във формат, удобен за изобразяване. Оттук и малката разлика във времето. Но поради факта, че самият обект не седи в RAM и се зарежда от диск, получаваме значително спестяване на използваната памет.

Това важи особено за 32-битовите машини. Прост пример:

Увеличих броя на дърветата до 20. Прокситата се изобразяват за 16 минути, реалните обекти се изобразяват за 52 минути. Защо има такава разлика във времето? Всичко това се дължи на факта, че 1698 мегабайта RAM се използват с прокси (в рамките на физическата памет) и с реални обекти от 2586 мегабайта, физическата RAM свърши и отиде виртуално на твърдия диск, където скоростта на трансфер на данни е много по-ниска . При 32 дървета рендирането на прокситата преминава, макар че отнема повече от 1 час, но при реални обекти рендирането не е възможно - няма достатъчно памет.

ОБЩА СУМА: Проксито спестява RAM на компютъра, като премахва информация за обект от сцената на диск, което ни позволява да правим по-големи сцени, и спестява време за изобразяване, като оптимизира представянето на информация за файла.

Част втора - спестяване на време

Но какво да кажем за „наведнъж и че нямаше нищо за това!“ как да спестите RAM и време за рендиране? За това ще говорим във втората част. За да направите това, нека преминем към много слаба машина (слаба от гледна точка на 3D графиката), това ще бъде:

Можете да кажете просто усъвършенстван офис компютър.

Изобразих не Бог знае колко сложна е сградата с минимален брой полигони:

И аз искам да го изчисля с много фотони и добри настройки на FG и също така искам да засадя дървета върху него!

В резултат на това една сграда се изчислява за 6 минути и под формата:

След 46 минути 03 секунди. Къде е справедливостта? добавихме няколко второстепенни обекта и отнемаше 7 пъти повече време. Ако заменим дърветата с прокси обекти, ще получим визуализация за 44 минути и 12 секунди, отново несправедливо - твърде малко спестявания !

Нека помислим какво ни трябва от вторични обекти (нашите дървета) - трябва да бъдат триизмерни (тоест те не могат да бъдат заменени с растерно изображение), те трябва да хвърлят сенки, те трябва да бъдат осветени, но ефектите от играта на светлината от непрякото осветление може да не е много точна - само ако имаше сходство.

Материалът ще ни спаси Оклузия на околната среда!

Можем да изключим дърветата от непрякото осветяване, като оставим само придобиването на FG (и ако не използвате фотометрично излагане и светещи материали, можете да премахнете и придобиване на FG), а всички светлинни ефекти върху материала ще получим сами.

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

Няма да описвам теорията на този материал, който се интересува от статията на Игор Сиваков:

Също така, описанието на настройките и действието е споменато в моя урок:

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

Ще се спра само на 4-те параметри на шейдъра, от които се нуждаем сега. Амбиентна/отразяваща оклузия (3dsmax)

Проби - това е качеството на изчислението на ефекта, колкото повече, толкова по-добре

Ярко и тъмно - светла (осветена) и тъмна (напълно засенчена) част от материала

Разпространение - качество на размиването на границите:

Максимално разстояние - параметър, от който се взема разстоянието от радиуса на полукълбото (видимата част), от който се проследява всяка точка, за да се установи дали лъчът пресича обектите на сцената и съответно формира цвета на точката. Ако параметърът е равен на нула, тогава проследяването е от фона (безкраен радиус). Въпреки сложността на термина, това е много полезен параметър. Да предположим, че обектът е на закрито и разстоянието е 0 - обектът винаги ще е черен (тъй като стените на стаята блокират проследяващите лъчи) и ако параметърът за разстояние е зададен на разстояние, по-малко от разстоянието до стената на стаята, тогава ще получим нормалния ефект - вътрешно осветление.

Сега нека създадем материал въз основа на този шейдър за най-сложния обект - листата на моите дървета.

1. Корен материал "ментален лъч"

2. Слот Повърхност (и по-късно копирайте резултата в Сянка) карта "Смесете"

3. Това, което маската отрязва, ще бъде прозрачно (поставете шейдъра Трансмат), това, което остава, е шейдър Амбиент....

4. В слота Ярък слагам DGS материал с растер от дървесни листа и в процеп Тъмно можете да оставите черния цвят или същия материал, но с тъмна растерна карта.

Изобразих целия процес на диаграма:

За повърхности, които не се нуждаят от карта за прозрачност (ствол на дърво), можете да отидете директно в раздела Повърхност материал ментален лъч поставете шейдър Амбиентна/отразяваща оклузия (3dsmax)

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

Изберете всичко, което няма да участва в изчисленията (за мен това са дървета), щракнете с десния бутон и отидете в свойствата на обекта, раздела mental ray:

Поставете превключвателя за FG в положение Невидим за FG, за Глобално осветление, поставете стрелка Изключете от GI. Има още един параметър - Получаване на осветеност от FG, това е получаването на резултата от осветяването от обекта от изчислението на FG, това не оказва силно влияние върху производителността, но при високи стойности на експозицията може значително да развали яркостта на снимка, затова оставих този параметър.

Сега тестови рендери (вляво осветяваме ГИ с обикновени материали, вдясно дърветата са изключени от ГИ и материала с АО)

По някаква причина повече харесвам резултата отдясно.

  1. Без прокси, без AO и с GI - време 46:03 - памет 898 мегабайт
  2. С прокси без AO и с GI - време 44:12 - памет 877 мегабайт
  3. С пълномощници и AO в дърветата - време 21:53 - памет 858 мегабайт

Резултатът е видим с просто око!