動作の制御

動作の制御 #

MMDAgent-EX の動作の制御は MikuMikuDance の仕様をベースとして拡張したものになっています。ここでは、動作制御の基本的な仕組みを説明します。

動作制御の仕組み #

動く3Dモデルは、頂点・面・材質・テクスチャといった見た目の情報だけでなく、それらを動かすための「ボーン」と「モーフ」がモデル内で定義されており、ボーンの位置・回転やモーフの度合いを動かすことで、様々な動作を行います。このボーン・モーフを組み合わせた一連の動きのパターンを「モーション」と呼びます。

用途やツールによって呼び名はさまざまで、もっと多様な情報を持つ3Dモデルもありますが、ここでは MikuMikuDance に倣い「ボーン」と「モーフ」のみを扱います。

MMDAgent-EX では、表示中のモデルにモーションファイル(.vmd)を指定することでモーションの再生を開始します。あらかじめ小単位のモーションを個別の .vmd ファイルに保存しておき、会話中に状況に応じてそのモーションファイルを逐次再生することで、会話しながらのリアルタイムなモーション再生・制御が行えます。複数モーションの重ね合わせやループ再生も可能で、リアルタイムかつ柔軟な制御が行えます。

以下、MMDAgent-EX における定義と扱いについて簡単に説明します。

ボーンとは #

ボーンはモデル全体や一部を移動・回転させるための操作点です。人型のモデルだと、頭や腕、脚や指といった可動箇所を模擬するため数十個のボーンが定義されます。各ボーンに対して追従動作すべき表示点(頂点・面)が定義されており、ボーンを移動・回転させることで関連付けられたパーツが動く仕組みになっています。

ボーンは階層構造がすることができます。あるボーンに「親ボーン」が指定されている場合、親ボーンの動きは小ボーンへ伝搬されます。この階層構造は手足のような多関節の動きを再現するために必要な仕組みです。

ボーンの動きは「キーフレームベース」で定義されます。毎フレームではなく、特定の時間(キーフレーム)における位置・回転量を定義し、動作時にはキーフレームの間のフレームはその両端の値から自動的に補間計算されて再生されます。

モーフとは #

モーフは「変形」を意味する言葉で、3Dモデルにおいてはパーツの変形パターンを定義するものです。初期状態と変形後の状態を定義し、実行時にはその「変化量」を 0.0から 1.0 の値で与えることで、一方から他方へ変形していく様子を自動的に生成します。主に表情の変化に用いられるほか、部位の変形等に用いられます。対話用の人型3Dモデルでは通常数十種類の表情に対応するモーフが定義されています。複数のモーフを組み合わせて動作させることで複雑な表情や表現を作り出します。

1つのモーフは、対象のモデルパラメータ集合とそれらの変形後の値で構成されます。頂点を移動させてモデルを変化させる「頂点モーフ」が基本ですが、ボーンの位置を移動させる「ボーンモーフ」、テクスチャ座標を移動してテクスチャを変化させる「UVモーフ」、透過度や色等の材質情報を変更させる「材質モーフ」等も存在します。さらに、使いやすさのために複数のモーフを束ねて1つのパラメータで動作できるようにする「グループモーフ」もあります。

モーフはボーンと同じくキーフレームベースで動作定義します。キーフレームごとにモーフの変化量(0.0から1.0)を指定します。実行時は、キーフレーム間では自動的に補間計算されます。

モーションの作成 #

MikuMikuDance 等の MMD ツールを使ってください。

異なるモデルに適用する際の注意点 #

MikuMikuDance のモーション (.vmd) は、対象とするボーン・モーフの「名前」と、それぞれのキーフレーム集合が保存されています。

.vmd を再生するとき、その .vmd が扱う対象とするボーン・モーフ名と同じ名前のものが対象モデルにあるかがチェックされ、名前が完全一致するボーン・モーフについてのみ再生が行われます。モデルにないボーン・モーフの動作は無視されるので注意してください。

comments powered by Disqus