Рендеринг майя анимации на Android?

Мне удалось импортировать 3D-модели из Maya в файлы OBJ, которые, в свою очередь, читаются моим приложением для Android. Эта модель теперь может быть отображена, и я могу применять преобразования к ним, даже к объектам с большим количеством полигонов, что приятно.

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

Кто-нибудь пытался сделать это раньше? Если так, как это будет работать?

3 ответа

Я думаю, что стоит отметить, что этот вопрос не имеет никакого отношения к майя. Форматы файлов Maya являются проприетарными и непрозрачными; вы НЕ найдете способа напрямую отобразить их на Android (или где-нибудь еще, зайдите к этому). Но вы можете экспортировать данные из Maya (в основном) в любой формат, что вы действительно хотите делать.

Итак, вот процесс:

  1. Выясните, как вы собираетесь отображать 3D-модели и анимацию на Android
  2. Выясните, как получить материал из Maya в формате, который требуется для ответа на шаге 1.

Есть много способов сделать шаг 1. Для простоты использования я бы, наверное, сам пошел на Unity. По сути, это инструмент для разработки игр, который может создавать 3D-приложения и игры, работающие на Android (и iOS, OSX, Windows и т. Д.). Это бесплатно - дополнение для Android стоит 400 долларов, но если вы действительно планируете сделать что-то серьезное с Android Вы найдете это стоящим. С его помощью довольно просто создать небольшое приложение для Android в Unity, которое отображает анимированную модель (а в Unity создано МНОГО 3D-игр для Android и iOS). Unity также хочет модели и анимации в формате FBX, который является широко поддерживаемым форматом обмена - у вас не будет проблем с переносом данных из Maya в FBX.

Если вы пошли с Unity на шаге 1, то шаг 2 тривиален: экспортируйте свои модели из Maya как FBX, и все готово. Если вы решили создать собственное приложение для рендеринга Android, то удачи.:)

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

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

В отличие от ответа Коди Хэтч, мне это тоже интересно. Это моя теория, как прийти к анимации модели:

Допустим, ваша модель имеет 30 кадров. Один из способов - экспортировать каждый кадр как отдельную модель OBJ. Оттуда вы можете сделать папку для этих 30 OBJs. Итак, теперь у вас всего 31 файл. Если человек нажимает на кнопку, хитрость заключается в том, чтобы загрузить каждый OBJ по порядку в зависимости от продолжительности действия кнопки (или любого другого действия). и если он длится более 1 секунды (30 кадров), вернитесь к началу.

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

Другие вопросы по тегам