В этом уроке мы посмотрим, как заполнить контейнер объектами с помощью Rigid Body simulation в Blender.


Видеоверсия этого руководства в настоящее время недоступна на этом языке. Видео на английском языке доступно по этой ссылке:


Текстовая расшифровка видео

Здравствуйте, всем привет!

В этом уроке мы посмотрим, как заполнить контейнер объектами с помощью Rigid Body simulation в Blender.

Я записываю этот урок, используя Blender 3.3, и для практического примера буду использовать один из моих ассетов под названием “Pharma capsule pills and bottle”. В любом случае, наличие этого ассета не является обязательным, так как вы сможете понять и освоить технику даже без этой конкретной модели.

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

3D-модель, которую я использую, на самом деле состоит из нескольких объектов, связанных между собой.

Крышка нам не нужна, поэтому мы можем скрыть или удалить её, как я и делаю.

У нас есть три объекта: контейнер, этикетка и объект, который представляет все таблетки, объединённые в один объект. Мы можем рассмотреть их подробнее, временно скрыв контейнер и этикетку.

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

Выделив объект Pills, я переключаюсь в Edit Mode, затем выбираю одну таблетку, наведя курсор мыши на вершину таблетки и нажав L, то есть “Linked”, чтобы выделить все элементы, связанные с тем, что находится рядом с курсором.

Затем я инвертирую выделение с помощью CTRL+I и удаляю все остальные таблетки, нажав X и выбрав Vertices.

Вернувшись в Object Mode, я замечаю, что Origin объекта “Pills” не расположен в центре единственной оставшейся таблетки. Я сразу исправляю это, щёлкнув правой кнопкой мыши и выбрав “Set Origin”, затем “Origin to Geometry”.

Я также убеждаюсь, что трансформации масштаба применены. Это легко проверить, так как значения Scale XYZ объекта в панели Transform установлены равными 1.
Если бы это было не так, нам пришлось бы применить масштаб с помощью CTRL+A и команды “Apply Scale”.

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

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

Пунктирная линия, соединяющая таблетку с контейнером, указывает на то, что таблетка является дочерним объектом контейнера. Это может вызвать проблемы при создании копий таблетки и при физической симуляции, поэтому я отвязываю эти два объекта, сохраняя при этом позицию и другие характеристики таблетки. Для этого я выделяю таблетку, нажимаю ALT+P и выбираю “Clear and Keep Transformation” в меню “Clear Parent”.

Теперь таблетка является отдельным объектом.

Прежде чем создавать копии, мне нужно назначить таблетке компонент Rigid Body simulation, чтобы он уже был настроен и готов в тех копиях, которые я создам позже.

Чтобы добавить Rigid Body, я просто нажимаю на “Rigid Body” в панели Physics Properties, как я только что показал.

Новый Rigid Body по умолчанию имеет тип Active, и это правильно, потому что объект должен реагировать на силу тяжести.

Чтобы посмотреть, как работает физическая симуляция на данном этапе, мы устанавливаем текущий кадр анимации на 1 в Timeline и нажимаем Play. Таблетка падает и проходит сквозь контейнер, потому что контейнер пока не участвует в физической симуляции сцены.

Чтобы контейнер мог остановить таблетку, нам нужно назначить ему компонент Rigid Body так же, как мы сделали это для таблетки, но на этот раз сразу изменить его тип на Passive, поскольку он не должен падать в пустоту, а только взаимодействовать с другими объектами.

Чтобы запустить физическую симуляцию с только что внесёнными изменениями, необходимо вернуться к первому кадру анимации в Timeline и снова нажать кнопку Play.

Мы сразу замечаем, что таблетка падает и “взаимодействует” с контейнером, но не так, как мы ожидали. Она застревает на отверстии и зависает в воздухе, как будто отверстие закрыто.

Это происходит потому, что форма, используемая Blender для расчёта столкновений контейнера в панели Rigid Body, по умолчанию установлена на “Convex Hull”. Это замкнутый объём, который используется для упрощения вычислений физического движка.

Чтобы решить эту проблему, я меняю значение параметра Shape с “Convex Hull” на “Mesh”. Теперь Blender будет приближать форму столкновений к реальной форме контейнера.

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

Что касается таблетки, можно выбрать, например, форму Capsule, которая очень хорошо её аппроксимирует. В любом случае, здесь я оставляю вариант по умолчанию, то есть Convex Hull.

Вернёмся к первому кадру в Timeline, нажмём Play и посмотрим на результат. На этот раз таблетка падает внутрь контейнера и несколько раз подпрыгивает на дне, прежде чем остановиться.

Обратите внимание, что симуляция начинает замедляться в момент, когда таблетка касается дна контейнера. Это связано с тем, что Blender выполняет расчёты столкновений.
Когда мы добавим остальные таблетки, симуляция будет идти значительно медленнее, потому что, очевидно, количество вычислений увеличится.

Вернёмся к первому кадру симуляции.

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

Получить несколько копий таблетки на самом деле довольно просто. Нам нужно добавить модификатор Array к таблетке, установив Relative Offset в 0 для осей X и Y и в 2 для относительного смещения по оси Z.

Я не знаю, сколько таблеток поместится внутри контейнера, так как я не считал их в начале видео, поэтому я попробую использовать 40 таблеток, указав это число в параметре Count модификатора Array.

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

Поэтому я применяю модификатор, нажав Apply в его панели.

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

Для этого достаточно перейти в Edit Mode, выделить всю геометрию, нажать P и выбрать “By Loose Parts” в меню Separate, которое появится на экране.

Таким образом, как подсказывает tooltip, мы получим по одному объекту для каждого “island”, то есть для каждой отдельной геометрии.

Вернёмся в Object Mode и отметим, что все новые таблетки действительно являются отдельными объектами, как это видно и в Outliner.

Все эти объекты имеют компонент Rigid Body, настроенный так же, как и у первой таблетки, которая послужила “прототипом” для всех остальных.

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

Эта проблема решается очень просто. Мы выбираем одну из копий, чтобы сделать её активным объектом, затем выбираем все остальные копии. Я делаю это с помощью клавиши B и мыши. После этого мы нажимаем правой кнопкой мыши по выделению и выбираем “Set Origin”, затем “Origin to Geometry” в меню “Object Context”, которое появляется на экране.

Теперь все таблетки являются отдельными объектами, с правильно установленными Origin, и у всех корректно настроен компонент Rigid Body.

Затем мы можем перейти к первому кадру Timeline и запустить симуляцию, нажав кнопку Play.
В данном случае симуляция займёт несколько минут.

На самом деле, возможно, 40 таблеток было слишком мало для этого контейнера.

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

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

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

Операцию удаления компонента Rigid Body из вкладки Physics у таблеток выполнять НЕ нужно, так же как не нужно объединять таблетки между собой или с контейнером. Эти действия привели бы к потере физической симуляции, и нам пришлось бы начинать всё заново.

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

Когда все таблетки выделены и одна из них является активной, нужно найти “Apply Transformation” в строке поиска Blender, которую в моём случае можно вызвать нажатием пробела, и выбрать вариант в разделе Rigid Body, так как нам нужно применить трансформации Rigid Body.

Но на этом мы ещё не закончили. Нам нужно снова открыть строку поиска и начать вводить “Remove Rigid Body”, поскольку теперь мы хотим удалить компонент Rigid Body у всех выделенных таблеток.
Следует выбрать операцию Object, затем Rigid Body, затем Remove.

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

Теперь этот объект можно экспортировать и использовать в других сценах.

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

На этом урок завершён. До скорой встречи!

🇺🇸 Sitemap - 🇮🇹 Sitemap - 🇪🇸 Mapa del sitio - 🇧🇷 Mapa do site - 🇫🇷 Plan du site - 🇩🇪 Sitemap - 🇷🇺 Карта сайта - 🇨🇳 网站地图 - 🇯🇵 サイトマップ - 🇰🇷 사이트맵


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


РАСШИРЕННАЯ ИНФОРМАЦИЯ О ПОЛИТИКЕ КОНФИДЕНЦИАЛЬНОСТИ И ИСПОЛЬЗОВАНИИ ФАЙЛОВ COOKIE