1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

механизм анимации в играх

Тема в разделе "Maya", создана пользователем -, 19 янв 2003.

Модераторы: Dark™, Skif
  1. Guest

    Доброго времени суток!

    Знающие, обьясните плиз, механизм анимации в играх!
    Нужен lowpoly персонаж (человекообразный) для цацки - вопорс каким
    образом я могу передать информацию, о его движениях, как я понимаю это
    не через кости потому как real-time rendering система не выдержит
    расчетов с костями,
    каким образом мне информацию от косей перевести в просто движеие
    вёртексов(и какой формат), или может как то глобально умнее все это делается
     
  2. Guest

    Select object, затем
    Edit > Keys >Bake Simulation
    и оболочка деформироватся будет не под воздействием скелета.
    Удачи.
     
  3. Guest

    Под конкретный движок - конкретный способ експортить...
    Насколько я понял, ты сам толком не знаеш что тебе нужно...
    Если движок понимает кости - експорти кости. Не понимает - експорти последовательности движения вершин. Короче, обсуди с програмером.
    Как експортить - станет ясно. Мозможно прийдется писать свой плагин. Или юзать формат чей-нибуть...
    Удачи.
     
  4. Guest

    Спасибо, буду пробовать!

    А какой формат из универсальных, в игрушках используемых позволяет сохранять анимацию (и какую именно: кости или смещение вершин)?
     
  5. Guest

    x файлы
    кости
     
  6. Guest

    А где его такой найти?
    (того кто позволяет в X сохранять (и что оно за формат такой?)

    Сорри за глюпый вопрос, но раньше с такой задачей никогда не сталкивался и потому совсем не знаю за что хвататься

    Пограммер, с которым мы это затеяли DirectX сейчас расковыривает - жду результатов, ну и сам пытаюсь чего-ньть полезное наискать

    обычно конечным продуктом была статическая модель, или отрендеренная картинка, вотъ...
     
  7. Guest

    ...насколько мне известно, делается так:

    Метод первый - анимация вершин объекта "костями":

    1) Mesh_file.ext
    из нулевого кадра (типа BIND POSE) экспортится MESH объекта (кол-во и положения вершин в пространстве), кол-во используемых в нём костей (их имена, иерархическая последователность и трансформации) и весА вершин для каждой кости. По моему это называется матрица. ;-)) (я сам не программер)

    2) Animation01 (02,03,04)_file.ext - по кол-ву анимаций
    экспортится только анимация костей (т.е. ROTATE а иногда и TRANSLATE -зависит от движка) на каждый кадр (либо через несколько кадров - зависит от необходимой точности анимации, но также влияет на объём файла содержащего анимацию)

    3)
    движок берёт файл Mesh_file.ext и применяет к нему соответствующий файл с анимацией в данный момент игры (бег, прыжок, стрельба и т.д.)
    То-есть, берётся вершина с индексом 01 её координатами в нулевом кадре, оприделяется к какой кости она принадлежит, если кость имеет трансформацию отличную от нулевого кадра(например в 5-ом кадре), то разница добавляется в положение вершины и она перемещается в соответствующее положение.Если несколько вершин имеют принадлежность к одной кости и одинаковый вес, то движок обсчитывает их перемещение массивом а не каждую по отдельности, что намного быстрее.

    Метод второй - анимация вершин объекта путём интерполяции положения каждой вершины:

    1)
    Экспортится положение в пространстве для каждой вершины объекта, на каждом кадре анимации (либо через кадр или несколько - зависит от требуемой точности анимации) По существу имеем MESH-объект в каждом кадре анимации.

    2) движок перемещает каждую вершину в положение, соответствующее текущему кадру анимации.

    Общее: если проще, то в первом случае имеем один файл содержащий MESH и много-много маленьких файлов содержащих анимации управляющих костей. (соответственно, занимается сравнительно небольшое кол-во опертивной памяти) Скорость обсчёта данных достаточно быстрая так как можно использовать ресурсы видеокарты.

    во втором случае имеем много толстых файлов содержащих MESH для каждого кадра анимации.(и много места в оперативной памяти)
    Кроме того этот способ чисто "софтварный" - т.е. обсчитаваться всё будет главным процессором.

    извини если что непонятно.

    P.S. никаких плагинов для того или иного способа у меня нет, так как это полностью индивидуальная вещь и пишется для каждого конкретного движка своя.

    удачи.
     
  8. Guest

    Спасибо!

    первый вариант, как по мне, выглядит много интереснее(оптимальней) - буду общаться с порограммистом - ожидаю его мнение всетки им все это движком реализовывать!
     
Модераторы: Dark™, Skif

Поделиться этой страницей