Глава 1 Подготовка к построению ландшафта
Любая архитектура, будь то здание или малая архитектурная форма, возводится на земле, то есть на ландшафте. В зависимости от местности это может быть равнинный, холмистый или горный ландшафт, с возвышенностями и водоемами, скальными выступами и береговой чертой моря. Задача при построении такого ландшафта – выбрать правильный способ моделирования, чтобы максимально сэкономить ресурсы и дифференцированно смоделировать весь объем ландшафта с необходимой детализацией. Есть достаточно много путей смоделировать ландшафт, включая использование специального программного обеспечения вроде ProSite или подобных ему программ. Но наша задача – строить по возможности всё в 3ds Max, тем более что в нем достаточно много подходящих для этой цели инструментов и способов. Давайте рассмотрим некоторые из них, а потом выберем наиболее подходящий для наших задач.
Для начала рассмотрим небольшой гипотетический план местности, представленный в виде изолиний с картой высот (рис. 1.1).
Рис. 1.1. Чертеж местности в изолиниях
Оговорюсь сразу: мы не будем строить точный геодезический план местности, в наш круг задач это не входит. Наша задача – сделать местность узнаваемой. Ведь мы делаем архитектурную презентацию зданий, по большому счету – красивую картинку для потенциального клиента. И небольшие неточности в ландшафте вполне допустимы. Поэтому уровень детализации должен быть умеренным, чтобы создаваемая сетка не была слишком емкой по требованиям к компьютерным ресурсам. Они нам еще понадобятся в дальнейшем.
Создадим модель ландшафта одним из способов – выдавливанием сетки с помощью модификатора Displace Mesh (Смещение поверхности). Для этого нам понадобится растровая карта высот – ее мы сделаем в программе Photoshop. Принцип работы этой карты несложен: черный цвет соответствует нулевой отметке высоты, белый – максимальному уровню подъема, градиент от черного к белому – переходу между высотами. Но нам необходимо привязаться к реальным, указанным на чертеже размерам. Поэтому для начала давайте создадим в 3ds Max новую сцену и выставим в ней масштаб нашего проекта. В зависимости от проекта это могут быть и миллиметры, и сантиметры, и метры. В данном случае выставим масштаб в сантиметрах.
Выполните команду меню Customize → Units Setup (Настройки → Установка единиц). В окне Sistem Unit Setup (Установка системных единиц) выберите сантиметры (рис. 1.2). В этом масштабе будет сохраняться и экспортироваться сцена. В области Display Unit Scale (Отображение единиц масштаба) окна Units Setup (Установка единиц) также выставьте сантиметры. В сантиметрах будут отображаться все цифровые значения объектов в сцене.
Рис. 1.2. Установка единиц измерения
Следующий этап – построение собственно самой сетки, из которой будет выдавливаться ландшафт. Необходимо соблюсти пропорциональность создаваемой сетки с имеющимся в нашем распоряжении чертежом. В данном случае это изображение 768 х 1024 пикселов. Значит, и сетка должна быть создана в тех же пропорциях.
Возьмите объект Plane (Плоскость) из Standart Primitives (Стандартные примитивы). Задайте 768 см по длине и 1024 см по ширине объекта (поля Length (Длина) и Width (Ширина) в свитке Parametres (Параметры)). Количество сегментов по длине (поле Length Segs) установите 30 единиц, по ширине (поле Width Segs) – 40 единиц (рис. 1.3). Сильно усердствовать тут не обязательно: нужную плотность сетки будете добавлять по мере необходимости в местах скопления мелких деталей. Разбить сетку на более мелкие сегменты вам понадобится для дальнейшей «ручной» доводки созданного объекта. Конвертируйте полученный объект в редактируемый полигон, щелкнув на объекте правой кнопкой мыши и выполнив команду контекстного меню Convert To → Convert To Editable Poly (Конвертировать в → Конвертировать в редактируемый полигон).
Рис. 1.3. Создание заготовки ландшафта
Следующий этап – изготовление карты выдавливания в программе Photoshop. Придется запустить на компьютере сразу две программы – 3ds Max и Photoshop, – чтобы интерактивно наблюдать за результатом и вносить необходимые поправки.
Создайте новый документ (рис. 1.4) размером 768 х 1024 пикселов; из вариантов Color Mode (Модель цвета) выберите Grayscale (Шкала яркости): создаваемое изображение нам необходимо в оттенках черного и белого, цвет нам совсем не нужен, и это позволит сделать карту менее требовательной к ресурсам компьютера.
Рис. 1.4. Создание заготовки карты высот
Теперь загрузим изображение чертежа и положим его вторым слоем, чтобы можно было рисовать, ориентируясь на контуры изолиний.
DVD
Файл чертежа – Карта высот.jpg – находится на диске в директории Examples\Сцены\Глава 1.
Откройте файл чертежа и клавиатурной командой Ctrl+A выделите весь объект (рис. 1.5). Эту операцию можно произвести и с помощью команды меню Select → All (Выделить → Все).
Рис. 1.5. Выделение изображения чертежа
Скопируйте выделенное изображение в буфер обмена командой Edit → Copy (Правка → Копировать) или клавиатурной комбинацией Ctrl+C. Закройте без сохранения ненужный более документ и перейдите в изображение заготовки карты высот. Командой Edit → Paste (Правка → Вставить) наложите изображение из буфера обмена на чистый белый лист, на котором мы будем рисовать. Откройте палитру Layers (Слои) и уменьшите прозрачность слоя до 25 % (рис. 1.6).
Рис. 1.6. Уменьшение прозрачности слоя
Сделайте активным слой Background. На этом слое мы будем рисовать карту высот, при необходимости уменьшая прозрачность верхнего слоя с контурами высот для коррекции рисунка. Приступим.
Как вы помните, чистый черный цвет – это нулевая отметка высоты. Белый – максимальная высота. Выберите инструмент Lasso (Лассо) (или любой другой удобный для вас инструмент) и обведите наружный контур кривой высот. Не старайтесь делать это очень точно: все равно потом придется применять размытие и ручную доработку кистью. Замкните выделение и залейте полученную область светло-серым цветом (RGB 190:190:190) (рис. 1.7).
Рис. 1.7. Заливка первого выделенного контура
Примечание
Мы специально рисуем негативом, чтобы было легче контролировать контуры чертежа. Инвертировать (поменять местами белый с черным) потом не составит труда.
Постепенно выделяйте контуры высот от края к центру и заливайте их все более темными оттенками серого. Помните, что контуры одинаковой высоты должны быть залиты одинаковым по насыщенности цветом (рис. 1.8).
Рис. 1.8. Заливка контуров
Примечание
Можно заливать контуры сразу по рисунку первого слоя, не создавая области выделения. Нарисованные линии и будут служить этими контурами. Но заливать придется более аккуратными движениями: если вы ошибетесь и зальете одним цветом две разные позиции высот, придется проделывать операцию заново. В любом случае два способа дают возможность выбора.
Итак, продолжим. Как видите, контуры с отрицательной высотой (углубления с отметками -0,5,-1,-2) остались нетронутыми – не можем же мы сделать цвет белее белого. А усложнять рисование, назначая нулевой отметке не чисто белый цвет, а градиент, не хочется: потом, рисуя сложный рельеф, можно запутаться. Проще это сделать уже по готовой сетке на уровне редактирования полигонов непосредственно в 3ds Max.
Теперь, когда рисунок карты высот практически готов, удалим слой с контурами: он больше не нужен, – и к основному слою применим фильтр размытия по Гауссу (из группы фильтров Blur (Размытие)) с небольшим значением – примерно 20 пикселов. Осталось только поменять местами значения черного и белого командой меню Image → Adjustments → Invert (Изображение → Коррекция → Инвертировать) (рис. 1.9).
Рис. 1.9. Инвертирование изображения
При желании можно доработать детали изображения другими инструментами, кистями и размытием. Но следует помнить, что это лишь грубая заготовка высот и лучше доводить детали до ума, уже непосредственно редактируя сетку полигонов.
Сохраните созданную картинку в формате JPG с максимальным качеством, закройте Photoshop и вернитесь в 3ds Max.
Примените к созданной ранее заготовке ландшафта материал Standard (Стандартный) при выбранном визуализаторе V-Ray. В свитке Maps (Карты текстур) в слот Displace (Смещение) добавьте созданную карту (рис. 1.10).
Рис. 1.10. Назначение карты в слот смещения
Примечание
Материалы в редакторе материалов отображаются в отдельных ячейках в виде пустых черных кружков. Мы специально задали такой тип отображения, выбрав для предварительного просмотра материалов не V-Ray, а стандартный визуализатор 3ds Max. Это значительно снизит нагрузку на видеокарту. Кроме того, настроить материал V-Ray, ориентируясь на его отображение в ячейке редактора материалов, можно только приблизительно – лучше это делать по тестовым рендерам непосредственно в сцене.
Примените к объекту модификатор Disp Approx (Аппроксимация смещения) с настройками по умолчанию. Если теперь визуализировать сцену, будет видно, что карта высот преобразовала плоскость и на ней появились возвышенности, но сама сетка при этом не претерпела никаких изменений. В этом как раз и состоит основа работы модификатора Disp Approx (Аппроксимация смещения). Но нам нужна настоящая сетка, которую можно редактировать и на которой можно будет располагать элементы архитектуры. Примените к объекту модификатор Displace (Смещение) вместо Disp Approx (Аппроксимация смещения). Он предназначен как раз для этой цели (рис. 1.11).
Рис. 1.11. Применение модификатора Displace (Смещение)
Для параметра Strength (Сила выдавливания) из свитка Parameters (Параметры) модификатора Displace (Смещение) установите значение, соответствующее максимально высокой отметке согласно вашему чертежу. Нажав кнопку Bitmap (Растровая карта) модификатора, загрузите созданную карту высот.
Таким способом изготовления ландшафта невозможно построить точную геодезическую карту по изолиниям, многое приходится делать на глазок или корректируя положение отдельных высот по стоящим рядом параметрическим объектам-лекалам (рис. 1.12).
Рис. 1.12. Корректировка высоты сетки по объектам-лекалам
Теперь можно перейти к более детальной проработке ландшафта. У нас отсутствует отмеченное на плане углубление – водоем.
Откройте в редакторе материалов назначенный объекту материал и удалите из слота Displace (Смещение) назначенную ранее текстуру карты высоты. Это можно сделать, перенеся свободный слот с обозначением None (Нет) на слот смещения. В слот Diffuse (Основной цвет материала) добавьте карту с изображением изолиний. Теперь поверх объекта появилось изображение чертежа (рис. 1.13).
Рис. 1.13. Проецирование карты изолиний на объект
Конвертируйте объект еще раз в редактируемую сетку.
Чтобы чертеж отображался в окне просмотра с максимальным качеством, необходимо настроить некоторые параметры графического драйвера. Выполните команду меню Customize → Preferences (Настройки → Предпочтения), перейдите на вкладку Viewports (Окна проекций), нажмите кнопку Configure Drives (Конфигурация драйверов), в окне Configure Direct3D (Конфигурация Direct3D) установите значения согласно рис. 1.14 и перезапустите 3ds Max. Чертеж отобразится на экране с максимальным качеством, которое будет определяться качеством непосредственно самого чертежа.
Рис. 1.14. Настройка графического драйвера
Примечание
Забегая вперед, отмечу, что для получения качественной карты выдавливания размер картинки (разрешение) должен быть достаточно большим. Карта, например, 512 х 512 пикселов даст шумный конечный результат, особенно в местах резких переходов. И даже карта с хорошим разрешением требует небольшого эффекта размытия (Blur) для получения более качественного эффекта (что мы с вами и проделали, когда рисовали карту высот в Photoshop).
Перейдем к редактированию сетки. Как видно, область углубления создана довольно небольшим количеством полигонов – смоделировать необходимую детализацию на них не удастся. Необходимо увеличить шаг сетки, но не на всем объекте, а локально – только на нужной области. Выделите полигоны, обрамляющие область «водоема» (рис. 1.15).
Рис. 1.15. Выделение полигонов в местах повышенной детализации
Активизируйте инструмент Tessellate (Мозаика) из набора инструментов полигонального моделирования и разбейте выделенный участок на более мелкие фрагменты. Однократное применение инструмента увеличивает плотность сетки вдвое. Слишком усердствовать здесь не стоит: ресурсы компьютера небезграничны.
Ну а теперь немного порисуем, воспользуясь свитком Paint Deformation (Преобразование рисованием) (он находится в самом низу свитков параметров). Здесь есть две кнопки: Push/Pull (Вдавливание/вытягивание) и Relax (Расслабление) – то есть, используя виртуальную кисть, можно выдавливать и разглаживать необходимые участки сетки, вводя положительные или отрицательные значения в поле Push/Pull Value (Степень вдавливания/вытягивания). Применив инструмент один раз, вы деформируете сетку на заданную в этом поле величину, применив повторно – повторите эффект с той же кратностью.
Задайте диаметр кисти в поле Brush Size (Размер кисти), степень воздействия в поле Brush Strenght (Сила нажима кисти) и, нажав кнопку Push/Pull (Вдавливание/вытягивание) с отрицательным значением в поле Push/Pull Value (Степень вдавливания/вытягивания), начинайте вдавливать контур водоема. Попеременно пользуясь выдавливанием и расслаблением, можно получить вполне неплохой результат (рис. 1.16). При определенном навыке моделирования инструмент дает безграничные возможности для легкого манипулирования формой объекта.
Рис. 1.16. Формирование области водоема
Как видно, принцип несложный. При достаточной плотности сетки можно получить довольно высокую детализацию ландшафта (рис. 1.17). Преимущество данного метода в том, что вы сами дифференцированно определяете количество полигонов создаваемой модели, уплотняя ее только в необходимых для этого местах. Главное – отнестись к процессу творчески.
Рис. 1.17. Готовая модель ландшафта
Давайте теперь попробуем другой способ изготовления сетки ландшафта. Когда есть несколько вариантов решения задачи, всегда проще выбрать наиболее оптимальный.
Запустите 3ds Max и создайте такой же объект-плоскость, какой мы делали при создании ландшафта первым способом, с теми же параметрами. Добавьте в слот Diffuse (Основной цвет материала) растровую карту высот и примените материал к объекту. Инструментом Line (Линия) (из группы Splines (Сплайны) раздела Shapes (Формы)) обведите контуры изолиний – получим сплайновую копию чертежа.
Теперь построим ландшафт, используя инструмент Cross Section (Пересекающиеся сечения). Выделите сплайны-изолинии и переместите их по оси Y согласно указанным высотам, корректируя их положение по параметрическим объектам-лекалам. В качестве таких объектов, в частности, можно использовать, например, примитив Box (Параллелепипед) с регулируемой высотой (рис. 1.18).
Рис. 1.18. Подгонка изолиний по объектам-лекалам
Принцип работы модификатора Cross Section (Пересекающиеся сечения) основан на том, что он автоматически соединяет сплайны, объединенные в одну форму командой Attach (Присоединение), дополнительными сегментами. В результате получается новая форма, которую можно превратить в поверхность, применив модификатор Surface (Поверхность). При этом нужно учесть важные правила:
• все формы должны содержать одинаковое количество вершин;
• их первые вершины должны быть сориентированы в одном векторе.
Давайте попробуем это сделать.
Объедините все сплайны в одну форму командой Attach (Присоединение) из свитка Geometry (Геометрия) – обязательно в том же порядке, в каком будет создаваться поверхность, то есть от самого нижнего сплайна к самому верхнему. Затем перейдите на уровень редактируемых вершин, активизировав в дереве подобъектов строку Vertex (Вершина), и в области Display (Показывать) свитка Selection (Выделение) установите флажок Show Vertex Numbers (Показать нумерацию вершин). Как видно из рис. 1.19, все сплайны имеют разное количество вершин и порядок построения (по часовой стрелке и против часовой стрелки).
Рис. 1.19. Нумерация и количество вершин в форме
Необходимо исправить это положение. Добавьте недостающие вершины и поменяйте порядок их построения командой Reverse (Изменить направление), выделив нужную форму и перейдя на уровень редактирования Spline (Сплайн). После ручной правки количество вершин в каждой форме равно 12 и их первые вершины выравнены относительно друг друга (рис. 1.20). Зная заранее о необходимости этих условий, удобнее создавать формы сразу с единым количеством вершин, копируя и видоизменяя один исходный сплайн.
Рис. 1.20. Форма после коррекции количества и положения вершин
В процессе работы выявилась новая проблема. Вложенные внутрь формы не позволят провести сегменты, создаваемые инструментом Cross Section (Пересекающиеся сечения), без пересечения. Убедимся в этом (рис. 1.21).
Рис. 1.21. Некорректный результат применения модификатора Cross Section (Пересекающиеся сечения)
Безусловно, можно решить эту проблему длительной ручной доработкой и созданием опять-таки вручную линий-сечений инструментом Create Line (Создать линию). Но наша главная задача – свести затраченное на построение время к минимуму. Поэтому воспользуемся методами ранее описанного способа и некоторые части рельефа сформируем прямо на созданной сетке полигонов. Удалим сплайны, формирующие впадину и маленькую гору. После этого результат уже больше похож на требуемый (рис. 1.22).
Рис. 1.22. Корректный результат применения модификатора Cross Section (Пересекающиеся сечения)
У нас осталась незакрытой верхняя часть формы – самая высокая точка горы. Давайте исправим ошибку и добавим в модель одну вершину. Деактивизируйте модификатор Cross Section (Пересекающиеся сечения), на панели Create (Создать) при выбранном инструменте Line (Линия) в свитке Keyboard Entry (Клавиатурный ввод) установите координаты будущей вершины и нажмите кнопку Add Point (Добавить точку). Переместите полученную вершину в центр формы возвышенности (рис. 1.23).
Рис. 1.23. Добавление вершины в форму
Присоедините созданную вершину к форме командой Attach (Присоединение) и вновь активизируйте модификатор Cross Section (Пересекающиеся сечения). Теперь форма готова к построению поверхности. Примените модификатор Surface (Поверхность) и посмотрите на результат (рис. 1.24).
Рис. 1.24. Применение модификатора Surface (Поверхность)
Не слишком впечатляет. Отсутствуют мелкие детали рельефа, да и сам рельеф далек от совершенства. Произошло это потому, что в создании формы участвовало слишком малое количество сплайнов – всего 5, и число вершин на сплайнах тоже невелико. Зато форма приобрела характерную для этого вида моделирования плавность. Но и сетка получилась достаточно плотная на всей поверхности. Это можно увидеть, конвертировав полученную форму в редактируемые полигоны (рис. 1.25).
Рис. 1.25. Объект, конвертированный в редактируемый полигон
Для не слишком сложных ландшафтных поверхностей этот способ способен дать вполне приемлемый результат.
Далее описанными ранее инструментами полигонального моделирования можно доводить форму до необходимой детализации (рис. 1.26).
Рис. 1.26. Формирование деталей на объекте
Основное преимущество этого способа построения в том, что форма создается действительно по изолиниям и в принципе довольно точно воспроизводит основной массив ландшафта. Безусловно, для этого есть специализированные программы, которые строят поверхность по изолиниям. Но при экспорте таких моделей в 3ds Max зачастую проявляются очень сложно решаемые проблемы с вывернутыми нормалями или слишком плотной и неоптимизируемой сеткой. Да и как показывает практика, визуализатору подобные чертежи приходят после двадцатого копирования, склеенные на коленке, и получить точные данные, чтобы задействовать подобные программы, чаще всего не представляется возможным. Поэтому и приходится моделировать поверхность с некоторой долей погрешности, на глазок.
Вообще, при хорошем навыке самый простой способ – создавать ландшафт непосредственно сразу инструментами свитка Paint Deformation (Преобразование рисованием), корректируя получаемый результат с помощью изолиний, выставленных по высотам. Ведь в конце концов наша основная задача – сделать ландшафт не математически правильным, а максимально узнаваемым, преследуя основную цель – красивую подачу архитектурного замысла.
Теперь попробуем еще один способ построенияи ландшафта, на этот раз привязываясь не к изолиниям, а к высотам дороги. Как правило, любой архитектурный проект начинается с дороги, впрочем, как и любая настоящая стройка. И на плане указаны высоты дорожного полотна. Как ни странно, но построив сначала дорожное полотно по указанным числовым значениям, можно вполне точно построить и окружающий ландшафт. Давайте попробуем уяснить суть происходящего на простой сцене. Например, у нас есть вот такая несложная дорога, идущая на подъем (рис. 1.27).
Рис. 1.27. План дороги с высотами
Постройте методом сплайнового моделирования по этому чертежу модель дорожного полотна. Для удобства можно применить тот же метод проецирования растровой карты, который использован при построении ландшафта по изолиниям.
DVD
Растровую карту можно взять на диске, прилагаемом к книге, – файл План дороги с высотами.tif по пути Examples\Сцены\Глава 1.
У вас получится вот такая сцена (рис. 1.28).
Рис. 1.28. Сцена дороги
Теперь, выделяя группы вершин, соответствующие той или иной отметке высот, поднимите их по оси Z в окне просмотра Top (Вид сверху) на нужную высоту. Для этого лучше воспользоваться точным клавиатурным вводом числовых значений, щелкнув правой кнопкой мыши на инструменте Select and Move (Выделить и переместить) панели инструментов (рис. 1.29).
Рис. 1.29. Перемещение выбранных вершин методом клавиатурного ввода
Точно так же, последовательно выбирая другие группы вершин, вводите цифровые значения, соответствующие карте высот. В результате у вас должна получиться вот такая сцена (рис. 1.30).
Рис. 1.30. Сплайновая форма после перемещения контрольных вершин
Осталось создать собственно сам ландшафт. Выполните команду Tools → Grid and Snaps → Grid and Snap Settings (Сервис → Сетка и привязки → Настройка сетки и привязок) и установите привязку к вершинам (рис. 1.31).
Рис. 1.31. Установка привязок к вершинам
Активизируйте трехмерную привязку клавишей S и инструментом Line (Линия) соедините все части дорожного полотна по внешнему периметру, привязываясь к вершинам дороги и стараясь не пропустить ни одной вершины (рис. 1.32).
Рис. 1.32. Построение сплайновых форм с использованием привязок
Все эти операции можно выполнять, не покидая окна проекции Top (Вид сверху), что достаточно удобно при работе с большим количеством цифровых значений и при необходимости постоянно сверяться с чертежами. Не нужно пытаться соединить части дорожного полотна одной непрерывной линией. Можно обойтись небольшими участками, которые потом замкнуть в единую форму. На замкнутость сплайновой формы и пропущенные при создании вершины следует обратить особое внимание. В противном случае могут возникнуть дыры в местах сопряжения с дорожным полотном или невозможность создания видимой поверхности у разомкнутой формы.
Примените модификатор Cap Holes (Закрыть отверстия) с установленным флажком Triangulate Cap (Закрыть треугольные). Затем конвертируйте форму в редактируемые полигоны и, выделяя попеременно каждый полигон, разбейте его на сетку инструментом Tessellate (Мозаика). Результат не всегда идеальный, но в нашем случае вполне пригодный. Можно вручную добавить дополнительные ребра и улучшить результат. Получится форма, как показано на рис. 1.33.
Рис. 1.33. Построение формы поверхности по выделенному сплайну
Примените к полотну дороги модификатор Extrude (Выдавливание). В итоге получится ландшафт, как показано на рис. 1.34.
Рис. 1.34. Готовая форма ландшафта
Необходимую плотность сетки, а также ее сглаженность и прочие нюансы можно создавать и редактировать уже известными вам инструментами полигонального моделирования. Достаточно сложный ландшафт, показанный на рис. 1.35, создан именно этим способом в точном соответствии с генпланом.
Рис. 1.35. Ландшафт, построенный по высотам дорог
Необходимые детали вроде подпорных стенок, пешеходных мостиков и бассейнов лучше создавать отдельными объектами. Вот о деталях и поговорим в следующей главе.