連載
» 2010年06月25日 00時00分 公開

“BREW”アプリケーション開発入門(10):MascotCapsuleによるボーンアニメーション (1/3)

MascotCapsuleシリーズの強み、3Dモデルの「ボーンアニメーション」。最終回はボーンアニメーションの概要から実装までを解説する。

[末永貴一(エイチアイ),@IT MONOist]

 前回MascotCapsule® eruption(以下、eruption)」による簡単な3Dオブジェクトの表示を行いました。eruptionのような3Dミドルウェアを利用することで、OpenGL ESのようなプリミティブなAPIのみの実装に比べて応用が容易であることが何となく理解できたのではないかと思います。

 今回はMascotCapsuleシリーズの強みでもある、組み込み環境でも軽量な「ボーンアニメーション」が可能な部分や、よりeruptionを活用していただくための情報についてご紹介したいと思います。

ボーンアニメーションとは?

 3Dグラフィックスのアニメーションにはさまざまな技術要素がありますが、人や動物のように複雑な形状を持つオブジェクトが、四肢を動かしてアニメーションする実装を行うためには、高度な技術要素を実装する必要があります。

 これまで描画してきた立方体やティーポットはオブジェクトの形状が固定であり、可動部分がない物体でした。このためアニメーションも単純な座標変換の実装のみで実現でき、計算負荷も少なく済んでいます。例えば、リアルタイムレンダリングを行う3Dゲームの中で、レースゲームに高いクオリティのグラフィックスが多いのは、車や背景というオブジェクト形状に可動部分が少なく、メインの表示対象である車のクオリティに計算リソースを多く回すことができるためです。

 それに対して、可動部分の多い表示物の場合(例えば、人や動物など)、可動領域の計算に多くの負荷が掛かるため、グラフィックスのクオリティが犠牲になってしまうことがあります。

レースゲームには可動領域が少ないが、キャラクタメインのゲームには可動部分が多い 図1 レースゲームには可動領域が少ないが、キャラクタメインのゲームには可動部分が多い。同一環境でのリアルタイムレンダリングの表現力に違いが出る

 この人などのキャラクタにリアルな動きのある表現を実装しようとした場合、基本となるのが「ボーン」という要素です。3Dグラフィックスにおいて、ボーンとは文字通り“骨”に相当し、リアルタイムレンダリングにおいて、キャラクタアニメーションの基盤となるものです。

 ボーンは、3Dオブジェクトの可動領域をつかさどるものであり、ボーンとボーンの接合部分は“関節”の役割を果たします。このためボーンの数が多ければその分可動領域が多くなり、複雑な動きを実現できますが、その分、計算負荷が高くなってしまいます。

ボーンと可動部分 図2 ボーンと可動部分

 描画時にボーンは表示されることはなく、あくまでアニメーション付けをするための論理的な要素にすぎません。実際に動くのは目に見えるポリゴンの集合体である「メッシュ」です。この場合、論理的にボーンを覆う皮膚のような形でメッシュが存在するので「スキンメッシュ」と呼ばれます。

スキンメッシュ 図3 スキンメッシュ

 実際にはボーンがアニメーションするというより、スキンメッシュがアニメーションするため「スキンメッシュアニメーション」といった方が正確かもしれませんが、ここでは“ボーンアニメーション”とします。

 ボーンアニメーションを実現するためにはさまざまな技術要素が必要になります。このため、これをOpenGL ESのみで実装しようとした場合、かなりのコストを掛けることになります。例えば、3Dのアニメーションは座標変換を基本としたものですが、同様にボーンの移動によるアニメーションも座標変換のうえに成り立っています。また、個々のボーンは親子関係を作ることができ、各ボーンを連動させて動かすことにより、自然な動きが実現できます。ただし、連動していても個々のボーンの動きは微妙に影響範囲が異なりますし、表示部分のメッシュが動きを表現するものとして自然である必要がありますので、関節の可動部分のメッシュがほかのメッシュと連動するような計算も考慮する必要があります。

 このように、ボーンアニメーションには高度な計算実装が必要であり、その描画には多くの計算リソースを必要とするため、これを組み込み環境でリアルタイムに高速に描画でき、簡易に利用できるところにMascotCapsuleシリーズの強みがあります。eruptionでは利用の簡易さはそのままに、さらに表現力が向上しています。

アニメーションデータの作成

 eruptionでボーンアニメーションを実現するためには、3Dモデリングツールを使用します。3Dモデルデータ作成の際に、ボーンのアニメーション情報を作成(モーション付け)し、プログラミング部分で単純にそのデータを呼び出すだけでボーンアニメーションが実現可能です。

 モデルデータの作成については、第8回「MascotCapsuleによる3Dグラフィックスプログラミング」で紹介した「3ds Max」などのモデリングツールで作成したデータを「McmMca Exporter」で出力します。この際に出力されるのが、前回立方体とティーポットで利用した3Dモデルデータである「.mcm」と、アニメーションのデータである「.mca」です。さらに、3Dモデルに張り付けるテクスチャデータが必要な場合には、「Photoshop」などの2D系ツールで作成したデータをMCT plug-inで出力します。この際、出力されるデータが「.mct」です。

モデリングツール上でモーション付けを行う 図4 モデリングツール上でモーション付けを行う

 今回は、以下のキャラクタのデータを利用して、プログラミングを行いたいと思います。

本稿で利用するキャラクタ 図5 本稿で利用するキャラクタ

 キャラクタの.mcm、.mca、.mctの各ファイルは以下からダウンロードしてください。


       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.