5 видов травы для VRay
Об авторе:
Здравствуйте меня зовут Оганджанян Тигран мне 18 лет, живу и учусь я в городе Челябинске. Я студент Южно-уральского государственного университета, Архитектурно-строительный факультет. Освоение компьютерной графики начал с 14 лет, мне очень нравится это направление и сегодня я хочу немножко поделиться своим опытом.
Введение:
Этот урок поможет вам создать реалистичную траву и при этом потратить минимальное количество времени на ее просчет при помощи VRay. В данном уроке я рассмотрю 5 способов создания газона, с использованием стандартных средств 3d max таких как:
· VrayDisplacementMod
· Vrayfur
· Hair and Fur (WSM)
P.S. VRay не являться стандартным визуализатором 3D Max-a, но в связи с его популярностью и массовым использованием, можно его приписать к стандартам.
А также с использованием специальных плагинов:
· Grassmatic
· GroundWiz
Это мой первый урок надеюсь он будет вам полезен.
Часть 1. Создание газона при помощи стандартных Средств и VRay
Пока я не начал, хочу заметить следующие, о данных принципах создания газона уже довольно подробно рассказывалось в уроке Алексея Тебенькова "Создание экстерьера и рендеринг при помощи плагина VRay". Но не один из способов который предложил Алексей, меня не устроил. Поэтому, то что рассказал Алексей (а именно создание травы при помощи VrayDisplacementMod, Vrayfur, Hair and Fur ) я повторять не буду, но новичкам советую прочитать сначала его урок. Я коротко дополню и укажу некоторые недостатки и преимущества, чтобы вы могли полноценно сравнить два других способа создания травы.
Итак, я создал маленькую простенькую сценку, где проведу соревнование по выращиванию виртуальной травы. Размер поляны 30х35 метров и я собираюсь засадить на нее 1 000 000 травинок. Победитель будет определен по 4-ом критериям: качеству, времени на просчет сцены, времени на создание газона функциональности.
1. Трава на основе VrayDisplacementMod.
Качество: Не удовлетворяет, скорее годиться для дальних планов, или для идеально ровно выстриженных лужаек.
Время просчета: Очень долгое, моему компьютеру далось это очень тяжело. Понять это легко посмотрев на количество граней в сцене 478 000 000.
Время создания: Очень быстрое, достаточно один раз сделать материал и сохранить его.
Функциональность: Как вы заметили, трава растет сквозь столб, это я специально оставил. На газоне всегда, что-то лежит или стоит, естественно под предметом не растет трава, и она не проходит сквозь предмет. Поэтому нам приодеться избавиться от травы под столбом. Тут возможны 2 способа: вырезать участок по контору столба в плоскости (земле) - этот способ подходит для всех типов газонов или при помощи карты указать то место где трава не должна расти. Оба способа неудобны и требуют много времени.
Для получения лучшего результата продеться уменьшить число Edge Length. Это уменьшит сетку на Displacement поверхностях, на нашей траве соответственно тоже (она станет более пушистой) время затрачиваемое на просчет увеличиться. Стандартно Edge Length стоит 4 (пикселя, на одно ребро). В моей сцене я поставил 2 pixels.
2. Трава на основе Hair and Fur (WSM)
Качество: Не удовлетворяет, Hair and Fur работает неисправно, травинки не воспринимают освящение VRay соответственно не воспринимают и не отбрасывают тени. Это можно частично исправить, но все равно трава Hair and Fur на VRay будет смотреться не очень.
Время просчета: Быстрое
Время создания: Среднее
Функциональность: Опять та же проблема со столбом, трава растет сквозь него. Для исправления придется: перейдите на вкладку Modify> Hair and Fur > Styling и при помощи инструмента Hair Cut убрать травинки там где они не нужны.
Этот инструмент прекрасно подходит для создания и шерсти (травы) и ее анимирования, благодаря свойству буферизации (шерсть (трава) просчитывается после финального рендеренга) скорость просчета очень хорошая. Безусловно, если разработчики совместили Hair and Fur и VRay то он бы выиграл это соревнование. А пока он мухлюет на просчетах теней, и поэтому удаляется с соревнований. В настройках рендеринга Rendering> Environment and effects> Hair and Fur. Во вкладке Lighting если установить флажок на geometry то трава будет считаться как реальный геометрический объект со всеми тенями как положено, но как показала практика если у вас 1 000 000 травинок в сцене, то даже начала рендеренга можно не дождаться, программа зависает.
3. Трава на основе Vrayfur
Качество: удовлетворяет, тут все нормально каждая травинка видна, с тенями и светом все в порядке.
Время просчета: Долгое
Время создания: Среднее
Функциональность: Работать с Vrayfur очень легко и просто, у него нет нечего лишнего.
И тут меня опередили, все параметры и основные настройки Vrayfur были рассказаны в уроке "Виреевский мех" автор: Самаковский Роман, хороший урок советую почитать, т.к. я повторяться не буду и лучше расскажу поподробней про VRayFur карты.
Наложить текстуру на травинки очень просто, достаточно выделить их и нажать кнопку присвоения материала. Окрашивается травинка в цвет который лежит под ее основанием. На рисунке ниже это хорошо видно. По такому же принципу работают и все другие карты VRayFur.
Что мне очень нравиться в VRayFur так это возможность управлять ростом шерсти (травы) при помощи карт. Вам предоставляется 7 типов карт, начнем с низу:
Density map - отвечает за плотность роста шерсти, травинок. Надпись (mono) означает что тут должна быть установлена черно-белая карта. По логике уже можно догадаться что там где темное пятно там пусто и чем светлее тем более густо растет наша шерсть (трава). Для наглядности вот вам цветодиаграмма в виде полоски, и самой плоскости с шерстинками.
Bend map - отвечает за уровень изгиба шерсти (травы)*.
Gravity map - За прижимаемость шерсти(травы)* к земле. Как бы под силой тяжести.
*Шерсть - Трава для нас тридэшникиов это по сути одно и тоже, разница лишь в цвете и размере, поэтому я в дальнейшем ну буду писать Шерсть(трава).
Thickness map - Отвечает за толщину травинок
Length map - Отвечает за длину (высоту) травинок
Bend direction map - отвечают за направление, угол (величину) изгиба. Как вы заметили напротив уже подписано (RGB) то есть эти карты поддерживают цветные изображения. Непонятно как!? Нет нечего сложного сейчас все разберем.
Я для наглядности нарисовал отдельно волосинку. Волосинка представляет собой согнутый цилиндр который чуть тоньше на конце. Эту волосинку мы мысленно помещаем в желтую плоскость и соединяем концы волосинки прямой ОА. Итак угол " β " - угол поворота (направление волосинки) передается через оттенки красного (R) и Зеленого (G) цвета. Угол изгиба " α ", это угол меду горизонталью и прямой ОА.
Теперь если взгляните на рисунок ниже все станет ясно.
Initial direction map- также передает направление роста через "β", по оттенкам красного и зеленого. А синий канал уже отвечат за угол наклона волоска "γ" (угол между горизонталью и касательной основания волоска).
Самое прекрасное в картах то что их можно анимировать! Да все 7 карт и карты текстур можно анимировать, что дает очень большие перспективы VRayFur.
Всё с VRayFur картами покончено возвращаемся к нашему соревнованию по выращиванию травы. И у нас на очереди стоит плагин для сеянья виртуальной травы Grassmatic.
Часть 2. Создание газона при помощи специальных плагинов Средств и VRay.
4. Трава на основе Grassmatic
Простой, маленький плагин. Т.к. о нем еще не кто не рассказывал быстро ознакомимся с его параметрами.
*- удобная функция при помощи которой можно избавиться от ненужных травинок, например под столбом. Для этого конвертируйте поверхность в Poly или Mesh, и выделяйте участки где должна расти трава. Как на рисунке ниже.
Как вы видите все действительно просто. Делаем вывод
Качество: удовлетворяет
Время просчета: Быстрое
Время создания: Быстрое
Функциональность: Очень простая в роботе, правда сильно нахватает карт как в VRayFur. Подходит только для создании травы. Больше всего мне понравилось возможность быстро ее анимировать, смотрится интересно.
5. Трава на основе плагина GroundWiz.
GroundWiz не предназначен для создания травы и шерсти, но прекрасно с этим справляется. И сейчас я вам это продемонстрирую.
Итак нам придется немножко потрудиться, нужно нарисовать травинку. Чтобы вы не гадали как именно, я покажу один самый простой и удобный способ в 6 шагов.
1) Создайте цилиндр: высотой ~20см; радиусом ~0,3см; кол-во сегментов по высоте 8, кол-во граней 4, кол-во сегментов в шляпке цилиндра 1.
2) Переименуйте наш цилиндр в Grass_high, и примените к нему модификатор Edit Poly*
*Примените именно модификатор! не конвертируйте цилиндр полностью в Edit Poly или Mash иначе вы не сможете вернуться в настройки параметров примитива "цилиндра".
3)Теперь удалите две грани и шляпки цилиндра, должен получиться вот такой уголок как на рисунке ниже.
4) Примените модификатор Taper и устоновите параметры Amount: -0.75; Curve: 1.0. Тем самым мы сузим конец нашей травинки.
5)Применим последный модификатор Bend. Значение Angle установим где-то на 80.
6) И всем на удивление перекрасим нашу травинку в материал ярко красного цвета, потом поймете зачем.
Травинка готова. Сделайте еще 2 ее копии. Переименуйте их в Grass_medium и Grass_low перекрасьте их в желтый и зеленый цвет соответственно.
Теперь смело перейдите на параметры примитива "цилиндра" и измените количество сегментов по высоте для Grass_medium на 4, для Grass_low на 1.
Теперь создайте плоскость (рельеф) земли на которой будет расти трава и можно позвать на помощь GroundWiz. Создайте его иконку в любом удобном для вас месте.
Я бы с радостью ознакомил вас со всеми параметрами GroundWiz, но боюсь тогда этот урок не прогрузиться на HTML странице (шутка). Но не волнуйтесь у GroundWiz есть прекрасный Help на английском языке, все наглядно и ясно. Поэтому я буду рассказывать только о тех параметрах которые коснуться в моем уроке.
Разверните свиток Planter Objects, в Ground Objects нажимаем Add/Pick и выделяем нашу плоскость (землю) на которой будет расти трава. В Planted Objects нажимаем Add и щелкаем по нашей красной травинке. Можно указать несколько поверхностей и несколько типов объектов. Но мы пока обойдемся чисто травой.
Теперь перейдем в свиток Plant: P_Grass_high. Переименуем его и слой в просто Grass. Collision Cylinder (цилиндры пересечений) наши травинки (объекты) окаймляются в цилиндры, и когда GroundWiz начинает располагать массивы травинок(объектов) на поверхности, он рассчитывает так, что бы цилиндры не пересекались между собой. Соответственно вписанные в них травинки(объекты) пересекаться тоже не будут. Пока оставим тут все по умолчанию. В Level of Detail (уровень отрисовки) нажмем add и добавим сначала желтую потом зеленую травинку. Кажется вы уже догадались, что травинки которые ближе к нам будут более детализированные, чем на дальнем фоне. Именно это поможет нам сэкономить огромное количество ресурсов и именно такой способ используются во всех компьютерных играх .
Прейдем в свиток Planting Tools (Инструменты для расстановки) в Planting Controls установим плотность роста травы Density per Unit: 0,03* в Mass Planting нажмем Plant Now.
*Density per Unit я установил плотность 0,03 т.к. на моей поляне размером 30м на 35м при такой плотности вырастит приблизительно 1 000 000 травы, как мы и договаривались.
Выскачет предупреждение: вы действительно хотите посадить 1 069 065 травинок? жмем да. И чуть-чуть подождем.
GroundWiz засеивает траву на нашей плоскости.
Но по окончанию мы замечаем что засажено всего лишь 157 839 травинок и засеяна трава только красного цвета т.е. высоко-детализированная. Не волнуемся сейчас все исправим.
Возвращаемся в свиток Plant: Grass в Collision Cylinder нажимаем Show и видим что наши цилиндры стоят плотнячком, и больше их суда действительно не впихнуть.
Остается только уменьшить их радиус. Чтоб наверняка ставим радиус 0,3 см. И повторно нажмем Plant Now в свитке Planting Tools. Теперь засеяно столько сколько положено.
Теперь разберемся с детализацией.
В свитке Plant: Grass в level of Detail Нужно поменять параметры в Max Visibility а именно MinScreen Size и Variation, желательно так как на моей анимированной картинке.
Объясняю что мы этим самым сделаем. Параметр MinScreen Size чем он больше, тем меньше расстояние от камеры до края массива этого объекта. Параметр Variation смешивает объекты разных детализаций на их стыке. Для Gress_low я поставил MinScreen Size и Variation чуть больше, чем казалось нужно было. Сделал я это для того чтоб порядить(уменьшить) количество травинок на заднем фоне, т.к. там они очень густые и если убрать пару тысяч травинок то это не кто не заметит*.
*Это не мухлеж за который можно удалить GroundWiz с соревнований, а это хитрый шаг в целях экономии ресурсов. Ведь нас интересует внешний вид картинки, а не точное количество травинок в сцене. Конечно и VRayFur мог бы воспользоваться этой системой, только для этого нам надо было бы рисовать ему карту, а в GroundWiz все просто.
Чтоб наши трава выглядела реалистичней ей нужно добавить хаотичности. Для этого идем в свиток Setup Transformation.
Pointing Direction отвечает за угол наклона объекта. Вот наглядный рисунок из хелпа.
Orientation Range (deg) X,Y в нашем случае отвечает за угол наклона травинки "γ", а Z за направление (угол поворота) "β"
Uniform Scale Range (%) Отвечает за вариацию масштаба.
Scale Range (%) Сейчас в нашем случае отвечает: X- за вариацию ширины травинки(масштабирование по оси X); Y- За вариацию величины изгиба "α" (масштабирования по оси Y); Z- За вариацию величины изгиба "α" (масштабирование по оси Z)
Surface Offset Range за вариацию высоты основания объекта над поверхностью земли. В нашем случае его лучше не трогать, если не хотите чтоб ваша трава летала в воздухе. Чтоб применить вариации нужно заново попросить GroundWiz посеять траву, нажав кнопку Plant Now.
Я надеюсь вы еще не удалили самые первые 3 травинки, они являются "родительскими". Их лучше просто скрыть, т.к. если вы хотите изменить форму или количество сегментов в траве вы можете изменить их в "родительских" травинках, и они автоматически применяться для всего массива травы.
Делаем вывод
Качество: удовлетворяет
Время просчета: Очень Быстрое
Время создания: Долгое, да нам пришлось поработать.
Функциональность: GroundWiz это мощный плагин при помощи которого можно создавать массивы объектов, специальные параметры и инструменты позволяют это делать легко и быстро. (Мне очень нравиться инструмент кисть, при помощи нее можно наносить объекты на плоскость как кистью в paint-e). Он имеет большое множество различных параметров, а также собственные карты и текстуры при помощи которых можно создавать натуральные, индустриальные и фантастические ландшафты.
Непременно победителем в моем соревновании по выращиванию травы становится GroundWiz! И на бис при помощи GroundWiz я продемонстрирую как можно легко избавиться от ненужной травы, которая нагло продолжает лезть сквозь столб.
Я еще нарисую футбольный мячик и положу его на траву, таким образом якобы усложню задачу.
Разверните свиток Setup Collisions / Layers, в Collisions напротив кнопки Add и Del введите название объектов в сцене сквозь которые не должна расти трава и нажмите add. В Max objects influence> Border Radius введите радиус вокруг которого трава будет расти реже и меньшего размера. При помощи параметров Density Min и Scale Min контролируйте минимальную плотность и размер травинок в этой области. Повторите сеянье травы.
Под самим мячом и столбом трава больше не растет однако кончики ее продолжаю протыкать поверхность мяча. На анимированном рисунке видно, что цилиндры в которые должна быть вписана трава, нормально огибают поверхность мяча.
Придется внести маленькую поправочку. Выделите родительскую травинку (которую мы нарисовали в самом начале) добавьте еще один модификатор Edit Poly. Перейдите под редактирование Element выделите всю травинку и поверните ее на 40 градусов против часовой стрелки, и переместите ее так чтоб основание вернулось в то же место до поворота. Как на рисунке.
Сделайте тоже самое с желтой и зеленой травинкой.
Смысл в том что теперь описывающие цилиндры хоть и не описывают травинку, но по крайней мере проходят через ее основание и конец. И не дадут ей пресекаться с объектами и другими травинками, что дает еще большую реалистичность. Выделите нашу взъерошенную траву раскройте свиток Plant: Grass в Collision Cylinder измените высоту цилиндра так чтоб он касался кончиков травинки, как на рисунке. Откройте свиток Setup transformations настройте параметры Orientation Range (deg) как на рисунке, для того чтобы вернуть траве нормальный угол наклона. Затем нажмите кнопку Plant Now.
Если все равно найдутся вредные травинки которые находиться не там где надо, то их можно индивидуально, переместить, повернуть, масштабировать и удалить вручную. Для это в листе модификаторов просто нажмите на плюсик GwPlanter и щелкните по Detailed Painting и теперь можете выделить травинки (объекты) массива и производить с ними те операции что я написал выше.
Я решил что одного миллиона травинок будет мало, поэтому чуть-чуть уменьшил их размер и засадил 4 800 000. Применил карту GroundWiz Variation и вот отрендерил наш мячик.
Теперь можно добавить деревья кустарники тяп-ляп и считай компьютер 15,5 миллионов граней. Затем можно побаловаться в Photoshop-е и получиться вот такая картинка. Конечно можно было добиться еще более быстрого и аккуратного редеринга, если поиграть его настройками, но это совсем другая история.
В заключение хочу заметить, что я нечего не рассказал про материалы которые использовал, не рассказал про настройки редеринга, я посчитал это лишним, потому что если вы полистаете список уроков на сайте Render.ru то найдете множество уроков где рассказывают непосредственно про настройки редеринга для получения быстрых и качественных изображений. Причем каждый "художник" использует свои параметры и настройки, так сказать по вкусу.
Еще я выкладываю все 5 файлов с разными типами травы и текстурами, кому то может они пригодятся Gress. И естественно ссылки на два замечательных плагина для 3d max 2009 (Grassmatic & GrounWiz). Скачивайте, ставьте, смотрите, учитесь. Но не засиживайтесь за компьютером, старайтесь каждый час делать перерывы, следите за осанкой когда сидите, не нервничайте когда что то не получается, со временем все получиться. Здоровье это самое главное, занимайтесь спортом!
Спасибо за внимание.