3D Мастерская: Создаём такелаж для лодки

Материал из Blender3D.

(Перенаправлено с 3D WORKSHOP 19: To Rig a Boat’s Rigging)
Перейти к: навигация, поиск

Автор: Johannes Ewers (Blender Art magazin #19)
Перевод: Smi
Возврат на главную страницу

Содержание

Введение

Результат работы
Увеличить
Результат работы
Парусные лодки и корабли - это сложные устройства, состоящие из сотен движущихся частей: парусов, канатов, блоков и рей.

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

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

P.S. Не знал у кого спросить разрешения на перевод и нужно ли это переводить, если что не так черкните на mail.

Проектирование модели лодки

Рис. 1. Базовая модель лодки
Увеличить
Рис. 1. Базовая модель лодки

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

Когда же нам необходимо автоматизировать риггинг лодки? Посмотрим на нашу модель лодочки. Если ветер дует прямо по ходу, угол между гиком и продольной осью лодки маленький и парус, в общем-то, плоский. Если же ветер дует с боку, то мы вынуждены значительно повернуть гик до 45 градусов.

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

Наша задача автоматизировать перемещение такелажа и паруса так, что бы они следовали за вращением гика и рея. Форма паруса должна изменяться естественным путем. Что бы добиться этого нам необходимо следующее поведение автомата:

Рис. 2. Адаптация лодки к ветру
Увеличить
Рис. 2. Адаптация лодки к ветру
  • Блок на рее (верхняя перекладина) следует за ней и вращается по пути, так чтобы его свободный конец всегда был повернут к мачте.
  • Канаты между мачтой (зафиксированные концы) и блоком на рее следуют по ходу движения.
  • Блок на гике (нижняя перекладина) повернут к своему двойнику, который укреплен на корпусе.
  • Блок установленный на корпусе всегда повернут к блоку на гике.
  • Канаты между этими блоками следуют за движением и вытягиваются или сжимаются в зависимости от взаиморасположения блоков.
  • Нижняя кромка паруса следует за гиком; верхняя - за реем.
  • Парус всегда натянут между перекладинами.
  • Складки паруса формируются в зависимости от направления и силы ветра.

Создание статического такелажа

Рис. 3. Задание положения лодки
Увеличить
Рис. 3. Задание положения лодки

Сперва нам нужна маленькая лодочка для экспериментов с риггингом. Я взял плоскость, вытянул (extrude) переднюю кромку вперед три раза и сформировал финальный mesh в виде простой лодки. Потом вытянул (extrude) внешнюю кромку по z-оси. Это обеспечило нас простым корпусом.

На корпусе я установил тонкий цилиндр в качестве мачты. Другой очень тонкий цилиндр размещенный между носом и верхушкой мачты изображает канат использующийся на судах для фиксации мачты. Еще два цилиндра расположены справа и слева от мачты, как ванты для дополнительной стабилизации. Мачта и три ванты составляют "стоячий такелаж" нашей лодочки. "Стоячий такелаж", в нашем случае, набор зафиксированных, не подвижных частей судна. Теперь нам нужно три детали оснастки соединяющие между собой зафиксированные и подвижные части такелажа.

Упражнение. Создаем кольцо.

  • Начнем с создания круга. Add >> Mesh >> Circle, 8 - вершин должно быть достаточно
  • Переключимся на вид с боку. С боку круг выглядит как тонкая линия.
  • Выберем круг.
  • Переключимся в режим редактирования (Edit Mode).
  • Выберем все узлы круга.
  • Переместим 3D-курсор в удобное место внутри круга.
  • Откроем Mesh Tools панель в окне кнопок (Button Window).
  • Вводим Degr: 360 градусов, Steps: 8, Turns: 1 и жмем Spin.
  • Курсор изменится на "?". Щелкнем по окну, в котором находится вид сбоку.
  • Масштабируем сформированный объект до приемлемого размера, примерно в половину диаметра мачты.

Нам нужны два кольца на верхнем конце мачты (см.рис.6) и одно на дне корпуса, возле кормы (задний конец лодки).

Пришло время добавить несколько структур и иерархий в нашу модель. Создадим объект Empty (Add >> Empty) и назовем его "стоячий такелаж" ("standing rigging"). Поместим полученный объект - "пустышку", на мачту или возле нее. Сделаем составной объект "подчиняя" все части стоячего такелажа "пустышке". Теперь выберем последовательно (удерживая Shift) мачту, ванты, кольца и в последнюю очередь "пустышку". Для этой операции очень удобно использовать окно Outliner. Выполним Object>>Parent>>Make Parent (Ctrl+P) для создания подструктуры в окне Outliner. Еще одну "пустышку" поместим посередине корпуса. Сформируем составной объект "подчиняя" корпус и стоячий такелаж пустышке "маленькая лодочка".

Теперь вы можите перемещать и поворачивать лодку выбрав и переместив только "родителя" - "маленькую лодочку". Это было просто.

Создание движущегося такелажа

"Бегущий такелаж" набор всех подвижных рей, блоков и канатов на судне.

Создание моделей блоков (шаг А)

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

  • Сделаем кольцо, как описано выше.
  • Создадим куб (Add>>Mesh>Cube) и назовем его “block cage”.
  • Переключимся в режим редактирования и выберем все узлы куба.
  • Используем Mesh>>Edges>>Bevel для скругления кромок. Это выглядит лучше.
  • Теперь применим масштабирование как показано на рис.4.
  • Поставим кольцо внизу куба.
  • Состряпаем "пустышку", назовем ее “block” и поместим в центр кольца. Положение центра "пустышки" очень важно. Оно определяет ось вращения блока.
  • Делаем составной объект подчиняющий куб и кольцо "пустышке"
  • Нам надо три таких блока, два с кольцом снизу и один с кольцом вверхней части.
  • Выберем составной блок в окне Outliner.
  • Применим Select>>Grouped>>Children для захвата всех объектов конструкции. Это важно для дублирования всей конструкции, а не только родительского объекта.
  • Используем Object>>Duplicate для изготовления второго блока. Повторим это для третьего блока. Назовем объекты как показано на рис.4.
  • Теперь в последнем блоке захватим деталь “block cage” и переместим ее ниже кольца, так чтобы кольцо оказалось на верхушке клети. Нельзя перемещать кольцо! Мы должны быть уверены, что центр составного блока находится в центре кольца.

Добавляем гик и рею (шаг В)

Гик и реея это составные объекты собранные из длинного цилиндра и кольца соединенного с блоком.

  • Для гика создадим цилиндр, развернем его в горизонтальное положение и отмасштабируем как на рис.1. Один конец его должен соединяться с мачтой чуть выше борта. Изначально гик расположен параллельно основной оси лодки.
  • Создаем кольцо и помещаем его на свободный конец гика с нижней стороны. Далее объединяем все части гика в составной объект. Поэтому создаем "пустышку". Мы поместим ее между концом гика и мачтой. Центр пустышки будет центром вращения гика.
  • Свяжем цилиндр и кольцо в конструкцию гика. Повторите операции указанные выше операции для реи. Сделайте ее немного короче и придайте наклон вверх. Кольцо расположите на верхней стороне реи.

Создаем арматуру управления гиком и реей(шаг С)

Рис. 5. Конструирование узлов паруса
Увеличить
Рис. 5. Конструирование узлов паруса

Мы будем перемещать рею и гик посредством арматуры состоящую из трех "мослов"(ребер). Вы можете спросить: "Зачем нам арматура? Мы можем вращать реи." Однако, арматура будет также перемещать верхнюю и нижнюю кромки паруса синхронно двежениям реи и гика.

  • Создадим арматуру (Add>Armature), назовем ее “sail guide”, переместим и отмасштабируем ее так, чтобы он занимал такоеже положение как гик. Центр вращения ребра должен совпадать с центром вращения гика.
  • Переключаемся в режим редактирования.
  • Вытягиваем (extrude) ребро два раза, так чтобы получить в итоге три ребра.
  • Щелкаем правой клавишей мыши (ПКМ) по середине (не по краю) третьего, крайнего ребра.
  • Применим (Armature>>Parent>>Clear Parent>>Disconnect Bone) для отделения одного ребре от другого.
  • В окне (Buttons Window) на панели Armature Bones жмем Hinge что отменит наследование ребром вращения его родительского объекта.
  • Переместите и вытяните ребро так, чтобы его положение совпадало с реей, а также совпал и центр вращения.
  • Отделите второе ребро от первого также, как это описано выше и поместите его между верхней и нижней реями. Среднее ребро мы будем позже использовать для управления полотном паруса.


Рис. 6. Натягиваем троссы
Увеличить
Рис. 6. Натягиваем троссы

Теперь необходимо соединить ребра управляющей арматуры с реями. Мы не можем использовать модификатор арматуры (armature modifier), потому что он работает только с mesh-объектами. Мы не можем использовать mesh, т.к. применяем "пустышку" в качестве родителя в составной рее(гике). Как альтернативу мы будем использовать “copy rotation constraint”.

  • В объектном режиме (Object Mode) выберем “boom comp” (составной гик) в окне Outliner.
  • В окне Buttons Window на панели Constraints добавим констраинт указав тип Copy Rotation.
  • В поле target набираем имя арматуры “sail guide”. В качестве ребра укажем “lower bone”.
  • Выберем ось Z в качестве оси вращения.
  • Повторим это для рея, но выберем “upper bone” в качестве целевого ребра.
  • Проверим установки. Выберем арматуру, выделем “lower bone”, переключимся в режим (Pose Mode) и попробуем вращать ребро вокруг его центра. Гик должен повторить вращение. Также должна работать рея, когда вращаем ребро “upper bone”.

Создание и автоматизация канатов реи(шаг D)

Следующим нашим шагом будет моделирование такелажа поднимающего рею. Этот такелаж состоит из блока присоединенного к рею и двух канатов прикрепленных к мачте. Блок и канаты должны автоматически следовать за реем при перемещении.

  • Выберем блок с кольцом с нижним кольцом (созданный ранее)
  • Перемещаем блок к кольцу на конце реи.
  • "Подчиняем" блок рее.
  • Для блока выполним Object>>Constraints>>Add Constraint>>Track To.
  • Установим такие параметры для констраинта: Target:ring@mast.002, To:Z, Up:Y
  • Теперь, блок должен быть всегда направлен, концом в котором закреплены канаты, на одно из колец мачты. Проверим его врашая рею (см.шаг С).
  • Создайте цилиндр изображающий канат и назовите его “rope@gaff boom.001”.
  • Переключитесь в режим редактирования (Edit Mode). При помощи масштабирования кромок по осям х/у так, чтобы получилась тонкая трубка.
  • В объектном режиме (Object Mode), коэффициент масштабирования должен быть один для всех направлений. Вы можите это проверить в окне (Transform Properties) (Object>> Transform Properties). Странно? Констрайнт “stretch to”, который мы будем использовать позже, демонстрирует странное поведение, если Scale X/Y/Z отличен от единицы.
  • Переключимся в объектный режим (Object Mode). Установим 3D-курсор на нижний конец цилиндра. Применим Object>>Transform>>Center Cursor. Это переместит центр объекта - точку вращения - на нижний конец.
  • Переместим его не вращая к одному из колец на мачте.
  • "Подчиним" цилиндр составному объекту "little boat".
  • Перейдем в окно "Buttons Window", панель Object Panels, Constraint и нажмем “Add Constraint” выберем “Stretch To”. Этот констрайнт доступен только через панели.
  • введем в Target: block cage.001, Vol:NONE, Plan:Z.
  • Вы можете захотеть повернуть цилиндр к блоку, но к сожалению, его положение зафиксировано.
  • Вам надо сперва откорректировать его положение вручную.
  • Включим режим редактирования и установим узлы в желаемое положение. Канат (цилиндр) надо вытянуть из середины блока до кольца на мачте. Не пытайтесь сделать это в Object Mode - не сработает. Я проделал несколько опытов, чтобы выработать правильную последовательность действий.
  • Теперь повторим эти шаги для второго каната (цилиндра) между серединой блока и другим кольцом.

Проверим оснастку реи премещая ее посредством верхнего ребра арматуры “sail guide”.

Создание и автоматизация такелажа гика(шаг Е)

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

  • Возьмем блок с кольцом на верху и переместим его к кольцу на конце гика (см.рис.7). "Подчиним" его "boom comp" и назовем “block@boom”.
  • Добавим блоку “TrackTo” констрайнт с Target:ring@hull (часть стоячего такелажа). Блок должен теперь показывать на кольцо.
  • Берем блок с нижним кольцом и устанавливаем его у кольца корпуса (ring@hull). "Подчиняем" его “little boat” и называем "block@hull”.
  • Между блоками мы разместим четное число канатов и еще один свободный для управления. Следовательно, создаем цилиндр, переходим в режим редактирования (Edit Mode), и масштабируем его в направленияч х/у формируя тонкую трубочку. Будьте осторожны, выполняйте все действия масштабирования/вращения только в режиме редактирования (Edit Mode), а не в объектном режиме (Object Mode). Параметр "scale" в объектном режиме должен равняться единице, иначе “StretchTo” констрайнт получит странные визуальные эффекты. Вы можете проверить данный параметр в окне (Transform Properties).
  • В режиме редактирования (Edit Mode) продублируем цилиндр три раза и расширим немного полученный объект формируя разновидность клети блока.
  • Переключимся в объектный режим. Установи 3D-курсор в нижний конец объекта. Применим Object>>Transform>>Center Cursor. Это переместит центр объекта - его точку вращения - в нижний конец.
  • Переместим эту конструкцию к блоку на корпусе, так чтобы ее точка вращения совпала с серединой блока.
  • Добавим констрайнт “TrackTo” блоку с параметром Target: block cage.002 (часть блока на гике). Блок и канатный набор теперь указывают на другой блок. Оба блока синхронизированы друг с другом.
  • Теперь создадим констрайнт “StretchTo” канатному объекту. Введем Target: block cage.002, Vol:NONE, Plan:Z.
  • В результате, объект может сперва указывать в неопределенном направлении. Вам необходимо откорректировать его в режиме редактирования изменив положение и длину.
  • Давайте протестируем оснастку гика перемещая ее посредством нижнего ребра арматуры “sail guide”. Такелаж должен точно следовать за концом гика и при необходимости вытягиваться.

Создаём парус

Рис. 7. Крепим парус
Увеличить
Рис. 7. Крепим парус

Мы используем два приема для моделирования паруса; модификаторы (Armature, MeshDeform) для основного позиционирования и физический симулятор ткани для складок и деформации ветром.

  • Убедитесь, что рея и гик находятся в их нейтральном положении вдоль основной оси лодки. Сделаем это, выбираем “sail guide”. Переходим в режим (Pose Mode) и применим (Pose>>Clear Transform>>Clear User Transform).
  • Начнем с создания простой заплатки (Add>>Mesh>>Plane). Назовем ее “sail”.
  • Расположите плоскость "sail" примерно на его место. Переходим в режим редактирования и подгоняем четыре угла поверхности между гиком, реей и мачтой. Все узлы должны иметь одинаковое значение координаты х, что бы парус был максимально плоским. Это важно для модификатора MeshDeform, который мы используем позже.
    Рис. 8. Сетка паруса, модификаторы и группы вертексов
    Увеличить
    Рис. 8. Сетка паруса, модификаторы и группы вертексов
  • Теперь разбиваем (subdivide) парус в режиме редактирования четыре раза. (Выбираем все узлы (Mesh>>Edges>Subdivide)х4. Получим поверхность 17х17 узлов.
  • Определим группы узлов, позже мы их используем для фиксации объекта в процессе симуляции ткани. Поэтому деактивируем все узлы. Используем Shift+ПКМ для выбора каждого третьего узла на кромках паруса возле гика, реи и мачты начиная с угла.
  • Перейдем в окно (Buttons window, Mesh Buttons, Link and Materials), жмем (New) для создания группу вершин. Назовем ее "seam" и нажмем (Assign). Это свяжет выбранные узлы паруса в вершину.
  • Выйдем из режима редактирования.

Итак у нас есть базовая модель паруса. Разбиение (subdivision) было необходимо: а) увеличение разрешения для лучшего моделирования деформации паруса b) создать группы вершин, которые станут источником замечательных складок

  • Для перемещения объекта паруса с высоки разрешением вслед за гиком, мы будем использовать объект с низки разрешением, как некий контейнер совместно с модификатором MeshDeform.
  • Создадим куб (Add>>Mesh>>Cube), назовем его ""sail cage" и переместим его на место паруса.
  • Переключимся в режим редактирования и трансформируем его так, что бы парус оказался внутри. Расстояние между кубом и парусом должно быть как можно меньше.
  • Теперь в окне Buttons Window, Mesh Buttons, Modifiers добавим модификатор Subsurf для нашего "куба". Используем тип модификатора: Simple Subdiv и установим Levels равнм 1. Это придаст уму некоторую гибкость.
  • Снова в окне Buttons Window, Mesh Buttons, Modifiers добавим модификатор. Вторым модификатором будет Armature с Ob:”sail guide”. С этого момента мы можем использовать арматуру ”sail guide” для деформации “sail cage”.
Рис. 10. Настройка клетки меша
Увеличить
Рис. 10. Настройка клетки меша
  • Выберем объект “sail”. Перейдем в окно Buttons Window, Mesh Buttons, Modifiers и добавим два модификатора:
    • а) Subsurf модификатор. Параметры: Type:Catmull-Clark; Level:2 или 3 для увеличения разрешения при симуляции ткани. (можно и нужно экспериментировать).
    • b) MeshDeform модификатор с параметром Ob:”sail cage”. Жмем Bind чтобы связать "куб" и парус. Деформация “sail cage” будет вызывать деформацию объекта “sail”.
  • Проверим настройки: выбираем “sail guide”, переходим в режим Pose mode и покрутим верхнее, среднее и верхнее ребра. Рея и гик должны следовать за арматурой также хорошо, как и парус.

Настройка ткани и симуляция ветра

Нам хотелось бы видеть несколько милых, но реалистичных складочек на нашем парусе. Они могут быть сделаны посредством карты нормалей (normal map) или карты замещений (displacement map). Однако Blender содержит мощный ветродуй (wind machine), который мы будем использовать в наших целях. Во-первых, нам надо установить свойства ткани для нашего паруса.

  • Установим “sail guide” в нейтральную позицию и выберем объект паруса.
  • Перейдем в окно Button Windows, Object Panels, Physics Buttons, Cloth Panel.
  • Щелкнем на закладке Cloth и выберем тип ткани Denim. (по-экспериментируйте)
  • Жмем Pinning of cloth и выбираем группу узлов “seam”, определенную ранее.
Рис. 11. Задание положения и параметров ветра
Увеличить
Рис. 11. Задание положения и параметров ветра

Теперь переходим Buttons Window, Mesh Buttons, панель Modifiers. Вы видите три модификатора, сверху в низ, Subsurf, Mesh-Deform и Cloth. Щелкнем по маленькой стрелочке в левой части модификатора Cloth для перемещения его в верхнюю позицию стека. У меня возникали проблемы сданным модификатором, когда он находится в последней позиции, иногда он работает, а иногда парус отсоединялся от своего контейнера во время моделирования. Мы близки к завершению работы. Нам нужен легкий бриз.

  • Создадим "пустышку" и поместим ее в стороне от лодки на расстоянии примерно двух длин корпуса.
  • Переходим Button Windows, Object Panels, Physics Buttons и на панель Fields.
  • Выберем Field Type: Wind; Tube: Fall-off; Strength: 4. Все остальные параметры установи в 0 (ноль).
  • Повернем "ветреную пустышку", так что бы она указывала на лодку.

В плаванье!!!

Использование концепций автоматизации

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

  • Выбираем арматуру “sail guide” и переходим в режим Pose Mode.
  • Поворачиваем ребро управления гиком на 30градусов (угол между осью гика и главной осью лодки).
  • Поворачиваем ребро управления реей на 40 градусов.
  • Поворачиваем средднее ребро на 45 градусов. Это придаст парусу реалистичную базовую деформацию.
  • Переходим в окно Timeline Window, пропускаем стартовый кадр 1 и начинаем моделирование нажав клавишу Play. Нам нужно 30 - 50 кадров, для полной деформации паруса.

Смотрите Blender делает свое дело.

Полезные советы

  • Переместите “sail cage” на слой, который вы можите отключить. Этот объект будет работать, но небудет закрывать поле зрения или можно использовать ограничительный столбец в Outliner(символ глаза).
  • После моделирования необходимо очистить кэш(simulation cache), перед тем как вы сможите поменять положение паруса. Выбираем модель паруса, переходим Buttons Window, Object + Physics Buttons, Cloth panel, закладка Collision. Жмем Free Cache.
  • Если вы передвините лодку после моделирования, то парус останется на месте, до тех пор пока вы не очистите кэш(simulation cache).
  • Не расстраивайтесь если программа ведет себя не так как хотелось.

Теперь добавьте верхний или носовой парус. Установите вторую мачту или смоделируйте более реалистичный корпус. Результат может выглядеть как моя модель шхуны "Bluenose".

От автора (Johannes Ewers)

Я люблю море, старые парусные корабли и морскую живопись. Пока что я не очень хороший художник, я использую 3D инструменты для создания морских сцен. После работы с POV-Ray и Moray, в течение нескольких лет, переключился на комбинацию Vue d’Esprit и Blender.

Вы можете найти некоторые мои картины на моем сайте, а также Renderosity и Zazzle.

Website: www.age-of-sail.com

e-mail: postbox1@age-of-sail.com


Возврат на главную страницу

Личные инструменты