Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Выбор формата анимированной модели персонажа. (2 стр)

Выбор формата анимированной модели персонажа. (2 стр)

Страницы: 1 2 3 4 Следующая »
MikleМодераторwww10 янв. 201819:26#15
MrShoor
> Дикий оверхед по памяти для высокополигональных моделей.
Я, хоть и не рассчитываю на высокополигональные модели, но всё равно, это - аргумент.
MrShoor
> Со скелеткой кстати ничего сложного.
Я так понимаю, это то же самое, только ключевые кадры задаются матрицами для отдельных сабсетов модели?
MrShoor
> Может уйти сразу в скелетную анимацию?
Модельку для тестов найти будет проще?
MrShoorУчастникwww10 янв. 201819:37#16
Mikle
> Я так понимаю, это то же самое, только ключевые кадры задаются матрицами для
> отдельных сабсетов модели?
Да. Ну в дополнение в вершинах хранятся индексы костей и веса, которые вляют на эту кость. Обычно делают влияние до 4-х костей.

Mikle
> Модельку для тестов найти будет проще?
Элементарно. mixamo.com с кучей моделек и готовых анимаций. Так же mixamo.com позвоялет свои модели грузить на него, и оно автоматически цепляет кости к модели, и для твоей модели становятся доступны все анимации, которые есть на сайте.

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

barnesПостоялецwww10 янв. 201821:33#17
Mikle
> 1. Там для анимации применён морфинг. Я правильно понимаю, что это просто набор
> ключевых кадров, между которыми анимация делается обычной интерполяцией?
> 2. Не будет ли проблем в дальнейшем, в плане возможности заказать модель
> моделеру? Конвертировать её из какого-то другого формата с анимацией?
> 3. Может есть ещё проблема, которую я не предвижу?

1 - Ага.
2 - У меня для 3дс макса есть скрипт экспорта, работает на ура.
3 - Там вертексы дико плывут на аним мешах, точности не хватает, тк они закодированы в short

Правка: 10 янв. 2018 21:41

AndreyПостоялецwww10 янв. 201821:47#18
Mikle
если выберешь скелетку, то самое простое можно написать импорт из COLLDA(XML based), или конвертер в свой бинарный. Есть еще FBX формат, FBX SDK на сайте autodesk.
Еще глянь cal3d библиотеку, может подойдет, это вообще готово решение(как и FBX) скелетка + viewer + загрузчик + плагин экспорта, вроде физика тоже есть.
MrShoor
> mixamo.com
Супер!
gamedevforПостоялецwww10 янв. 201821:50#19
А чем MD5 не устраивает?
MikleМодераторwww11 янв. 201811:11#20
gamedevfor
> А чем MD5 не устраивает?
Я пока не писал, что не устраивает. Я ищу максимально простое, обеспечивающее необходимую мне функциональность.
Есть ещё .x формат, там, вроде бы, тоже возможна скелетная анимация. Со статическим .x я работал, может его выбрать?
ChebПостоялецwww11 янв. 201811:37#21
>Неужели проблема сразу импортировать ключевые кадры в float, все интерполяции делать уже в нём?
Так это при интерполяции в флоатах шевелится.
Ты не можешь восстановить информацию, побитую сверхсильным сжатием. Когда каждая вершина ужата до 256 позиций - это даёт сильный шум дискретизации. Ты его ничем не исправишь.
В md2 нет иных кадров, кроме ключевых. Там для каждого кадра тупо хранятся координаты всех вершин. Md2 - это экспортный формат.
Ещё и нормали пожаты до одного байта, по специальной таблице. И они тоже шевелятся страшно.

Вывод: зачем курить говно мамонта, оптимизированное идти на машинах с 16Мб памяти подо всё, включая карту, текстуры, модели и даже операционную систему? Возьми хотя бы md3.

Правка: 11 янв. 2018 11:40

MikleМодераторwww11 янв. 201811:46#22
Cheb
> В md2 нет иных кадров, кроме ключевых.
В смысле там хранятся ВСЕ кадры анимации? Я думал, что только предельные, а между ними интерполирует движок на лету.
u960Постоялецwww11 янв. 201811:49#23
Mikle
> Я думал, что только предельные, а между ними интерполирует движок на лету.
да, так и есть

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

хз, я ничего не замечал, правда освещение не использовал.

Правка: 11 янв. 2018 11:52

innuendoПостоялецwww11 янв. 201811:57#24
Andrey
> или конвертер в свой бинарный.

и потом гордиться до пенсии :)

ChebПостоялецwww11 янв. 201814:37#25
>хз, я ничего не замечал, правда освещение не использовал.
А на родных моделях из второкваки ничего и не видно. Потому что полигоны у них огромные.
Попробуй сделать деталь размером, скажем, 1/50 от размера модели (нос, там, или ухо). Все вершины будут плясать с амплитудой 50/256 ~одну пятую от размера этой детали. Буэээ.
Ютубу колыхания на крупных планах я уже приводил - это ограничение не движка, а формата md2.

>Я думал, что только предельные, а между ними интерполирует движок на лету.
Нет. Хоть он и интерполирует (ли?), там все анимации полностью, где-то 10 кадров в секунду, и для этого всё люто пожато (до 32 бит на вершину, как раз). Вся модель имеет 100..200 кадров, все кадры имеют строковые имена, и привязываются по этим именам, зашитым в код движка.

В отличие от md2, md3 содержат точки привязки для других md3, анимируемых независимо. В третьем квейке игрок состоит из трёх частей: ноги, туловище, голова (и ещё пушка). Движок может наклонять туловище относительно ног а голову - относительно туловища, и тем самым видно, вверх человек целится, или вниз. Во втором квейке такой роскоши нет.

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

Правка: 11 янв. 2018 14:39

MikleМодераторwww11 янв. 201814:42#26
Cheb
> Нет. Хоть он и интерполирует (ли?), там все анимации полностью, где-то 10
> кадров в секунду
Я понял, не в этом дело. Просто интерполяция - это движение по прямой от одной позиции к другой, для интерполяции вращения приходится делать много промежуточных кадров, и именно на вращении неизбежна эта "пляска".
ChebПостоялецwww11 янв. 201814:58#27
>и именно на вращении неизбежна эта "пляска".
НЕВЕРНО. Пляска - это шум дискретизации. Внутри каждого кадра x, y и z каждая независимо нормализуются к диапазону 0..255 и округляются до целого. Таким образом в каждом кадре каждая координата каждой вершины сдвинута на сучайную величину от нуля до плюс/минус 1/512 размера модели по этой оси.
Поскольку реальный диапазон меняется от кадра к кадру, эти погрешности дискретизации ещё и пляшут туда-сюда. Независимо по каждой из осей.
На высокополигональных моделях - да даже на тех, что мы нынче считаем низкополигональными - эта пляска даёт очень заметный омерзительный эффект "червей под кожей". Увеличив число кадров только сделаешь хуже.

Больше разжёвывать не буду, думай сам.

MikleМодераторwww11 янв. 201815:30#28
Cheb
Представь движение без вращения, просто часть модели в первом кадре на координатах 0-0-0, во втором на 30-50-44.
Между кадрами интерполяция происходит во float, откуда пляска?
Так что
> Больше разжёвывать не буду, думай сам.
DODgeПостоялецwww11 янв. 201819:28#29
Может SMD? Да, тот самый текстовый формат от 1й и 2й Халфы. Я начинал с него, чтобы понять как вообще работает анимация. К тому же на сайте для разработчиков Valve есть плагины для ведущих редакторов (3DS Max, Blender и пр.). Там всё во float'ах - позиции, нормали, текстурные координаты, веса для вершин. У меня дома есть готовый тестовый проект на чистом VB6, как ты любишь :) - там реализовано все: загрузка меша, анимаций, рендер с интерполяцией между кадрами. Всё по минимуму, ничего лишнего, именно как обучающий проект этому формату. Кода всего на 3-4 листа А4 примерно.
Страницы: 1 2 3 4 Следующая »

/ Форум / Программирование игр / Графика

2001—2018 © GameDev.ru — Разработка игр