Чтобы получить представление о результате данного учебного пособия, лучше всего посмотреть соответствующее видео.
В рабочем файле PSD_C4D_R12_Dyn_Motor_Auto_Start.c4d уже подготовлены основные элементы сцены, чтобы мы могли сразу приступить к работе с динамикой. Начнем с улучшения небольшого игрушечного транспортного средства, при этом все ненужные элементы сцены временно скрыты через переключатели Object Manager.
Структура сцены
Давайте кратко рассмотрим компоновку сцены. Помимо автомобиля там также находится объект сфера в качестве будущего препятствия, объект HyperNURBS-с объектом встроенным landscape object, а также земля, небо и световые объекты для окружения и освещения в сцене.
Чтобы упростить и понятным сделать конструкцию транспортного средства, машина состоит только из кузова и четырех колес. В качестве колес используются в общей сложности четыре цилиндрических объекта, которые ориентированы в положительном направлении по оси X и помещены в соответствующее место на автомобиле.
Чтобы упростить дальнейшее добавление коннекторов и двигателей, каждому колесу присвоена его позиция в качестве метки (vl = переднее слева).
Кузов генерирует объект Extrude-NURBS из Spline. Конечно, вы можете использовать другой автомобиль или кузов; важно только позже правильно включить с помощью коннектора или Dynamics Body-Tag.
В диалоговом окне настроек объекта Extrude-NURBS указана ширина нашего автомобиля. Она определяется сдвигом в X-направлении при выдавливании. Закругления на краях кузова обеспечивают естественный, реалистичный вид.
Скрытый в объекте HyperNURBS находится объект ландшафта, который обеспечивает нам удобную местность для катания автомобиля вне дороги. Благодаря HyperNURBS-сегментации мы можем экономить на сегментации ландшафта, не создавая при этом слишком угловатый рельеф.
Чтобы добавить еще немного динамики во время поездки по местности, мы внедряем несколько препятствий. В моем случае простые сферические объекты с радиусом 50 см, которые затем случайным образом распределяются по местности или объекту ландшафта с помощью MoGraph.
Структура автомобиля с коннекторами и двигателями
Давайте начнем с игрушечного автомобиля. Какие функции он должен выполнять для наших целей?
Во-первых, колеса должны быть вращающимися и закреплены на автомобиле; кроме того, им нужен привод на колесах, чтобы они могли двигаться самостоятельно. И конечно же, он должен обнаруживать столкновения - начиная с того, что колеса стоят на земле.
Для предоставления этой функциональности через новые Dynamics программы CINEMA 4D требуется, чтобы все элементы имели теги тела Dynamics, чтобы их вообще принимала Dynamics-Engine.
Начнем с четырех колес, которые все мы выделяем в Object Manager и определяем их как Rigid Body через меню Simulation>Dynamics.
Поскольку все четыре колеса обязательно получают те же динамические свойства, мы оставляем выделенные четыре тега тела Dynamics и настраиваем желаемые параметры.
На странице Dynamics мы можем использовать настройки по умолчанию. Мгновенный запуск важен, чтобы колеса сразу заземелись.
На странице столкновений мы помогаем определению столкновений Dynamics, установив форму как цилиндр по оси X. Это соответствует форме колеса и повышает производительность при расчете динамики. Для того чтобы машина при попадании на землю могла слегка прыгнуть, устанавливаем слабую упругость на 10%. Взамен мы увеличиваем трение до 120%, чтобы колеса могли нормально сцепляться с землей.
Переходим к следующему элементу автомобиля, кузову. К сожалению, объект Extrude-NURBS из-за своего неудачного положения осей не подходит в качестве точки отсчета для кузова, поэтому мы просто подставляем вместо него нулевой объект Auto. Его ось находится в центре автомобиля.
Таким образом, через меню Simulation>Dynamics мы назначаем тег тела Dynamics как Rigid Body для нулевого объекта Auto.
В диалоговом окне настройки Dynamics Body-Tags мы также позволяем автомобилю начать срабатывание немедленно.
На странице столкновений мы должны учитывать иерархию нашего транспортного средства, чтобы кузов можно было вообще обнаружить. Мы устанавливаем иерархию на составленную форму столкновений и выбираем лучше всего выпуклую оболочку или сетку движущегося объекта.
Дополнительные свойства столкновения могут оставаться; в конце концов автомобиль в основном будет стоять на четырех колесах и не обязательно перевернется.
Чтобы убедиться, что в качестве центра тяжести для нашего транспортного средства также используется желанная нами ось, нам нужно на короткое время переключиться на страницу массы.
Здесь мы активируем опцию Собственный центр массы, - однако, поскольку мы не хотим отклоняться от определенной оси, оставляем значения смещения X, Y и Z на 0.
Если мы запустим анимацию сейчас, наше транспортное средство просто рухнет в себя. Неудивительно, ведь мы определили всего лишь пять Dynamics Body, и Cinema 4D (пока что) ничего не знает о конструктивных связях.
Мы изменяем это теперь с помощью коннекторов. С их помощью мы закрепляем колеса к транспортному средству, позволяем вращение вокруг оси колеса и одновременно реализуем приличную подвеску для передвижения по местности.
Давайте возьмем первый коннектор из меню Симуляция>Динамика.
Каждое колесо получает свой собственный коннектор. Начнем с переднего левого колеса и переименуем вновь созданный коннектор соответствующим образом. Чтобы коннектор занял позицию колеса, активируем инструмент принять из меню Функции и перетащим переднее левое колесо в поле объекта для принятия.
После нажатия на кнопку Назначить коннектор находится в том же положении, что и заданное колесо.
Точно так же мы создаем следующий коннектор; на этот раз для переднего правого колеса. Мы также назначаем этому коннектору позицию соответствующего колеса через команду принять.
Прежде чем перейти к задним колесам, мы корректно выравниваем коннекторы у передних колес. Для этого выбираем коннектор и поворачиваем его с помощью Угола крена в Менеджере атрибутов с желтой шарнирной частью наружу. Для правого переднего колеса угол составляет 90°, для левого переднего колеса -90°.
Повторяем тот же подход с задними колесами, оборудовываем их коннекторами на правильной позиции и правильно поворачиваем. На нижнем изображении показаны четыре расположенных коннектора из вид сверху.
Для того чтобы коннекторы были видны даже тогда, когда они не выбраны, включаем на странице отображения диалогового окна настроек коннектора опцию Всегда видимый. Уменьшаем размер коннекторов немного, чтобы они лучше сочетались с транспортным средством.
Теперь мы можем, наконец, назначить правильную функцию для коннекторов; в конце концов, мы хотим амортизированные оси, а не шарниры на автомобиле. Это делается на странице объекта, где мы устанавливаем тип подвески колеса для всех четырех коннекторов.
Пока все четыре коннектора выбраны, так как также мы можем задать настройки для всех четырех амортизаторов. Для первого объекта для привязки коннекторов мы перетаскиваем нулевой объект Авто как Объект А в соответствующее поле.
Для жесткости подвески мы выбираем значение 20, для силы амортизации, то есть скорости, с которой амортизатор возвращается в исходное положение, мы берем значение 20%.
Мы активируем нижнее и верхнее ограничение в направлении Y, со смещением 20 см каждое. Хотя маловероятно, что наше транспортное средство достигнет этих пределов, сцена станет более наглядной.
Теперь мы занимаемся каждым коннектором, то есть амортизаторами колес. Единственной настройкой, которую нам нужно сделать для каждого коннектора, является второй объект для привязки. Для этого мы перетаскиваем соответствующее колесо, принадлежащее каждому коннектору, в поле Объекта B.
Когда у нас есть все четыре коннектора или амортизатора, мы также интегрируем их в иерархию объектов в автомобиль. Мы помещаем их рядом с колесами как подобъект в нулевой объект "Автомобиль".
То, чего еще не хватает нашему игрушечному автомобилю, - это привод, чтобы он мог двигаться самостоятельно. Хотелось бы иметь полный привод для езды в грунтовых условиях, но в нашем примере только передние два колеса будут приводиться моторами. Два мотора, потому что так передача мощности на отдельные колеса происходит физически правильнее.
Мы добавляем первый мотор в сцену через меню Симуляция>Динамика.
Аналогично коннекторам, мы также переименовываем Мотор соответственно приводимому колесу. В данном случае мотор должен приводить левое переднее колесо.
С помощью Инструмента "Принять" из меню Функции мы передаем мотору позицию колеса. После нажатия на кнопку Назначить, мотор оказывается в нужном месте и его нужно только выровнять.
Это мы делаем через Менеджер атрибутов на странице Координаты. Мы поворачиваем мотор на Угол направления на 90°, чтобы желтое направление совпадало с направлением вращения колеса.
Мотор связывается через Поля объекта в его диалоговом окне настроек. В нашем случае мы перетаскиваем переднее левое колесо в поле Объект A. Для привода мы устанавливаем мотору Угловую целевую скорость в 400° и Момент 50.
Точно так же мы теперь добавляем еще один мотор для привода правого переднего колеса. Мы переименовываем его соответственно и снова передаем позицию связанного колеса Инструменту "Принять".
Второй мотор также поворачиваем через Менеджер атрибутов, соблюдая правильное направление вращения, и снова передаем переднее правое колесо как Объект A.
Второй мотор, конечно же, получает те же параметры для Угловой целевой скорости и Момента.
Теперь привод корректно встроен в автомобиль. Я рекомендую добавить моторы как Подобъекты в иерархию объектов автомобиля, чтобы Редактор оставался понятным во время Симуляции.
Прежде чем мы наконец поставим наш автомобиль в движение, нам нужна прочная поверхность, потому что до этого игрушечный автомобиль бы просто упал вниз.
Для нашего первого теста и в качестве поверхности для будущего используем пол как Объект Коллизий. Для этого выделяем Объект Пола и присваиваем ему через меню Симуляция>Динамика соответствующий Тег Тела Динамики.
Как это обычно бывает с Объектами Коллизий, диалоговое окно настройки довольно простое. Нас в первую очередь интересует Коэффициент Трения. Мы увеличиваем его до 100%, чтобы колеса быстро приняли устойчивость и могли хорошо ускоряться.
Если мы сейчас нажмем кнопку воспроизведения, игрушечный автомобиль начнет двигаться сам. Позже мы снабдим автомобиль небольшим управлением; сейчас же давайте позаботимся о поверхности.
Расширение сцены с динамическими и мографическими элементами
Пока не видимый, так как отключен как параметрический объект через Менеджер объектов, Объект Ландшафта теперь должен быть использован в качестве холмистой местности. Подобно Объекту Пола, нам нужно сначала определить местность как объект столкновения. Мы присваиваем Тег Тела Динамики как Объект Коллизий родительскому Объекту HyperNURBS через меню Симуляция>Динамика.
Также для этого Объекта Коллизий Коллизионная страница в диалоговом окне настроек играет важную роль. Здесь нам нужно выбрать статическую сетку в качестве формы коллизии, чтобы автомобиль позднее мог распознавать каждую горку на поверхности. Аналогично Объекту Пола мы также устанавливаем здесь высокий количество трения 100%.
Давайте сразу проверим, как наш автомобиль справляется в грунтовом пути. Для этого сначала мы перемещаем всю группу автомобилей по координате Z в менеджере атрибутов до 3000 см. Так автомобиль готов к движению и сможет с мощным размахом направиться на грунт.
После нажатия на кнопку воспроизведения мы можем увидеть, как наш игрушечный автомобиль смело прокладывает путь через холмистый пейзаж. Чтобы добавить немного остроты в сцену, мы также расставляем препятствия.
Исходная основа для наших препятствий уже существует в виде объекта-шара. Чтобы склонированные шары не только мешали автомобилю на пути, но и отталкивались от него, нам нужно определить их как жесткое тело (Rigid Body). В принципе не важно, получит ли сам шар или объект-клон тег тела динамики (Dynamics Body Tag). Гибкость дает первый вариант, так как позволяет назначить каждому виду клонов собственные динамические свойства.
Поэтому дадим объекту-шару требуемый тег тела динамики (Dynamics Body Tag) как жесткое тело (Rigid Body); мы находим его, как обычно, в меню Симуляция>Динамика.
В диалоговом окне настроек тега тела динамики (Dynamics Body Tag) для шара мы устанавливаем на странице Динамика параметр Триггер на при столкновении. Это позволяет шарам не начать движение самостоятельно, а реагировать только тогда, когда автомобиль или другой шар вызывает столкновение.
Исходя из простой формы объекта мы доверяем автоматическому обнаружению столкновений; повышенное значение трения в 80% удерживает шары в основном на земле, так что они просто катятся по местности без нежелательных прыжков.
Теперь шар обладает динамическими свойствами, поэтому мы можем распределить его по местности. Для этого используем объект-клон из меню МоуГраф.
Через менеджер объектов мы присваиваем объект-шар как клон объекту-клону. Так как мы используем параметрический шар, который использует центр шара в качестве опорной точки, размещение клонированных шаров в данный момент означало бы, что все клонированные объекты находятся наполовину в земле.
Чтобы предотвратить это и переместить шары вверх соответственно к радиусу, мы находим возможность установить смещение на странице Трансформация в диалоговом окне настроек. Мы перемещаем шары по ось Z на 50 см, то есть на радиус шара.
Реальные настройки для дублирования и распределения клонов мы делаем на странице Объект в диалоговом окне настроек.
Сначала мы выбираем режим Объект; в конце концов, мы хотим использовать объект ландшафта для распределения клонов. Упомянутый объект ландшафта мы затем перетаскиваем в соответствующее поле Объект.
Распределение клонов должно происходить на поверхности объекта, а количество вы можете выбрать самостоятельно. Чтобы автомобилю не пришлось убирать из пути слишком много шаров, рекомендуется количество до 80.
На картинке ниже вы видите текущее положение в рендеринге. Шары хорошо распределены на объекте-ландшафте, но все они смотрят в одном направлении. Однако это небольшое проблему можно легко исправить с помощью эффектора случайности.
Чтобы назначить эффектор случайности объекту-клону сразу при включении в сцену, мы выбираем объект-клон в менеджере объектов перед тем как извлечь эффектор случайности из меню МоуГраф>Эффекторы.
В диалоговом окне настроек эффектора мы находим на странице Параметры параметры трансформации. Поскольку шары должны быть просто повернуты по всем осям, мы нуждаемся только в измененных угловых параметрах. Угол по 90° на каждую ось достаточен для обеспечения достаточной свободы различных вращений.
Тестовый рендеринг показывает, что благодаря эффектору случайности шары теперь полностью случайным образом распределены и повернуты на ландшафте.
Теперь самое время выпустить наше игрушечное автомобиль на препятствия. Поскольку нам придется рассчитывать на больше столкновений в будущем, имеет смысл в зависимости от размера и масштаба преград заглянуть в настройки динамики под настройками документа.
Поскольку размер шаров, колес и игрушечного автомобиля очень близок к предопределенному масштабу и хорошо справляется с толерантностью столкновений, в моем примере здесь не требуются дополнительные настройки.
Чтобы игрушечный автомобиль не исчезал из виду сразу после старта, вы найдете в менеджере объектов сцены целевую камеру, которая автоматически наводится на автомобиль. В ее выражении выравнивания фиксируется, что она не должна терять объект автомобиль из виду.
Мы активируем ее, щелкнув по белому значку поисковика в менеджере объектов.
Теперь вы можете нажать кнопку воспроизведения и наблюдать за автомобилем в процессе движения по территории, усеянной препятствиями.
Установка простого управления для автомобиля с помощью XPresso
Было бы здорово, если бы автомобиль не ехал прямо по территории, а если бы у нас, пользователей, была возможность управлять им.
Для нашего примера достаточно простого управления поворотами налево и направо с помощью ползунка. Поскольку нам нужно управлять фактически двумя объектами (колесами или коннекторами), но хотим иметь удобный регулятор, мы просто добавляем собственный параметр управления в виде пользовательских данных.
Для этого мы выбираем группу автомобиля и добавляем собственные пользовательские данные через меню Пользовательские данные в менеджере атрибутов.
Открывается окно управление пользовательскими данными. Здесь находятся все индивидуальные пользовательские данные, относящиеся к объекту-носителю. Мы сразу называем новую запись соответственно управление, и также указываем в поле свойств, каким должен быть параметр.
В качестве интерфейса мы выбираем ползунок с плавающей запятой в единице градусы. Для удобства мы выбираем шаг равный 1°.
Чтобы избежать перегибания колес и их пересечения с автомобилем, мы ограничиваем минимальный угол поворота -30°, максимальный угол поворота 30°. Предустановленное значение 0° гарантирует, что колеса будут стоять прямо вначале.
После закрытия диалогового окна с помощью OK и создания пользовательских данных, мы находим на странице пользовательских данных наш параметр управление, как ползунок, как мы и хотели.
Таким образом, мы создали возможность управлять собственным параметром. Теперь нам просто нужно перенаправить его на правильное место в построении автомобиля.
Замечательная задача для XPresso. Для начала нам понадобится тег XPresso, который мы легко назначаем через контекстное меню правой кнопкой мыши в подменю тэги CINEMA 4D.
В качестве носителя для этого выражения отлично подойдет наша группа автомобиля.
Повторным щелчком по тегу XPresso мы открываем редактор XPresso. В качестве первой записи или узла мы переносим нулевой объект Автомобиль из менеджера объектов в окно редактора XPresso.
Чтобы предоставить наш созданный параметр в качестве порта для связи, нажимаем на красную кнопку выходного порта и выбираем порт управления из подменю пользовательские данные.
С помощью нашего параметра управление мы хотим влиять на углы управления коннекторов колесной подвески. Чтобы иметь доступ к этим параметрам в XPresso-редакторе, мы ищем оба коннектора левого и правого переднего колеса в менеджере объектов и также переносим оба объекта в XPresso-редактор.
Поскольку мы хотим передать значение обеим коннекторам, нам нужны параметры углы управления на входе. Для этого нажимаем на синюю кнопку входных портов узлов коннекторов и выбираем в подменю свойства объекта соответственно порт углов управления.
Теперь осталось только соединить два порта угла управления с портом рулевого управления автомобиля. Просто перетащите с зажатой кнопкой мыши с одного порта на другой.
Наш маленький экскурс в XPresso уже закончен, поэтому мы можем закрыть редактор XPresso. Чтобы не приходилось постоянно искать нулевой объект и его пользовательский ввод для управления автомобилем, мы просто внедрим элементы управления бегунком в головное дисплей (HUD) окна редактора.
Для этого щелкните правой кнопкой мыши по параметру управление в менеджере атрибутов и выберите в контекстном меню команду Добавить в HUD.
Чтобы переместить элемент HUD в редакторе, просто щелкните с зажатой клавишей (Ctrl) на элемент HUD и переместите его мышью на удобное место.
Кроме того, чтобы элемент HUD был виден не только тогда, когда наше транспортное средство выбрано, вызовите соответствующее контекстное меню с зажатой правой кнопкой мыши и выберите в меню Показать опцию Всегда.
Теперь вы можете нажать кнопку воспроизведения и отправлять автомобиль по местности с помощью бегунка. Обратите внимание, что перед каждой поездкой рулевой механизм следует вернуть в исходное положение, чтобы автомобиль не перевернулся.
Если вы позже хотите создать анимацию из захватывающей поездки, просто устанавливайте ключевые кадры для соответствующего значения управления на важных точках управления. Приятного катания по местности!