2018/04/08アニメーション基本Irrlichtにはスケルタルアニメーションの機能が実装されている。IAnimatedMeshSceneNodeにより、スケルタルアニメーション(ボーン埋設によるメッシュの変形操作)を簡単に実現できる。Irrlichtはウェイトマップの処理をソフトウェア(CPU)で行なっており、頂点シェーダ等を使っていない。このため、あまりにも頂点の多いメッシュをスケルタルアニメーションで動かすと、重たくなる可能性が高い。基本的になるべくポリゴン数を増やさず、テクスチャで表現力を向上させる、いわゆるローポリモデリングが適している。ボーンの個別制御IAnimatedMeshSceneNodeにおいて、特定のボーンを直接制御したい場合、下記のようにする。この場合、"MyBone"の角度を(0,45,0)にする。0));このような操作をしたい場合、setJointModeは必須である。Irrlichtにおいては、描画処理とアニメーション処理を独立して呼び出せないため、setJointModeをしないと描画処理の際にアニメーション処理によって自動的にボーンの位置が上書きされてしまう。メッシュ間でのモーションの流用Xファイル等のメッシュには、スケルタルアニメーションの情報を埋め込むことができる。人物などのアニメーションは通常、このスケルタルアニメーションによって表現する。スケルタルアニメーションは、原則として動かしたいメッシュ毎につけていく必要がある。一つのメッシュには一つの時系列しか埋め込むことが出来ないため、複数の動作を持たせたい場合には、異なる範囲のフレーム番号にそれぞれ埋め込む必要がある。ここで、動作毎にファイルを分割できて、それを任意のメッシュに適用できれば、大幅な労力削減になるため、実際の開発では何らかの手段で各動作を対象メッシュから分離して、メッシュ間で流用できるようにすることが多い。これをIrrlichtにおいて実現する方法を示す。Irrlichtにおいては、ISkinnedMesh::useAnimationFromという関数があり、これを使って実現可能なように見えるが、メッシュ内から自分でデータを読み出して、他のメッシュに転写してしまったほうが柔軟性が高い。これを実現するため、下記のSkinnedMeshAnimatorクラスを作成した。ように、ボーン名に勝手に接頭語を付けられてしまう。このため、getBoneNameBody/findBoneにより、接頭語を削った部分のみで名前を照合する。他のツールを使っている場合は適したものに修正すること。}}使い方は下記の通り。内の指定したフレームにおける各ボーンのrotationをpTarget内の同名ボーンにコピーする。同名ボーンが無いボーンについては何もしない。側を「上半身のみ」、「下半身のみ」で作って順次applyしていくことで、上半身と下半身に個別の動作をさせることができる。2018管理者宛メール。