Как я могу создать эластичный, ломкий материал для пиццы?

21

Я хочу создать реалистичную пиццу и позволить пользователю взаимодействовать с ней.

Что я хочу:

фотография пиццы с поднятым ломтиком

Что я создал:

скриншот пиццы с отсутствующим ломтиком

Я создал модель пиццы (8 штук) в Blender, а затем импортировал ее в Unity. Кусок пиццы выглядит очень искусственно, в основном потому, что это «жесткий треугольник».

Как сделать так, чтобы сыр растягивался и ломался, когда пользователь перемещал кусок?

Петр Буренков
источник
1
Лучшие модели, лучшие текстуры и лучшие шейдеры. Так просто, как, что.
API-Beast
Вы действительно хотите, чтобы сыр растягивался и ломался? Если бы вы могли более конкретно указать, какой аспект вы хотите сделать более реалистичным, это помогло бы сузить суть вопроса.
MichaelHouse
2
@ Byte56, я понимаю, что могу улучшить качество пиццы с помощью улучшения модели, текстур и шейдеров, но мне интересен сыр. Да, я хочу, чтобы он был растяжимым и ломким. Как настоящий сыр.
Петр Буренков
6
Лично я бы посмотрел на симуляцию ткани в реальном времени и посмотрел, как далеко вы можете перейти от ткани к сыру, настраивая параметры. Я бы использовал слой сыра в пицце как отдельную сетку и использовал бы модель «весна / масса» для вычисления деформаций. Я также видел системы тканей, которые позволили вам разорвать ткань на части, которую вы хотели бы и для своего сыра. Объедините это с шейдером, который смешивается от текстуры твердого сыра до текстуры растянутого / разорванного сыра, основываясь на силе, приложенной к узлам модели весна / масса, и это должно дать вам довольно аккуратный результат.
Invor
Просто чтобы сыграть здесь адвоката дьявола, вы уверены, что вам нужна такая анимация? Я знаю, что это звучит странно - спрашивать, но вы должны видеть из уже полученных ответов, это довольно сложный эффект, к которому вы стремитесь. Очевидно, это зависит от игры (я не знаю, делаете ли вы симулятор для приготовления пиццы [я знаю людей, которые заплатили бы хорошие деньги за один)), но вы должны спросить себя, какую работу вы вложите в это действительно добавляет достаточно, чтобы оправдать ваши усилия. Даже если у вас много времени, его выделение в другом месте может окупиться в долгосрочной перспективе ...
Селали Адобор

Ответы:

28

Простой Путь

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

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

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

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

Трудный путь

Используйте физический движок мягкого тела или напишите его. Определите участок ткани между ломтиками и текстурируйте его с сыром. Разрешить физическому движку моделировать динамику растяжения и привязки материала.

Это гораздо более интенсивный, но в целом более применимый метод. Это также может быть очень неконтролируемым, но может быть в целом более убедительным эффектом.

OriginalDaemon
источник
3
Я бы полностью предложил первый подход.
Джоккинг
6
По крайней мере, потратьте несколько часов, пробуя первый подход (вы могли бы легко использовать несколько квадов), прежде чем потратить несколько ... эээ ... месяцев на написание физического движка ...
corsiKa
3
Так хочется увидеть результат! Пожалуйста, обновите нас, когда закончите.
Джон Моисей
2
Какое-то время я думал, что читаю «Используй сырный двигатель с мягким телом» и думал, вау, люди будут писать двигатели для чего угодно.
Томас,
2
Unity имеет встроенный физический движок ткани, который поддерживает растяжение и разрыв, поэтому трудный путь не может быть таким сложным. Хотя это будет намного дороже в вычислительном отношении.
Итан Уорли,
2

Использование предустановленной анимации:

Поэтому создайте предустановленную анимацию в программном обеспечении для 3D-моделирования, таком как Maya / Blender, в котором есть такие функции, как мягкие тела и ткань, которые могут хорошо имитировать разрывание пиццы. Экспортируйте и текстуру пиццы, и анимацию модели в Unity (возможно, как набор моделей .obj или что-то подобное).

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

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

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

Используя Unity:

Но в случае, если вам интересно, Unity реализует свою собственную ткань Skinned и компоненты Interactive . Интерактивное полотно поддерживает разрыв. Но поддержка для них ограничена только несколькими платформами, последний раз я проверял.

Используя вас:

В конце концов, вы всегда можете реализовать свой собственный симулятор мягкого тела. Вот пример исследовательской работы, которая довольно популярна. Это очень весело :). Удачи.

Арун Р
источник
1

Ответы @ originalDaemon хорошие! Я думаю, что есть средний путь, который может дать лучший результат, чем первый подход, и потребует разумного количества усилий (возможно, в отличие от подхода «Трудного пути»).

То, что я предлагаю, слишком на самом деле моделирует сырную «паутину», для меня это выглядит как сталактиты. Модель несколько кусков эластичного сыра. Расположите их случайным образом по краям треугольника восхитительности и масштабируйте их до 0, y-axisа когда треугольник удаляют из его компаратов, медленно масштабируйте их по оси Y до нужного размера.

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

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

wolfdawn
источник