![]() |
Формат .fig - Версия для печати +- Город Джунов (https://www.gipat.ru/forum) +-- Форум Аддон для Проклятых Земель (https://www.gipat.ru/forum/forum-20.html) +--- Форум Программирование (https://www.gipat.ru/forum/forum-6.html) +--- Темы: Формат .fig (/thread-1549.html) Страницы:
1
2
|
Формат .fig - v1s0r - 06.02.2010 Привет ребята. Вот я добрался и до сюда. Но меня уже пугает скрытность... Скажите, пжл, доступна ли какая-либо информация о fig (я так понимаю, это тройка .mod .anm .bon). Есть ли какие-либо утилиты? С чего можно и нужно начать или сразу вешаться ![]() Формат .fig - Sagrer - 07.02.2010 2v1s0r кю, тебе мыло дошло? Про fig-и там чего-то такое я отправлял ). Там правда только начальный разбор, но хоть что-то ). Формат .fig - v1s0r - 08.02.2010 2Sagrer всё норм, получил, спс, буду разбираться обязательно. Сюда я просто на всякий случай написал... Формат .fig - v1s0r - 23.03.2010 Готово описание формата fig с друзьями. Если кто заинтересуется в приведении доки в более удобную форму - пишите. Я сомневаюсь, что получилось доступно и понятно всё объяснить. Добавил: v1s0r [mergetime]1269368204[/mergetime] Начать следует с figures.txt, а далее по ссылкам... Документы обновлены. Улучшено оформление. Формат .fig - Врыл - 12.09.2010 Решил попробовать сделать нового монстра "псоглавца". Прикрутил голову волка в unhuma.mod. Вот что получилось: ![]() Есть ли способ -изменить ориентацию головы -изменить относительный размер -изменить положение текстуры для волчьей головы чтобы сократить замещение текстур ? К сожалению из описания форматов мне мало что понятно ![]() Формат .fig - IDoL - 14.07.2011 Прощу помощи с анимацией. Если более конкретно, то со смещениями при анимации. На данный момент в CE не используются смещения из файла анимации, а считаются на ходу. в том числе смещение базовой кости - собственно поэтому драконы сейчас не летают ![]() У нас из fig8 по комплекции идет расчет смещения кости относительно родительской кости. потом по повороту родительской оси откладываем это смещение и рисуем текущую часть тела. Собственно это все равботает на вид более чем неплохо - за исключением смещения базовой кости. В анимациях есть уже просчитанное смещение с учетом поворота родительской кости, в том числе для базовой кости. Однако, насколько я понимаю, для каждого кадра анимации есть только один набор смещений костей, что не позволяет правильно пересчитать смещения для текущей комплекции... Мне не удалось догадаться, как же правильно пересчитывать смещения для анимации. Надеюсь, что кто-нибудь подскажет ![]() PS на скринах смещения из файлов анимации - для кабанчика вполне неплохо(для кабанов побольше - не подходит), а вот лягушка, похоже, должна быть значительно больше чтобы подходить для этих смещений Врыл Знаю, что уже почти год прошел ![]() Формат .fig - ALtair - 14.07.2011 Нужен псевдокод, так очень сложно понять даже суть вопроса ![]() Формат .fig - IDoL - 15.07.2011 ![]() вот наша функция для расчета смещения - работает вроде бы как надо, по крайней мере на вид (вызывается 3 раза для x, y и z соответственно) Код: static float ce_figfile_value_fig8(const float* params, //массив fig8 - 8 наборов смещений для расчето нужного по комплекции основная структура здесь будет выглядеть так Код: typedef struct ce_figbone ce_figbone; так выглядит функция для расчета анимации сейчас - смещение из анимации не учитывается, подъем модели из земли получается через хардкод ![]() Код: static void ce_figbone_update_transform(ce_figbone* figbone, то, над чем я работаю Код: static void ce_figbone_update_transform(ce_figbone* figbone, Ну собственно так это выглядит. тоесть берем просто выбираем смещения из ключевых кадров, интерполируем на текущее состояние анимации и получаем почти то, что нужно - включая смещение базовой кости. но - смещения должны быть подвергнуты корректировке в зависимости от комплекции юнита, как мне кажется именно поэтому у лягушки части находятся отдельно. Так вот если смещения по комплекции у нас считаются - мы используем все 8 наборов fig8, а если нтерполируем смещение из anm, то совершенно непонятно как его пересчитать по комплекции - набор смещений у нас тут вроде как один. PS v1s0r - если с описанием/комментами гдето ошибся - поправь ![]() Формат .fig - ALtair - 15.07.2011 А, так вот оно чо... Последняя фраза мне объяснила всю суть проблемы ![]() IDoL,Пятница, 15 Июля 2011, 12:13 Написал:Так вот если смещения по комплекции у нас считаются - мы используем все 8 наборов fig8, а если нтерполируем смещение из anm, то совершенно непонятно как его пересчитать по комплекции - набор смещений у нас тут вроде как один. Смешения в анимациях заданы одним набором, да, это не ошибка и тут нет логического несоответствия. Для расчета правильной позиции косточки необходимо учитывать не только это смещение, но и "саму кость" (из bon-файла). У меня сейчас, к сожалению, нет возможности посмотреть собственный код, но я точно помню, что классический подход к анимации мне не подошел. Если я правильно помню, мне в итоге вообще пришлось забить на смещения из anm и рендерить анимированный скелет только с помощью вращений. Смещения для косточек используются вроде только в случае корневых костей (первая кость дерева в скелете). Короче говоря, упрощенно алгоритм для расчета позиции и ориентации некорневой кости на кажом кадре можно представить примерно вот так: 1) Повернуть текущую кость (из bon-файла) на родительскую ориентацию 2) Прибавить к получившемуся смещению смещение родительской кости (предрасчитанное уже) 3) Взять текущую ориентацию и довернуть ее на родительскую ориентацию В итоге получишь нужные смещение и ориентацию для кости. Под "текущими" ориентациями я понимаю кватернион, считанный из anm. Формат .fig - IDoL - 15.07.2011 Спасибо. Попробую разобраться что у нас там в "самой кости" ![]() по алгоритму расчета некорневой кости - это без учета смещений из anm? очень похоже на то что на данный момент используется. а в anm ведь все смещения уже расчитаны с учетом поворота родительской кости, насколько это получается у меня ![]() Но наиболее интересно смещение корневой кости - ведь оно тоже должно подвергаться корректировке - по высоте по крайней мере точно. Иначе - отрывает от земли или наоборот - это я уже пробовал ![]() Формат .fig - v1s0r - 16.07.2011 ALtair,Friday, 15 July 2011, 17:07 Написал:Если я правильно помню, мне в итоге вообще пришлось забить на смещения из anm и рендерить анимированный скелет только с помощью вращений.Вот-вот. Я также забил, потому что не догнал, как эти смещения использовать. В результате персы нормально анимируются, но не такие живые, как в ПЗ, т.е. без т.н. "покачиваний". Насколько я знаю, IDoL'у удалось смещать корневую кость и добиться правильной анимации. В некоторых случаях... Формат .fig - ALtair - 18.07.2011 IDoL,Пятница, 15 Июля 2011, 18:42 Написал:по алгоритму расчета некорневой кости - это без учета смещений из anm? [right][snapback]40883[/snapback][/right]Да, без учета смещений из anm. IDoL,Пятница, 15 Июля 2011, 18:42 Написал:Но наиболее интересно смещение корневой кости - ведь оно тоже должно подвергаться корректировке - по высоте по крайней мере точно. Иначе - отрывает от земли или наоборот - это я уже пробовалПозиция корневой кости скелета считается иначе, да. Во-первых, для нее используется-таки смещение из anm (причем задает абсолютное смещение относительно пивота объекта, никак не расчитывается). Во-вторых, это смещение умножается на корректировку "роста", которая в свою очередь берется из *.adb (там три значения - min. mid и max, смещение же равно (mid != 0 ? (min + height*(max-min))/mid : 1.0f). В-третьих, используется некое смещение центра модели, задаваемое в RaceDatabase (Center shift), которое тоже в свою очередь домножается на корректировку роста. v1s0r,Суббота, 16 Июля 2011, 16:28 Написал:В результате персы нормально анимируются, но не такие живые, как в ПЗ, т.е. без т.н. "покачиваний".[right][snapback]40885[/snapback][/right]Я хз, откуда взяться каким-либо "покачиваниям", кроме как из анимации. Корневая кость анимируется смещениями из anm, а значит все "покачивания" надо брать именно оттуда. Формат .fig - IDoL - 18.07.2011 ALtair,Понедельник, 18 Июля 2011, 09:35 Написал:Позиция корневой кости скелета считается иначе, да. Во-первых, для нее используется-таки смещение из anm (причем задает абсолютное смещение относительно пивота объекта, никак не расчитывается). Во-вторых, это смещение умножается на корректировку "роста", которая в свою очередь берется из *.adb (там три значения - min. mid и max, смещение же равно (mid != 0 ? (min + height*(max-min))/mid : 1.0f). В-третьих, используется некое смещение центра модели, задаваемое в RaceDatabase (Center shift), которое тоже в свою очередь домножается на корректировку роста.О, как все непросто. Я вот как раз на выходных сам полез в adb уже... Пока ничего особо примечательного не получилось. А что такое RaceDatabase? Да, все эти покачивания - из anm и есть ![]() Формат .fig - ALtair - 18.07.2011 IDoL,Понедельник, 18 Июля 2011, 12:10 Написал:А что такое RaceDatabase?[right][snapback]40888[/snapback][/right]Эмм, ну, как же, Database.res->units.udb->RaceModels.txt Формат .fig - IDoL - 18.07.2011 А. Я туда еще не добрался... надо смотреть, спасибо |