Заполнение объема насыпанием

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

Банка, заполненная предметами
Банка, заполненная предметами

Все это можно сделать и вручную. Создавать копии заполняющих объектов и располагать друг над другом в случайном порядке. Однако при таком подходе слишком много сил и времени уходит на постоянные проверки, чтобы объекты не пересекались друг с другом и со стенками заполняемого объекта. Чтобы облегчить себе работу, можно воспользоваться инструментом Rigid Body — аналогом твердотельной симуляции в Blender.

 Для начала у нас есть банка и несколько предметов, которыми ее нужно заполнить:

Банка с предметами для заполнения
Банка с предметами для заполнения
  1.  Расположить предметы над горлышком банки так, чтобы они не пересекались.
  2. Размножить их на количество, нужное для заполнения:
    1. Добавить к объекту модификатор Array.
      1. Установить:
        1. Relative Offset
          1. X = 0
          2. Z = 4 — подобрать значение, чтобы объект можно было повернуть без пересечений со своими копиями и другими объектами.
        2. Подобрать количество, необходимое для заполнения требуемого объема:
          1. Count = 40
Расположение объектов над банкой
Расположение объектов над банкой
  1.  Применить модификатор Array у всех объектов.

После применения модификатора Array объекты слиты в один меш. Нужно разделить их по отдельным мешам: в режиме редактирования разбить по замкнутым контурам.

  1. Для каждого набора объектов:
    1. tab
    2. p — By Loose Parts
    3. tab

Центр масс для каждого из разделенных объектов остался на старом месте — на первом объекте, с которого начинался массив. Расположим центры масс объектов по их геометрическому центру.

  1. Выделить все засыпаемые объекты.
    1. В T-панели
      1. Tool
        1. Transform
          1. Set Origin
            1. Установить в Origin To Center Of Mass
Корректировка центра тяжести предметов
Корректировка центра тяжести предметов

Для придания начальной хаотичности немного повернем засыпаемые объекты:

  1. Все засыпаемые объекты должны быть выделены.
    1. В меню выбрать:
      1. Object — Transform — Randomize Transform
    2. В T-панели установить диапазон внутри которого объект будет повернут на случайный угол:
      1. Randomize Rotation
        1. X = 90
        2. Y = 90
        3. Z = 90
Добавление случайного поворота предметам
Добавление случайного поворота предметам

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

  1. Для засыпаемых объектов:
    1. Все они должны быть выделены.
    2. В T-панели
      1. Physics
        1. Rigid Body Tools
          1. Add/Remove
            1. Add Active
Назначение активного твердого тела предметам
Назначение активного твердого тела предметам
  1. Выделить банку
    1. В T-панели
      1. Physics
        1. Rigid Body Tools
          1. Add/Remove
            1. Add Passive
Назначение пассивного твердого тела на банку
Назначение пассивного твердого тела на банку

Все готово, можно проводить симуляцию.

  1. Открыть окно TimeLine и запустить проигрывание.

Если объекты, банка и засыпаемые в нее предметы, слишком маленькие (измеряются сантиметрами), симуляция может пройти с ошибками — засыпаемые объекты будут проваливаться сквозь стенки банки. В этом случае нужно увеличить все объекты раз в 10, провести симуляцию, и уменьшить их обратно в 10 раз.

После завершения симуляции, все объекты окажутся засыпаны в банку. Для более равномерного перемешивания можно варьировать расположение и углы поворота объектов над горлышком банки.

Для того, чтобы отвязаться от временной линии и сохранить положение объектов после симуляции нужно:

  1. В T-панели
    1. Physics
      1. Rigid Body Tools
        1. нажать Apply Transformation
Завершенная симуляция насыпания
Завершенная симуляция насыпания