Уроки: Загальні принципи →
Добрий день, мене як і раніше звуть Дмитро Ярков, і сьогодні я хотів би поділитися придуманим мною способом створення килимів в інтер'єрах за допомогою плагіна VRayScatter. Також для цієї мети можна використовувати новішу версію плагіна під назвою MultiScatter.
З опису плагіна на офіційному сайті www.rendering.ru можна дізнатися, що застосовується він для розмноження великих масивів об'єктів з будь-якої поверхні. При цьому розробники постаралися зробити величезну кількість параметричних функцій, застосовуючи які, можна домогтися разюче відрізняються результатів. Плагін заявлений в першу чергу як допоміжний засіб для архітектурної візуалізації, проте люди на зразок мене запитують, чи не можна застосувати його потужності десь ще, в даному випадку - в інтер'єрі. Отже, спробуємо зробити килим засобами VRayScatter.
Будь-визуализатор або моделлер, хто мав справу з інтер'єрами, раз стикався зі створенням ворсистих килимів. Найчастіше результат однотипний, за замовчуванням влаштовує всіх визуализаторов, незважаючи на те, що килими виходять схожі на один і той же волохатий килим, без зайвої винахідливості. Іноді килим виходить схожим на траву, а іноді - на траву, скошену ураганом. Мета даного уроку полягає в тому, щоб допомогти візуалізатором і моделлера скласти нові уявлення про те, якими можуть бути килими, якщо підійти до цієї справи серйозно, і надати їм інструменти для цього.
В каталозі дуже багато килимів, ми зупинимося на цьому:
Цей килим мені дуже подобається за своїм виглядом, і як бачите, він зовсім не схожий на траву. Я ще жодного разу не бачив подібного килима в інтер'єрах, тому що його дуже складно зробити. Не будемо прагнути до 100% збігу, але візьмемо його за основу.
Поруч з основною фотографією в збільшенні показані кольору і текстури:
Особливо пильну увагу я приділив нижньому лівому фрагменту. Якщо придивитися, можна помітити, що ворсинки на ньому злипаються між собою і таким чином загострюються догори, залишаючись хаотичними внизу. Виходить такий собі витягнутий трикутник, трохи зігнутий (прим'ятий). Звідси я зробив висновок, що при створенні килима краще розмножувати непоодинокі ворсинки, а цілі пучки таких злиплих ворсинок. Ці пучки можуть бути самими різними для різних килимів.
З кількох площин зробимо пучок ворсинок. Ось як він виглядає у мене:
У ньому 50 трикутників. Пучок 5 см у висоту. Грубо кажучи, це десяток ворсинок, вигнутих по двом-трьом напрямам і мають загальний вигин в одну сторону. Все це робилося у вигляді зверху, і лише потім за допомогою Bend згорнулася у якусь трубочку для більшого обсягу. Переводимо цей пучок в проксі-об'єкт.
Тепер створюємо основу для килима. Це простий плейн, проте він трохи пом'ятий за допомогою модифікатора Noise, при цьому модифікатор не впливає на краю (це робиться за допомогою Poly Select з м'яким виділенням). Краї притиснуті до підлоги, щоб килим не виглядав ширяє в повітрі, а центр трохи піднятий, щоб поглиблення не опускалися нижче статі:
Розмір цієї площини 2 метри на 1 метр. Малувато для великого приміщення, але в самий раз для тесту і уроку.
Вказуємо в якості проксі наш пучок, а в якості об'єкта для розмноження площину. Внизу в налаштуваннях Скаттер відразу ставимо галочку Auto update:
Це потрібно для того, щоб в подальшому бачити всі операції з Скаттер в реальному часі. Тепер ми бачимо перед собою площину з деякою кількістю боксів на ній:
Йдемо з налагодження зверху вниз. У базових налаштуваннях поставимо галку Move pivot to center і виберемо вісь, по якій встануть проксі. У мене вийшла Y:
Таким чином можна відрегулювати базове розміщення проксі-пучків на площині, тобто щоб вони були розташовані вертикально і їх нижня точка лежала на поверхні килима.
Далі йдемо в настройки розподілу проксі по поверхні. Дослідним шляхом для свого розміру килима і ворсинок я поставив кількість пучків рівним 400.000:
Use random Position означає, що пучки будуть розмножені хаотично, не підкоряючись якомусь порядку. Інші налаштування в цьому сувої для нашого килима не важливі.
Якщо зараз отрендеріть наш килим, ми побачимо дуже густий, але при цьому абсолютно нецікавий, фактично квадраний килим без будь-якого різноманітності. Взагалі, це більше схоже на текстуру, ніж на геометрію, незважаючи на 400.000 пучків:
Знову звертаємося до референсу. Звертаємо увагу, що по периметру килима ворсинки загинаються в напрямку периметра. До величезної честі розробників, така функція в Скаттер передбачена, і знаходиться вона в свиті Border Behavior. Можна загинати ворсинки до країв самого об'єкта, а можна і до країв сплайна, який попередньо потрібно вказати. Тут хотілося б відзначити, що у мене загинання по об'єкту (Use Surface Border) працювало некоректно, і я вирішив обійтися сплайном. Я створив прямокутний сплайн чітко по периметру площині і в свиті Border Spline вказав його в якості сплайна. Дистанція до краю, починаючи з якої починається деформація ворсинок, становить у мене 10 сантиметрів, а режим деформації тільки Rotate:
Настільки хороших параметричних функцій дуже не вистачає в інших системах створення килимів, таких як VRayFur і HairFur. Рендерить килим не обов'язково, зміни можна побачити прямо під вьюпорте, завдяки налаштуванням превью:
Тепер трохи пограємо з розміром ворсинок. В процесі експериментів, в настройках масштабу я до 60% зменшив пучки по осях X і Y і до 50% по осі Z:
В принципі, це не обов'язково, якщо відразу зробити відповідний нових розмірів пучок ворсинок, але ці функції зручні. Як бачите, я не використовував жодного відсотка випадкового розподілу масштабу, оскільки не побачив цього на референс. Щоб килим виглядав цікаво, ми підемо іншим шляхом. Отже, переходимо до найважливішим налаштувань - налаштувань обертання:
В першу чергу ставимо випадкове обертання по осі Z на 360 градусів, а також на 30 градусів по осях X і Y для нахилу ворсинок. Однак це мало наближає нас до прекрасного килиму, який ми бачимо на фотографії, і тепер ми використовуємо дуже потужні налаштування повороту ворсинок в залежності від кольорової карти. Для цього ставимо все три галки X / R, Y / G і Z / B. На перший погляд все просто: Red управляє віссю X, Green управляє віссю Y, а Blue обертає ворсинки по Z. Однак змішання цих кольорів дають самі непередбачувані результати, тому на експерименти у мене пішло дуже багато днів.
Призначимо на нашу площину матеріал, з яким в будь-який слот покладемо карту Noise і відобразимо її у вьюпорте. Noise це тривимірна процедурна карта, і в своєму тривимірному режимі під вьюпорте вона буде виглядати зовсім не так, як при рендер (сильно змінюється масштаб), що зовсім не підходить для настройки. Міняємо режим карти на Explicit Map Channel і задаємо площині планарний UVW Mapping. Тепер карта Noise в двовимірному режимі і її вигляд у вьюпорте буде точно відповідати Рендер. Перетягуємо карту в режимі Instance.в слот Скаттер Mask в налаштуваннях обертання.
Саме час ще раз поглянути на референс. Довгі хвилини його розглядання привели мене до того, що я вивів одну важливу особливість даного килима: від ходіння по ньому ногами, деякі ділянки ворсинок збиваються і піднімають, тоді як інші ділянки більш щільно притиснуті до землі. Ділянки, які здіймаються, за своїм виглядом нагадують гірські хребти, тобто вони досить вузькі і звиваються як змії, перетинаючись один з одним. Червоним я виділив найвищі ділянки цих хребтів:
Такий же структури можна домогтися, якщо перевести Noise в режим Turbulence і поставити наступні настройки:
Кольори зелений і помаранчевий обрані далеко не випадково. На фінальний результат впливає все: відтінок, яскравість, насиченість. Багато дні тестів залишили саме цей варіант.
Якщо ви це ще не зробили, то тепер в настройках Скаттер можна збільшити кількість відображуваних у вьюпорте об'єктів до 10.000 (а то і більше), і ми зможемо розглянути поведінку об'єктів на площині:
Однак, для досягнення більш точних результатів все одно доведеться рендерить кожен етап.
Області "хребтів" нас влаштовують, а ось прим'яті ділянки необхідно додатково урізноманітнити, але щоб вони при цьому залишалися прим'ятими. Для цього в помаранчевий слот нашої карти Noise, що відповідає за прим'яті області, кладемо ще одну карту Noise, вже з іншими настройками:
Як бачите, колір обертання може бути не тільки кольоровим, а й чорним. Режим Noise вже Fractal, так як нам більше не потрібно структура гірських хребтів. Ось як виглядає фінальна карта на площині:
Чітко видно зелені хребти, а між ними оранжево-чорні рівнини. А ось об'єкти на ній:
Я думаю, ви погодитеся з тим, що на даному етапі вьюпорте допомагає дуже мало, вже не даючи уявлення про всю картину. Щоб зрозуміти, наскільки ж хорошим вийшов килим, потрібно отрендеріть його так, щоб падаючий світло підкреслив обсяг ворсинок.
Тепер нас влаштовує розподіл ворсинок по площині. Здається, ми подбали про все, і можна з завмиранням серця отрендеріть наш килим. Для гламурних і вкрай точних візуалізацій, коли потрібно показати кожну ворсинки у всій красі, доведеться використовувати метод Brute Force на первинному і вторинному відскоку GI. По крайней мере, таким чином мені вдалося показати реальний обсяг і підкреслити структуру килима:
З виходом MultiScatter процес розрахунку таких масивів прискорився, а також я отримав інформацію від деяких товаришів, які повідомляють, що килим за цим методом рендерится в інтер'єрі досить успішно.
Приємних килимів вам :)
Цитую qub:
Господа, підкажіть будь ласка як можна прискорити прорахунок Light cache.
Зробив килимок з уроку, причому Max count поставив 200 000 замість 400 000. Все дуже красиво, але Light cache Рендер 12 годин.
Проц i7 920 6Гб ОЗУ. Заздалегідь дякую
Переганяти весь килим в VRproxy і все, саме цей килим в 300000 укладається в 584мб, рендерится в інтер'єрі на ура. Озу на килим при цьому йде приблизно 3.8гб і лайткеш считаеться швидко, без проксі у мене схвалює більше 10 після цього я зупинив, на той момент розрахункове кількість часу на прорахунок лайткеша пішов в
Господа, підкажіть будь ласка як можна прискорити прорахунок Light cache.
Зробив килимок з уроку, причому Max count поставив 200 000 замість 400 000. Все дуже красиво, але Light cache Рендер 12 годин.
Проц i7 920 6Гб ОЗУ. Заздалегідь дякую
Чудовий урок-мейкін оф --- називайте як хочете
відмінний урок! Дякуємо
Діма, мені от цікаво, що за комп'ютери у тих товаришів, які пишуть, що в інтер'єрі цей килимок буде успішно рендери? Напевно моїх 8 гб оперативки явно замало і лайт кеш з не найвищими налаштуваннями вважався 11 годин (((Хоча килимок офігенно красивий. Пішла робити фуром (
Адміністратор Арх. галереї
Цитую paz:
Хороший урок. +5 Питання - Чи можна реалізувати анімацію трави даним методом?
Можна, можливо. Саму геометрію гнути не можна, але досить реалістичне рух трави легко реалізується за допомогою анімації карт повороту.
Викладач курсів RENDER.RU
Хороший урок. +5 Питання - Чи можна реалізувати анімацію трави даним методом?
Адміністратор Арх. галереї
Адміністратор Арх. галереї
Цитую clipper:
Я не зрозумів про що урок?
Я думаю, вам слід вдумливо перечитувати його раз по раз, і тоді ви все зрозумієте. Хай щастить)
Дякуємо! відмінний урок!
Адміністратор Арх. галереї
Забув написати в уроці. Істотна деталь, про яку багато хто забуває: підкладка під килимом повинна бути невидимою по краях. Тобто, ближче до центру килима її можна залишити на всякий випадок, щоб стать не просвічував, але якщо ми бачимо жорстку кордон, вибивали з під ворсинок по краях - це виглядає неохайно і некрасиво. Рішення просте: карта Gradient Ramp в режимі Box в слот Opacity, що робить підкладку прозорою по краях.
Адміністратор Арх. галереї
Цитую ELAGO:
Може хто небудь підкаже де в мультіскаттере кнопка "Move pivet to center" (розміщення нижніх точок на поверхні).
З одного боку, я її теж не знайшов, з іншого боку, там все простіше: оскільки мультіскаттер бере об'єкт прямо зі сцени, можна зміщувати і повертати півот у вихідного об'єкта, при це візуально ви відразу побачите зміна мультіскаттера.
Може хто небудь підкаже де в мультіскаттере кнопка "Move pivet to center" (розміщення нижніх точок на поверхні).