Войти
ПрограммированиеФорумГрафика

FBX Animation (2 стр)

Страницы: 1 2 3 4 Следующая »
#15
14:49, 31 мая 2016

Osiris
> Должен ли я матрицы костей переводить из RH в LH?
Если модель не переводите, то и матрицы не переводите.

В FBX-файле все сложено в одном пространстве.


#16
15:29, 31 мая 2016

Barabus
> Если модель не переводите, то и матрицы не переводите.
Перевожу, значит перевожу, спасибо

#17
17:07, 31 мая 2016

> FBX файл так и хранит это для нормалей, текстур и прочего и и видимо не оптимально. Ты как-то с этим боролся?
Osiris, я брал эти данные, собирал по ним полноценный (собственный) вертекс со всеми нужными ему данными, запихивал его в "движковый" меш, а он уже там сам сливал одинаковые вертексы в один.

З/Ы по анимации, если возможно, потом покажи как что делаешь, пожалуйста. Для меня эти вопросы тоже актуальны ;-)

#18
22:32, 31 мая 2016

slava_mib
>я брал эти данные, собирал по ним полноценный (собственный) вертекс со всеми нужными ему данными, запихивал его в "движковый" меш, а он уже там сам сливал одинаковые вертексы в один.

У меня такой оптимизатор был в конверторе Х меш в свой, а теперь его нет и оптимизатора нет(

> З/Ы по анимации, если возможно, потом покажи как что делаешь, пожалуйста. Для
> меня эти вопросы тоже актуальны ;-)

Не проблема) Только надо добить.

#19
23:04, 31 мая 2016

Тоже подписываюсь на анимацию :)

Из прочитанного я понял следующее. Есть FbxAnimStack — стек анимаций, что-то типа анимэйшнсета, я так думаю. В FbxAnimStack входят FbxAnimLayerы, слои анимации или просто анимации, по штуке на каждый анимируемый нод. Правильно?

Еще есть FbxAnimCurveNode, FbxAnimCurve, FbxAnimCurveKey и прочее. Но как ими пользоваться, я пока не понял :)

#20
9:46, 1 июня 2016

Вот тут есть немного инфы об этом: http://www.gamedev.net/topic/658450-fbx-and-skinned-animation/

#21
16:04, 1 июня 2016

slava_mib
там вроде как про импорт, а мне надо экспортировать.

Пока наваял такую функцию:

+ Показать

Не уверен только в одной операции:

FbxAnimCurveNode* pTranslationCurveNode = bone->LclTranslation.GetCurveNode(pAnimLayer, true); // create translation node
Я создаю нод, получаю указатель на него, но нигде указатель не использую. Это нормально?

#22
16:28, 1 июня 2016

Barabus
> Я создаю нод, получаю указатель на него, но нигде указатель не использую. Это
> нормально?

Думаю что нет) Но я пока не дошел до этого, я еще борю статическую иерархию, у меня геометрия преобразуется нормально, а иерархия матриц что-то сбоит.

#23
20:10, 1 июня 2016

Собственно, я не ошибся. Анимация успешно экспортировалась и работает. Вызов LclTranslation.GetCurveNode(pAnimLayer, true) (с параметром true) создает нод для вызывающего свойства. Этого достаточно, никаких манимуляций с самим нодом не требуется.

#24
23:33, 1 июня 2016

Я уже начал подумывать о том, что FBX SDK - это не такая уж и плохая вещь.

И привет, приплыли, сушите весла. Мне нужна анимация вращения на компонентах кватернионов, а SDK ее не поддерживает.

И что теперь делать? Ручками лепить интерполяцию на все недостающие ключи? Мать твою :(

#25
18:45, 2 июня 2016

Barabus
> Мне нужна анимация вращения на компонентах кватернионов, а SDK ее не
> поддерживает.
Это как?

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

  const FbxVector4 lT = pNode->GetGeometricTranslation(FbxNode::eSourcePivot);
  const FbxVector4 lR = pNode->GetGeometricRotation(FbxNode::eSourcePivot);
  const FbxVector4 lS = pNode->GetGeometricScaling(FbxNode::eSourcePivot);

  return FbxAMatrix(lT, lR, lS);

Мне нужно все преобразовать в LH систему Direct3D, я опирался на статью
http://www.gamedev.net/page/resources/_/technical/graphics-progra… fbx-sdk-r3582
Но там трансформации описанные не работают как надо. В FBX вот такая система

+    mUpVector    {mAxis=eYAxis (1) mSign=1 }  fbxsdk::FbxAxisSystem::AxisDef
+    mFrontVector  {mAxis=eZAxis (2) mSign=1 }  fbxsdk::FbxAxisSystem::AxisDef
+    mCoorSystem  {mAxis=eXAxis (0) mSign=1 }  fbxsdk::FbxAxisSystem::AxisDef

И вот значит я вершины перемножал такой матрицей, которая меняет Х и Z, и при единичной трансформации все окей, но вот как только трансформация геометрии появляется - то труба, никак оси не подберу.

#26
19:10, 2 июня 2016

У меня, блин, готовый формат есть, все кроме скелетки из него импортирую без проблем, и тут это SDK такая блин хрень. Может есть другие либы для скелетки?

Проблема сейчас в том с FBX, что не применяя этой геометрической трансформации две модели имеют общий обход вершин, а как применяю ее, то разный. И в просмотрщике FBX тоже самое, одна модель вывернута наизнанку, только вот трансформации правильные. Хотя я без проблем обе модели конвертирую в Х а потом в свой движок для просмотра.

#27
10:43, 3 июня 2016

Barabus
> И привет, приплыли, сушите весла. Мне нужна анимация вращения на компонентах
> кватернионов, а SDK ее не поддерживает.

пример DrawScene, функция ComputeSkinDeformation, внутри ComputeDualQuaternionDeformation

#28
11:26, 3 июня 2016

Пытаюсь разобраться в проблеме, значит нашел такое в доках (http://download.autodesk.com/us/fbx/20112/FBX_SDK_HELP/index.html… 81e696651.htm,topicNumber=d0e7429)

WorldTransform = ParentWorldTransform * T * R * S * OT * OR * OS

где
OT Geometric transform translation
OR Geometric transform rotation
OS Geometric transform translation (scale видимо)

Я что делаю:
- собираю матрицу геометрии
- трансформирую вершину по ней
- эту вершину перевожу в LH координаты путем умножения на матрицу трансформации (меняет местами Y и Z)
- дальше нужно поменять матрицу трансформации узла в LH, видимо, но тут выходят разные координаты у геометрической матрицы и узла, как тут правильно сделать я уже не соображаю.

#29
11:51, 3 июня 2016

Osiris
> пример DrawScene, функция ComputeSkinDeformation, внутри
> ComputeDualQuaternionDeformation
Не то, дам дуал кватернионы используются для рассчета скиннинга. А мне надо сохранить анимацию в FBX.

Экспорт (да и импорт тоже) работает только для углов Эйлера. А чтобы перевести кватернион в эйлер, надо иметь весь кватернион целиком. У меня же компоненты кватернионов в разброс, одни компоненты в одно время, другие - в другое и т.д.

Нужна собственная функция интерполяции, которой в SDK нет.

Страницы: 1 2 3 4 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.