Как импортировать симуляцию ткани из Blender в Unity

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

Проблема в том, что способ «meshToChange = otherMesh» сильно влияет на производительность на мобильных устройствах. Мне любопытно посмотреть, есть ли лучший способ изменить сетку во время выполнения.

Спасибо :)


person Vlad Ilisan    schedule 30.01.2020    source источник
comment
Вы пробовали SkinnedMesh или что-то в этом роде... это определенно не единственный способ импортировать анимацию в Unity, определенно не лучший способ заменить сетку во время выполнения... вам скорее нужно ее деформировать во время выполнения   -  person derHugo    schedule 30.01.2020
comment
@derHugo Спасибо за комментарий. Сейчас уже поздно, и я иду спать. Завтра посмотрю SkinnedMesh. Как бы я к этому отнесся? Получить сетки из блендера для каждого ключевого кадра, а затем каким-то образом добавить их в компонент SkinnedMesh? Или есть способ экспортировать его из блендера?   -  person Vlad Ilisan    schedule 31.01.2020
comment
comment
@joreldraw Ссылка у меня не работает.   -  person Vlad Ilisan    schedule 31.01.2020
comment
@derHugo Тебе не нужно отвечать. Вы наставили меня на правильный путь и заставили снова попробовать SkinnedMeshes, которые на этот раз сработали и в 3-4 раза эффективнее. Я подожду немного, прежде чем закрыть и ответить на этот пост, может быть, я узнаю что-то лучше, кто знает :). Благодарю вас!   -  person Vlad Ilisan    schedule 31.01.2020
comment
@VladIlisan рад помочь! И здорово, что вы поняли это самостоятельно - это то, о чем в основном должно быть это сообщество ;) Если вы можете добавить хорошо отформатированное решение, чтобы предоставить его другим с похожими проблемами, было бы здорово. В этом случае вам, вероятно, также следует немного отредактировать свой вопрос и сделать его более доступным для поиска;)   -  person derHugo    schedule 31.01.2020
comment
@derHugo Я полностью согласен :). Я сделал изменение, которое вы мне предложили.   -  person Vlad Ilisan    schedule 31.01.2020
comment
@VladIlisan нет, это было не то, что я имел в виду ^^ ... В теле вопроса, пожалуйста, опишите, в чем именно была проблема, что вы пробовали и почему эти варианты не были хорошими. Как бы сейчас вопрос был бы совсем оффтоп!   -  person derHugo    schedule 31.01.2020
comment
@derHugo Я сделал это первым делом :) Я подожду немного, может быть, веб-сайт нужно обновить, если нет, я изменю его снова. Странный. Спасибо, что указали на это!   -  person Vlad Ilisan    schedule 31.01.2020


Ответы (1)


Есть несколько способов сделать это

1. Лучший способ:

  • Получите ключевые кадры для запеченной симуляции с помощью надстройки .mdd для блендера.
  • Импортируйте проект Blender в Unity.
  • Добавьте префаб в сцену.
  • Выберите свой объект и перейдите к компоненту Skinned Mesh Renderer и разверните BlendShapes. Там вы найдете все свои данные.

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

Более подробную информацию можно найти в этом видео. Спасибо @derHugo за помощь в этом.

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

2.Использование файлов Alembic.

Если я прав, это то, как команда Unity сделала это для короткометражного фильма ADAM. Посмотрите это видео.

Обратите внимание, что это не будет работать на мобильных устройствах.

3. Циклическое изменение сетки в каждом кадре.

Эта техника очень похожа на 2D-анимацию. Все, что вам нужно сделать, это экспортировать последовательность fbx для анимации, а затем прокручивать их. скрипт

Имейте в виду, что вы получите огромный удар по производительности от этого. С симуляцией ткани с примерно 7k tris, меняющей сетку каждые несколько кадров, я получил около 30 кадров в секунду без каких-либо других действий в сцене на IPhone 6.

person Vlad Ilisan    schedule 31.01.2020