/ / Визначення довжини кістки при імпорті за допомогою Assimp - анімація, асим

Визначення довжини кісток при імпорті за допомогою Assimp - анімація, асим

Я намагаюся завантажити і виправити деякі фальсифіковані моделівикористовуючи Assimp 3.1.1 Таким чином, у мене є aiBone, ідентифікований в ієрархії aiNode. Для кожного aiBone я маю свою трансформацію (TRS) w.r.t. батькові.

Мій питання, як я можу визначити довжинукожна кістка? Припускаючи підключений скелет, це не проблема для більшості кісток, за винятком кісток листя. Припускаю, що маю наступну структуру скелету: b0 -> b1 -> b2 коли b0 є кореневою кісткою, а b2 - листовою кісткою. Як я можу дізнатися довжину b2 (оскільки у мене є тільки його перетворення w.r.t. b1)?

Дякую!

Відповіді:

2 для відповіді № 1

Незважаючи на те, що більшість SDK і ігрових движків визначають скелет у вигляді кісток, це неправильно. Вона дійсно є суглоби. Кістки є непрямими зв'язками між суглобами. Коли ви дивитесь на це таким чином, ви усвідомлюєте, що всі кістки мають довжину і не існує кісток, що простягається від останніх суглобів листа.

Замініть ваш приклад суглобами:

J0 ---B0---> J1 ---B1---> J2

B0 - кістка між J0 і J1, а B1 - кістка між J1 і J2.


1 для відповіді № 2

Отже, трохи далі копаючи .. ISTM, що не існує ніякого неявного способу дізнатися, де кістки листя повинні закінчуватися.

Наступні коментарні коди посилаються з Ogre3D вікі (це не азімп, але ми говоримо про ту саму проблему тут).

if(numChildren == 0)
{
// There are no children, but we should still represent the bone
// Creates a bone of length 1 for leaf bones (bones without children)
// ...
}

Я думаю, ви могли б розглянути спробу розрахуватидовжина листової кістки, шляхом розрахунку відстані від кістки до краю сітки, яку ви відтворюєте ... хоча це може бути більше проблем, ніж його вартість.