Adobe Premiere ▼
Maxon Cinema 4D ▼
DAZ Studio ▼
Поиск

Прокладываем траекторию по пересечённой местности

Урок добавлен 23.04.2023

К этому уроку прилагается 3D-сцена

В предыдущем уроке «Рисуем извилистую дорогу с помощью сплайнов и Loft NURBS» мы с вами создавали ландшафт из базового сплайна, заранее закладывая в него профиль будущей извилистой дороги. Фактически, весь созданный нами ландшафт представлял собой обочину нашей дороги, искажённую холмами до неузнаваемости.

Однако далеко не всегда есть возможность самому создавать макет местности, исходя из профиля дороги, да и способ создания ландшафта, описанный в предыдущем уроке, мягко говоря — не самый лучший.

Гораздо чаще вам будет встречаться уже готовый профиль местности, по которому необходимо проложить дорогу и траекторию движения объектов. Как быть в этом случае?

На первый взгляд, нет ничего проще: берём объект, изображающий местность, выделяем цепочку рёбер...

Выделяем цепочку рёбер объекта инструментом «Path Selection»

...и преобразуем её в сплайн.

Преобразуем рёбра в сплайн

Сами рёбра-исходники при этом преобразовании у нас никуда не денутся и останутся на своём месте, а у ландшафтного объекта появится в качестве подчинённого объекта сплайн, в точности повторяющий профиль выделенных рёбер ландшафта.

Такой способ ещё более-менее приемлем, если нам с вами достаточно создать траекторию движения по прямой. А как быть, если движущийся объект должен не только следовать изгибам местности, но и поворачивать при этом в горизонтальной плоскости? На изображении выше видно, что мы с вами попытались нарисовать ответвление от прямого пути, и оно идёт по объекту «ступеньками» — совершенно очевидно, что в качестве траектории для анимации движения такая ломаная линия вряд ли нам подойдёт, объект будет дрыгаться на «ступеньках», словно его дёргают за верёвочку.

Поэтому мы с вами рассмотрим принципиально иной, куда более эффективный способ прокладывать траекторию по пересечённой местности.

В общих чертах, для начала нам с вами понадобится нарисовать сплайн, изображающий повороты траектории в горизонтальной плоскости, после чего мы «уложим» точки сплайна на изгибы местности и получим готовую, извилистую, причудливую, и самое главное — максимально точно соответствующую профилю местности траекторию.

Приступим.

Для начала рисуем на некоторой высоте над ландшафтом изломанный сплайн.

Рисуем на некоторой высоте над ландшафтом изломанный сплайн

В боковой проекции рабочего окна приподнимаем сплайн выше самой высокой точки ландшафта. Обратим внимание, что все точки нарисованного нами сплайна лежат в одной горизонтальной плоскости, отчего в этой проекции сплайн виден как прямая линия (на изображении ниже он выделен жёлтым цветом).

В боковой проекции видно, что сплайн расположен выше самой верхней точки ландшафта

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

В перспективной проекции рабочего окна видны изгибы нарисованного нами сплайна

Если сейчас анимировать движение какого-либо объекта вдоль такого сплайна, то на поворотах анимируемый объект будет изменять траекторию движения резко, моментально, что вряд ли позволит нам создать впечатление реалистичности анимации. Необходимо добавить плавности изгибам сплайна. На всякий случай напоминаю, что для этого необходимо переключиться в режим моделирования, затем выделить сплайн в менеджере объектов, выбрать первый слева инструмент в нижней панели инструментов моделирования и в выпадающем меню выбрать пункт «Soft Interpolation».

В перспективной проекции рабочего окна видны изгибы нарисованного нами сплайна

Казалось бы, всё готово для следущего шага — «укладки» сплайна на поверхность ландшафта?

Не совсем. Попробуй мы с вами сделать это сейчас — и отрезки сплайна, расположенные между точками, «повиснут» над неровностями ландшафта, как канатная дорога. Причина этого явления заключается в том, что у сплайна в данный момент слишком мало точек, их количество ощутимо отличается от количества точек, при помощи которого изображены неровности ландшафта. Правда, у сплайна, в отличие от полигонального ландшафта, есть так называемые «усы», однако их будет недостаточно для точного соответствия поверхности, на которую мы хотим «уложить» сплайн.

Чтобы избежать подобного недоразумения, добавим в сплайн промежуточные точки. Самый простой способ сделать это — воспользоваться функцией «Subdivide».

Добавим в сплайн промежуточные точки при помощи функции «Subdivide»

В рабочем окне Cinema 4D перед нами появится маленькое окошко с полем для значения единственного параметра «Subdivisions» — в данном случае этот параметр обозначает, на какое количество отрезков будет поделен точками каждый отрезок сплайна.

Вид сплайна при делении каждого отрезка на 6 частей

При добавлении промежуточных точек в сплайн вовсе не обязательно в точности воспроизводить ту же частоту расположения точек на сплайне, с какой расположены точки на ландшафте, достаточно просто увеличить их количество по сравнению с первоначальным, чтобы сплайн при проецировании на ландшафт как можно точнее повторил неровности последнего.

Ну вот, мы с вами вплотную приблизились к заключительному шагу. Выбираем в верхнем меню пункт «Structure», в выпадающем из него меню переходим к «Edit Spline» и в выпавшем подменю ищем «Project». Совершенно верно, это именно то, что вы подумали: функция «укладки» сплайна на полигональные поверхности.

Функция «укладки» сплайна на полигональные поверхности — «Project»

Нажали «Project»? И ничего не произошло? Ну не то чтобы совсем уж ничего: справа под менеджером объектов появилось окно свойств инструмента. Для «укладки» сплайна на полигональную поверхность нам предлагается выбрать плоскость, в которой расположена будущая «опора» сплайна. Наш ландшафт расположен в плоскости XZ, что видно из выноски с условным изображением осей координат в кружке на изображении ниже. Соответственно, выбираем в качестве значения параметра «Mode» XZ, нажимаем «Apply» («Подтвердить»)...

Перед «укладкой» сплайна на полигональную поверхность необходимо выбрать плоскость

...и видим, что точки нашего сплайна легли на поверхность ландшафта, словно выпавшие из чьей-то руки бусы.

Точки сплайна расположились в точном соответствии с неровностями ландшафта

Предвижу ваше огорчение: только-только было вы обрадовались, что построили сложную траекторию поверх макета местности, как тут же сообразили, что анимация движения автомобиля с помощью даже такой траектории не вполне осуществима: ведь большинство полигонов ландшафта расположены под углом, созданная же траектория не содержит никакой информации об углах наклона этих полигонов, а это значит, что на протяжении анимации то одни колёса автомобиля повиснут в воздухе, то другие увязнут в полигонах.

Не торопитесь расстраиваться: та же самая проблема возникает перед строителями дорог в реальной жизни. Конечно, самым простым решением для них было бы построить расположенный строго в горизонтальной плоскости виадук — самым простым, но мягко говоря — далеко не самым дешёвым.

Самым простым решением было бы построить расположенный в горзонитальной плоскости виадук

Вместе с тем и следовать наклону рельефа местности при строительстве дорог нецелесообразно: не у всех же имеются в распоряжении внедорожники, способные двигаться по дороге с боковым креном в сорок пять градусов. Поэтому строители стараются минимизировать расходы на строительство дорог, следуя рельефу лишь приблизительно и корректируя его с помощью насыпей, однако стараясь при этом соблюдать нормативы поперечного наклона дорожного полотна.

В реальности дороги, как правило, расположены на насыпи

Последуем и мы примеру реальных строителей. Траектория изгибов дороги у нас уже есть, осталось превратить её в объёмную модель дорожного полотна. Создаём поперечный профиль полотна, что-то вроде кракозябры, выделенной на изображении ниже зелёным цветом.

Создаём поперечный профиль дорожного полотна

Затем находим в верхней панели инструментов пиктограмму создания NURBS-объектов и в выпадающем из неё меню выбираем объект типа «Sweep NURBS».

Создаём объект типа «Sweep NURBS»

Ну и наконец переключаем своё внимание на менеджер объектов — подчиняем объекту «Sweep NURBS» поперечный профиль дорожного полотна — этот профиль должен быть первым подчинённым сплайном! — а также сплайн траектории дороги, он должен быть вторым подчинённым объектом. Если дорожное полотно оказалось у нас с вами под углом 90 градусов к поверхности ландшафта, то необходимо выделить в менеджере объектов поперечный профиль, в левой панели инструментов выбрать режим трансформации осей объекта, в верхней — инструмент вращения и вращать оси поперечного профиля до тех пор, пока дорожное полотно не займёт правильное положение. Несколько упростить задачу поможет клавиша «Shift»: если удерживать её нажатой при вращении, то шаг вращения объекта станет дискретным — объект будет вращаться в любом направлении с шагом в 5 градусов.

Итогом нашей работы станет изображение, которое вы уже видели выше.

Итоговый результат, уже приведённый выше

Как видите, мы уже вплотную подошли к анимации объектов вдоль сложной траектории, однако без данного урока нам попросту не хватило бы инструментария для анимации. Теперь же весь необходимый инструментарий в нашем распоряжении имеется, и в следующем уроке мы займёмся уже непосредственно анимацией объектов вдоль нарисованных нами в этом и предыдущем уроках траекторий движения.