DataLife Engine > Уроки > Создание леса в мобильном генплане
Создание леса в мобильном генплане11 ноября 2010. Разместил: 3dart |
Здравствуйте, меня зовут Левченко Андрей Владимирович, родился и живу в г. Москве, женат на прекрасной женщине. 3d графикой занимаюсь третий год, но профессионально последние полгода. К 3d графике пришел не сразу, работал дизайнером, верстальщиком и понемножку осваивал основы визуализации, и вот наконец это стало моей профессией. Работаю в архитектурном бюро АРХИКОМА визуализатором. В мои обязанности входит моделинг и визуализация интерьеров, экстерьеров, а также отрисовка генпланов.
Вот о генпланах и пойдет сегодня речь. Случилось так, что мне пришлось столкнуться с такой проблемой как визуализация архитектурного генплана поселка в очень короткие сроки, за три дня без учета рабочего времени, то есть я занимался этим после работы. Как в такой ситуации получить достаточно качественный результат и мобильность проекта, то есть, чтобы рендеринг и постобработка заняли минимальное время, и можно было быстро вносить изменения по желанию заказчика. Пришлось быстро проанализировать ситуацию, и я пришел к выводу, что стоит разделить работу на три этапа. Кто и так умеет профессионально готовить текстуру может перейти сразу ко второму пункту. 1. Подготовка текстуры топологии 2. Моделинг, текстурирование и расстановка объектов 3. Создание ЛЕСА, настройка освещения, рендеринг Но все-таки на первый план данного урока мы выделим такую задачу, как создание леса, поэтому об остальном, я постараюсь рассказать более сжато. И в качестве инструмента для создания леса у нас будет выступать подключаемый плагин от компании itoo software Forest Pack Light. Да, для тех кто слышал об этой программе именно Light а не pro, так как мы будем использовать в своей работе 3ds max 2008, а версии pro я лично в сети ни где не нашел для данной версии макса. К тому же Light мы можем быстро прямо сейчас скачать с официального сайта разработчика здесь. Итак приступим. 1. Подготовка текстуры топологии Чтобы подготовить текстуру местности, нам понадобиться несколько хороших фотографий сделанных с высоты птичьего полета, любых, главное чтобы на них просматривалось какое-нибудь зеленое скошенное поле. Ну и разумеется чертеж вашего генплана, сделанный в Auto Cad или в другой программе и экспортированный в формат jpeg с размером в 4000Х4000 пикселей. Как показали опыты, в дальнейшем такое разрешение будущей текстуры даст наиболее качественный результат. Хотя, если кому-то не хватает компьютерных ресурсов, можно сделать и 2000Х2000 пикселей. Открываем Photoshop, создаем новый документ 4000Х4000 пикселей и вставляем на новый слой наш генплан, даем ему прозрачность 30% и пока отключаем видимость. Далее обрезаем снимки с птичьего полета, чтобы попадало только поле и газон, и помещаем на новый слой будущей текстуры. Инструментами штампа и выделения копируем наиболее фактурные участки фотографий. И самое главное, что необходимо сделать - это понизить общую яркость картинки, так как в конечном итоге под источником света она немного выгорит. Должно получиться что-то в этом роде. Далее включаем слой с чертежом и с помощью полигонального лассо, с нулевой растушевкой, выделяем границы поселка, преобразуем, выделение в маску, нажатием соответствующей клавиши на палитре layers . Благодаря этой операции будет виден только тот участок текстуры, который попал внутрь выделения, а все остальное скроет маска. Также эту маску можно будет использовать и в будущих проектах. То есть мы делаем универсальную текстуру топологии. Следующее что нам необходимо сделать, это нарисовать дороги разметку и тротуары. И мы пойдем по тому же принципу что и раньше, вставим из стандартной библиотеки 3ds max на новый слой текстуру асфальта или штукатурки, и размножим по всему документу, подправив швы инструментом штамп. Опускаем слой с асфальтом под слой с чертежом и начинаем отрисовывать границы асфальта инструментом перо . Главное не забудьте замкнуть сплайн. Преобразуем получившеюся кривую в выделение, нажав правую кнопку мыши, и указав команду make selections. Далее опять преобразуем в маску. Состарим немного дорогу. Двойным щелчком на иконке со слоем асфальта перейдем в Blending options и настроим внутреннее свечение inner glow таким образом, чтобы получилась небольшая «препыленность» дороги как на картинке 1. Следующим шагом будет создание тротуара, опять заходим в Blending options и настраиваем обводку Stroke, выбираем тип заливки pattern-узор предварительно приготовленной текстуры бордюрного камня результат (картинка 2). Теперь отделяем тротуар от асфальта, жмем правой кнопкой на полученном свойстве слоя Stroke (картинка 3) и указываем команду Create Layer. Выделяем получившийся слой и с зажатой клавишей ctrl указываем на иконку слоя асфальта. Таким образом, мы сделали обрезку слоя с тротуаром. Теперь переместим слой с тротуаром под cherteg и ластиком удалим ненужные участки, которых нет на чертеже (это сделать удобнее квадратной кистью) картинка 4. Далее что осталось сделать это бордюрный камень (опять же с помощью stroke в Blending options только с позицией внутрь, картинка 4.), дорожную разметку квадратной почти белой кистью. Тропинки делаются таким же способом что и асфальт только нужно взять текстуру песка для заливки. Сохраняем нашу универсальную текстуру в формате psd, не склеивая слоев, куда-нибудь в доступное место для использования в других проектах. А также сохраняем в формате jpg для текущего проекта и обрезаем инструментом Crop по границам поселка. Внимание для большего реализма можно создать тень от бордюрного камня Drop shadow в Blending options. В конечном результате должна получиться текстура похожая на эту. 2. Моделинг, текстурирование и расстановка объектов Следующим этапом создания генплана будет моделирование. Для начала сделаем из получившейся текстуры еще одну копию меньшего размера (1000 точек по ширине). Нам она понадобиться в качестве шаблона для более корректного отображения в максе. Открываем 3ds max 2008, и на виде сверху (top) жмем Alt+B или меню views/View port Backgrounds и в секции Aspect Ratio поставьте Match Background (сопоставить заднему фону) а также поставить галочки Display Background (отобразить фон) и Lock Zoom/Pan (запереть масштабирование). Теперь в секции Background Source идем в files и указываем в качестве источника уменьшенную копию текстуры. Во вьювпорте должна отобразиться текстура, и она будет зафиксирована в пространстве. Далее меняем единицы измерения в программе на метры (customize/units setup/metric). Теперь на панели создания выбираем shapes/Line и очерчиваем кривой поселок, не забыв замкнуть в конце конечные вершины. Дальше нам необходимо инструментом Scale увеличить кривую в соответствии с реальным размером зоны поселка. В Автокаде я замерил требуемый участок и у меня получились такие размеры: 370 метров в горизонтальном сечении и 306 метров в вертикальном. Теперь идем во вкладку Utilities на панели создания и щелкаем на кнопке с квадратиками, чтобы добавить дополнительную кнопку в список дополнительных утилит. Увеличиваем количество ячеек Total Buttons на одну, и, в пустую появившуюся ячейку, перетаскиваем из списка слева утилиту Measures (измерения). Эта утилита будет отображать реальные размеры объекта независимо от различных преобразований (картинка 5). Теперь активируем утилиту, и нажмем кнопку New Floater, чтобы она стала плавающей панелью. Инструментом Scale, поглядывая на значения X и Y, увеличиваем кривую до нужного размера (X=370, Y=306). После масштабирования опять идем во вкладку Utilities и используем Reset Xform (картинка 5) для того чтобы сбросить получившиеся результаты масштабирования до реальных, которые показывает утилита Measures (картинка 6). Это нужно в дальнейшем для корректного применения различных модификаторов. После применения в стек модификаторов автоматически добавиться строка Reset Xform. Тут же можно сколапсить (Collapse all) получившийся результат. Теперь выдавим кривую на 1м модификатором Extrude. Далее наложим текстуру на объект. На данном этапе мы будем использовать меньшую картинку текстуры, так как я заметил, что если накладывать сразу большую она неправильно будет отображаться во вьювпорте, хотя при рендере все нормально. Нам сейчас нужна точность, чтобы потом правильно расставить объекты. Итак, применяем текстуру к полученному объекту и используем модификатор UVW Mapping чтобы правильно натянуть ее. Тип меппинга можно использовать Box или Planar (картинка 7). Если текстура немного не соответствует, подправляем кривую. Моделирование домов, не буду углубляться в этом моменте, так как хватает уроков на эту тему, но обращу внимание на аспекты. В данном проекте общее количество домов равно 40. Всего 7 конфигураций коттеджных домов, сделанных в одном стиле, но с разной планировкой. Так же имеется баня на каждый участок. Дома утверждены и имеются чертежи. Такое количество и конфигурация домов вполне приемлема, чтобы использовать не упрощенные модели копируя методом instance (клон). В первую очередь я создавал новую сцену под каждый дом и импортировал чертеж из Автокада вида сверху. Группируем импортированные линии, так как обычно чертежи сделанные в Автокаде исправляются большое количество раз, и в конечном итоге не являются замкнутыми полилиниями. Заморозим объект, щелкнув на нем правой кнопкой мыши и указав строку Freeze Selection (заморозить выделенное). Так же можно импортировать чертежи фасадов и расположить вплотную вертикально к чертежу вида сверху. Далее на верхней панели инструментов в секции привязок щелкнем правой кнопкой мыши, выскачет всплывающее окно Grid and Snap setting 1. На вкладке Snaps (привязки) поставьте галочку в поле Vertex (вершины) 2. На следующей вкладке options поставьте галочку в секции general в поле Snap to frozen objects , что активирует привязку к замороженным объектам 3. Теперь на панели привязки активируйте привязку 2.5. Это псевдо 3d-привязка позволяет строить вершины в трехмерном пространстве, при этом, не разворачивая вершины в плоскость и рисуя на высоте 0. Так делается, чтобы в последствии выдавливание происходило вверх, а не в плоскости. Снова используем кривую, чтобы построить стены по всему периметру. Внутренние стены моделировать необязательно. Отключаем галочку Start New Shape, чтобы каждая новая кривая не была отдельной 4. Обрисовываем отдельные участки наружной стены, каждый раз замыкая кривую. Теперь выдавливаем получившуюся форму модификатором Extrude (выдавливание) на высоту, которую видно по чертежу фасада. Преобразуем получившийся объект в Editable Poly, с помощью slice plane(режущая плоскость) режим полигоны на уровне будущих окон и дверей. С помощью Bridge (мост) соединяем полигоны. На этом я остановлюсь и рассмотрим случай, когда количество домов доходит до двухсот. Если дома бревенчатые, то можно взять текстуру бревна наложить на стены и увеличить воздействие карты рельефа. А в том варианте, когда дома уже моделировались, но они очень тяжелые. Тогда достаточно нарисовать коробку готового здания в отдельном файле, и выступающие его части (например: балконы или крыльцо). Окна здания при этом рисовать не надо. Визуализируем фасады готового здания и натянем на нашу коробку. Такой дом будет весить минимальное количество полигонов. Такого качества вполне хватит, чтобы сцена с высоты птичьего полета выглядела достаточно хорошо. Идем дальше ограждение. Не стоит создавать забор со сложной конфигурацией. Вот пример забора, который можно использовать. Металлическая секция была нарисована сплайном потом на уровне spline с помощью outline (обводка) в свойствах линии была придана толщина будущей панели. Затем применим хорошо знакомый нам модификатор extrude (выдавить). Столбы с основой тоже делаются сплайном с выдавливанием в окне front или left. Теперь на виде сверху опять сплайном, сверяясь с чертежом, очертим линию границы поселка, по которой будет проходить забор. Далее группируем секцию, идем на вкладку Hierarchy (иерархия), справа на панели создания. Нажимаем кнопку Affect Pivot Only (воздействовать только на привязки), что отделит оси от объекта. Затем нажмите кнопку Center to Object, чтобы выровнить оси по центру объекта. Отожмите Affect Pivot Only. Мы сделали это, чтобы правильно воспользоваться инструментом Spacing Tool (инструмент пространства). С помощью этого инструмента можно сделать множества копий вдоль сплайна, например. Выставляем секцию перпендикулярно к началу сплайна пути, нажимаем shift+I (или идем в меню Tools/Spacing Tools). В появившимся окне нажимаем кнопку Pick Patch (1) и указываем сплайн. Ставим галочку напротив Count (число) (2), а так же галочку напротив Follow (следование) (3), в секции Type of Object поставьте instance (образец), затем поглядывая в окно проекции ставим такое количество копий, чтобы секции срослись в один забор. В заключении нажмите Apply и Clouse. Теперь вдоль всей линии у нас вытянулся забор. Такой метод копирования отличителен тем, что копии могут следовать по любому изогнутому с поворотами пути. Теперь расставляем дома и объекты на места их расположения, это легко сделать, потому что все как на ладони. Дома придвигаем к выездам, еще есть окончания дорожек, которые приведут нас к беседкам на берегу. Еще можно добавить низкополигональные модели машин, людей или воспользоваться библиотеками RPC. Но не стоит сильно увлекаться, все-таки это генплан и нам не нужна съемка с близкого расстояния. Далее посмотрев на фотографии местности, где будет стоять поселок, я дорисовал дополнительные островки, противоположный берег, ну и направление разлив самой реки. Текстуру для этих земель я использовал нашу универсальную, подкорректировав маски и удалив дороги. Честно скажу на воде не стал «зоморачиваться», а просто использовал, материал, с синим цветом поставив в слот рельефа карту Noise (шум). Уроков по созданию воды итак хватает. Ну что же вот мы и подошли к самому главному разделу. 3. Создание ЛЕСА, настройка освещения, рендеринг Для того чтобы создать лес нужно сначала определиться, как где и какие участки сцены будут заполнены деревьями. Мне повезло, у меня есть фотографии – раз, и у меня есть схема озеленения поселка – два. В любом случае можно воспользоваться воображением. Теперь рассказываю, как действует forest pack. Этот инструмент создает от одной до мульти пересекающихся плоскостей, которые помещаются в контейнеры, в качестве контейнеров используются замкнутые сплайны. Количество полигонов при этом очень мало. Но чтобы создать большой лес понадобиться все же достаточно мощная видеокарта, для отображения во вьвпорте, а у меня есть только Readon X700, сравни Ge force 6. Чтобы обойти эту проблему мы сначала создадим и настроим отдельный участок деревьев (это будет сам поселок) а потом добавим и всю остальную территорию леса. Итак, на виде сверху сплайном начертим участки, которые будут заполнены деревьями. Главное не забудьте снять галочку (Start New Shape), на панели создания, чтобы каждый новый сплайн не был отдельным объектом. Еще учтите, что нельзя чертить сплайн внутри сплайна, так как это лайт версия программы, мы не сможем настроить исключение деревьев на пустом внутреннем участке. Белым цветом я обозначил полученные участки. Теперь идем на вкладку Geometry и из списка ниже выбираем itoo Software. Нажимаем кнопку Forest Lite 3, появляется перекрестие, подводим к сплайну, перекрестие видоизменяется, жмем левой кнопкой мыши. Идем на панель Modify, раскрываем свиток Geometry, в окне Geometry list появилась иконка напротив которой стоит 100% - это значит, что мы создали один вид деревьев, которые будут заполнять сто процентов высаживаемой площади. Можно переименовать набор в Trees 1. В последствии мы добавим еще два набора, чтобы у нас было три вида деревьев. Далее щелкаем на кнопке Library, появляется библиотека, выбираем любое дерево. Нам не принципиально какое дерево, так как в библиотеки деревья низшего качества и в последствии мы заменим их на лучшие. Спускаемся чуть ниже, видим свиток, где сейчас написано One Plane (одна плоскость). Переставим на Two Planes (две плоскости), теперь у нас две пересекающиеся плоскости для каждого дерева. Ниже имеются два поля Weight и Height это, и есть ширина и высота каждого дерева. Эти величины всегда в миллиметрах, поэтому ставим значения, например 6000 и 8000. В окне вьювпорта появились деревья. Нажимаем кнопку М, вызвав этим окно редактора материалов. Выбираем свободную ячейку, берем пипетку и щелкаем на деревьях. В ячейке появится материал Multi/Sub-Object (многокомпонентный), в котором находится пока единственный материал Forest Material. В качестве базового материала (base material) стоит стандартный материал, у которого в канале основного цвета (diffuse) и канала прозрачности (opacity) стоит карта bitmap. Заменим эти картинки на качественные. Я воспользовался сборником текстур Total textures. Разрешение картинок я сделал равное 1000 точек по высоте. Настраиваем дальше: переходим в свиток Distribution Map (карта распределения). В качестве карты распределения используется обычный встроенный черно-белый bitmap, где белые точки и есть деревья. Из списка пресетов опытным путем я подобрал набор под названием Spread 3 (распространение 3). Этот параметр подбирается единожды, и будет действовать для всех типов деревьев. Также заполнение деревьями можно отрегулировать с помощью секции Size, которая находится чуть ниже. Сейчас там стоят значения X=120 м Y=120 м. Чем меньше эти значения, тем больше заполнение деревьями. Галочка Lock Aspect ratio означает, что параметры будут связаны и изменяются одновременно. С помощью свитка Tree editions можно отрегулировать каждое дерево по отдельности; его высоту ширину место положения. Для этого в секции Mode нужно поставить точку на Custom Edit, далее нажать значок с изображением дерева. Все деревья подсветятся белыми плоскостями. Выбираем плоскость, сдвигаем ее на любое место или изменяем ширину и высоту в полях расположенных ниже. Можно также отсоединить редактируемое дерево в секции Detach. Следующий свиток Camera позволяет управлять параметрами видимости деревьев из камеры. Во-первых, используя этот инструмент деревья, будут всегда повернуты к нам лицевой стороной плоскости, и не будет видно остальное количество пересекающихся плоскостей. Во-вторых, с помощью этого инструмента можно исключить те деревья, которые не попадают в камеру. Это удобно, ведь тогда исключенные деревья не будут участвовать в рендере. Если в сцене одна камера то нажмите на кнопке NONE, а потом щелкните указателем на камере. Если камер несколько, то поставьте галочку Auto assign to active view (автоматически присвоить активному виду). Это значит, что на какую камеру вы бы не переключались, настройки будут действовать. В секции Area можно настроить лимит видимости. Увеличивая Expand (извлечь) мы увеличиваем область заполнения деревьями за камерой. В секции DensityFallof можно отрегулировать плотность заполнения. Далее поднимаемся обратно в свиток geometry и добавляем кнопкой add еще 2 пресета Trees2 и Trees3. Проделываем все сказанное выше за исключением свитков Distribution Map и Camera. Настройка освещения. Освещение мы будем просчитывать с помощью V-ray. Я беру универсальные настройки сцены, которые часто использую для экстерьеров, хотя для каждого проекта свои подходы. На виде сверху создаем источник света типа Target Direct (нацеленный направленный) перпендикулярно камере, так чтобы его цель была направлена на центр поселка. В виде перспектива поднимаем источник света вверх. Идем на вкладку Modify. Тип теней Shadows ставим VrayShadow. Множитель света Multiplier ставим равное 1.2. Цвет чуть желтоватый. В свитке Directional Parameters указываем галочку Overshoot, что позволит выстреливать фотоны на всю сцену целиком, а не в узконаправленный коридор. Увеличиваем параметр Falloff/Field до такого размера, чтобы коридор цилиндрической формы расширился и покрывал всю геометрию сцены, это делается, чтобы у нас везде были тени от объектов. Также ставим галочку Area shadow (пространственные тени). Количество сабдивов (subdivs) увеличиваем до 15, солнце готово. Дальше на виде сверху над поселком создаем Vray light типа Dome (Купол), множитель ставим равный 1. Цвет ставим чуть голубоватый, количество сабдивов ставим 12. Далее ставим галочку invisible, чтобы не было видно голубого купола над нашей сценой, но в тоже время шло излучение света. Еще поставим галочку Store with irradiance map (запомнить с картой светимости), это немного ускорит время визуализации. Поднимаем источник света на уровень высоты с солнцем, небо готово. Теперь настроим GI. Установим настройки таким образом, чтобы основная нагрузка легла на первичную карту освещенности типа irradiance map (карта освещенности) а вторичная была вспомогательной Light Cash (Накопление света). На вкладке Global switches снимем флажки Default light и Hidden light, чтобы в просчет не попали случайно источники света по умолчанию или спрятанные. На вкладке Image sampler установим тип самплера Adaptive DMC, во-первых он берет меньше оперативной памяти а во-вторых лучше работает с мелкими деталями. Тип сглаживания Antialasing поставим Catmull-Rom, что придаст больше четкости картинке. В некоторых случаях, если сцена очень сложна, сглаживание отключают вообще дабы увеличить скорость просчета. И уже в процессе постобработки добавляют резкости картинке, но это не наш случай, так как мы делали все по минимум. DMC я оставил без изменений. Тип цветовой карты установил Reinhard, чтобы получить средний результат между Линейным и Экспонентальным режимом, понизив Burn value до 0.5. Так же повысим множитель до 1.2, чтобы повысить яркость картинки. Переходим на вкладку GI. Немного повысим общий контраст Contrast base до 0.9. Ставим в качестве первичной карты irradiance map (карта освещенности), для вторичной Light Cache (накопление света). Повысим качество первичной карты, из списка Current preset выберем High, затем сразу же переставим на Custom, немножко изменим пресет. Повысим количество сабдивов до 70 (Hsph. Subdivs), чтобы исключить артефакты. Количество семплов (interp samples) понизим до 15 опять же чтобы придать четкости картинке. Calc. Pass interp. Samples тоже поставим 15. Снимите галочку с Multipass, если у вас многопроцессорный компьютер. Поставьте галочку на Show calc. Phase чтобы наблюдать процесс просчета карты. Понизим качество вторичной карты Light Cash (накопление света), для более быстрого просчета. Количество сабдивов установим в 500. Samplesize 0.01. Количество проходов Number of passes измените на 4 если у вас двуядерный процессор. Отключим фильтрацию, которая происходит во время визуализации, и включим pre filter, поставив значение 100. Включите show calc. Phase, чтобы увидеть просчет карты. Изменим встроенный DMC sampler. Адаптацию Adaptive amount понизим до 0.75. Порог шума Noise threshold 0.008. На вкладке system размер бакета, который будет бегать по экрану, поставьте размером X=100 Y=100 пикселей. Метод использования виртуальной памяти Default Geometry поставьте dynamic. Лимит установите в 3000 MB. Визуализируйте картинку (1200 точек по ширине), время просчета не двуядерном процессоре, должно занять примерно 30 минут. Если картинка недостаточно яркая прибавьте Multiplayer в цветовой карте Reinhard. Если все устраивает последнее что мы сделаем, это заменим текстуру топологии на высокого разрешения (4000X4000 пикселей); добавим основную массу леса вокруг поселка; добавим фоновый рисунок облаков. Скроем слой с деревьями, оставив сплайн в который они были помещены. Выделите сплайн на виде сверху, перейдем в свиток geometry на панели modify, нажмите на кнопку Create Line (создать линию) еще поставьте галочку Automatic Welding, чтобы если вы прервались в создании линии можно было указать на последнюю вершину, и она объединилась с новь создаваемой. Начертите замкнутые сплайны на территориях, где должен проходить лес. Вновь отобразите слой с деревьями, если все в порядке, то на новых местах появились деревья. Вот конечный результат визуализации С врисовкой в фотографию. Вопросы по уроку направляйте по адресу drimer06@rambler.ru. Спасибо за внимание. По материалам Render.Ru Вернуться назад |