0

各ノードの絶対値を取得したい。ルートからの距離を意味する絶対値。

スケルトンモデルがある場合。

ルートチャイルドは

root
left hip - child
left knee - child
left foot - child

assume that all the bones lengths are equal to 1.
root to hip = 1
hip to knee = 1
knee to foot = 1

根元から足の関節の位置を取得したい場合は 3 でいいでしょうか?

root to foot = root to hip + hip to knee + knee to foot = 3

これらは私が使用しているサブルーチンです..

void ComputeAbs()
{
    for(unsigned int i=1; i<nNodes(); i++) 
    {
        node* b = getNode(i);
        if(b)
        {
            b->nb = ComputeAbsSum(b);
        }
    }
}

int ComputeAbsSum(node *b)
{
    int m = b->nb;
    if (b->child != NULL) 
    {
        m *= ComputeAbsSum(b->child);
    }
    return m;
}

出力は次のようになります

root to hip = 3
root to knee = 2
root to foot = 1

But I want in a reverse way, i should get like this

root to hip = 1
root to knee = 2
root to foot = 3

どうすればこの結果を達成できますか? ツリーの子の値を子からルートに追加する方法は?

最終的な目的は、関節の絶対変換を計算して最終的なポーズを取得することです。

bonePoseAbsolute[i] = bonePoseAbsolute[parentIndex] * bonePoseRelative[i];

ありがとう。

4

1 に答える 1