ジョイントの階層構造について


Easy3Dのジョイントは、4方向のリンクトリストになっています。
図にすると、下のようになります。



parentは親、childは子供(長男)、brotherは弟、sisterは兄(sisterだけ英語と違うけど。。)です。


ジョイントのツリーの例を、下に示します。
分かりやすいように、ジョイントの名前には、シリアル番号を付けてあります。



四角で表示されているのがジョイントです。丸印(ボーンパート)はジョイントではありません。
このツリー構造の中で、parent, child, brother, sisterの値がどうなっているかを、見てみましょう。

/////////

まず、シリアル10の、ジョイントについて見てみます。
parentには、-1が代入されています。
-1は、該当するジョイントが存在しないときに、代入されます。
図では、ボーンパートという親が存在しますが、
ボーンパートオブジェクトは、ジョイントではないので、parentの該当無しとなります。

parentに-1が代入されているジョイントは、親が存在しない、つまり、
ジョイントの中で、一番親になるジョイントである
ことになります。

childは、11がセットされています。
brother, sisterには、存在しないことを示す-1がセットされています。


/////////

シリアル11のジョイントについて見てみます。

parentには、親の10がセットされています。

childには、子供の12がセットされています。
子供は、12から15まで4つありますが、
childには、長男の12だけセットされ、次男の13などは、セットされません。

brother, sisterには、存在しないことを示す-1がセットされています。


/////////

しつこいかもしれませんが(笑)、
シリアル13のジョイントについて見てみます。

parentには、親の11がセットされます。
childは、-1です。
brotherは、弟の、14がセットされます。
sisterは、兄の、12がセットされます。


/////////

気を付けていただきたいのは、
child要素には、たくさん子供がいても、長男しかセットされないということです。
2番目以降の子供を捜す場合には、
brother要素の値を調べて行います。

それに対し、parent要素は、たくさん子供がいた場合にも、各子供にセットされています。




トップページに戻る