ポリゴンメッシュでキャラクタを作成(MMD編)
前回作成したロボットと、前々回までに作成したドラゴンをMMD(MikuMikuDance)に持っていきましょう。
今回は、マーケットプレイスで公開されている「BoneUtil」と「MMD Exporter」を使いますので、Shade 3D Standard/Professionalのみの動作となります。
また、MMDはWindows環境のみで動作します。
Shade 3DでMMDの形式(PMDファイル)としてエクスポートするのは、マーケットプレイスの「MMD Exporter」で行うことにします。
「MMD Exporter」プラグインは、Shade 3Dで作成したキャラクタをMMDのPMD形式(形状情報を持つ)とVMD形式(モーション情報を持つ)でエクスポートする機能があります。
先にMMD付属のモーションで確認しやすい人体から。
MMD向けに人体を作成
MMD付属の標準モデルはA-Poseになってますので、手を水平から若干下ろしたポーズでボーンを入れるようにします。
A-Poseのロボットとして「robot_APose_00.shd」を用意しています。腕は水平より35度下ろすようにしました。
ここにMMD用のボーンを入れていきましょう。
MMDのPMD形式の場合は、「ボーン編」のルールに加えて、以下を守るようにします。
- テクスチャを与える場合は、UVを1レイヤだけ使用。
- 表面材質のマッピングレイヤで透過させるピクセルがある場合は、テクスチャのアルファを0にすることで対応。
- ボーン名の長さは19バイトまで。モーションをVMDで出力する必要がある場合は14バイトまで。
特にボーン名の長さ制限に気をつける必要があります。これはPMD/VMDファイルフォーマットで、ボーン名の格納サイズが決まっているため。
なお、将来的にPMX形式に対応すると、このボーン名の長さ制限はなくなりますので今後のMMD Exporterのバージョンアップに期待いただければ。
MMDの標準モデル用のボーンを入れる (BoneUtilプラグインが必要です)
MMDに付属している形状は標準モデルとして、同じボーン構造やボーン名が与えられています。
手作業でボーンを用意してもよいのですが手間がかかりますので、「BoneUtil」プラグインの機能でボーン構造を作ってしまうことにします。
ブラウザの「情報」をクリックして表示されるコンテキストメニューより「人体リグの制御点を初期化」を選択します。
表示されるダイアログボックスで、ロボットの身長は2メートルであるので、「身長」に2000mmを指定、
「ポーズ」で「A-Pose(30度)」を指定。腕を下ろしている場合は、A-Poseの30度か45度の近いほうを指定してください。
「ミラーリング」チェックボックスをOnにして、OKボタンを押します。
RigPointsパート内に、ポーズ用の球が配置されました。
配置した直後は各関節の位置からずれた状態であることが多いので、オブジェクトモードで球を移動させてポリゴンメッシュの形状に合うように調整します。
ミラーリングをOnにしてますので、左腕と左足の球だけ調整すれば右腕と右足は自動的に再配置されます。
以下のように調整しました。
次に、ブラウザの「情報」をクリックして表示されるコンテキストメニューより「人体ボーンの生成」を選択します。
表示されるダイアログボックスで「ボーンjの種類でMMD(en)」を選択してOKボタンを押します。
MMDのためのボーン名として日本語(jp)と英語(en)のどちらかを選べますが、今回は英語を選びました。これはどちらを選択してもいいです。
MMD Exporterは、エクスポート時にMMD標準モデル向けのボーン名と構造の場合は、出力するPMDファイル内に自動的に日本語と対応する英語名が割り当てられます。
以降は「RigPoints」パートは不要になるので削除します。
次に、ブラウザの「情報」をクリックして表示されるコンテキストメニューより「ボーンの軸方向」を選択して軸の方向をボーンの向きに統一。
「ボーンのリサイズ」でボーンの大きさを調整し、以下のようになりました。
後は、指や目などのボーンをオブジェクトモードで移動させて、細かいボーン位置を調整します(ボーンを回転させてはいけません、移動のみで調整します)。
この状態で「robot_APose_01.shd」として保存しました。
スキンの指定
スキンについては「スキン編」を参照してください。
ボーンさえ割り当てられれば、後は同じ要領で対処できます。
robot_APose_02.shdにスキン割り当て後の形状を保存しました。
PMDファイルをエクスポート (MMD Exporterプラグインが必要です)
メインメニューの「ファイル」-「エクスポート」-「MMD Model (PMD)」を選択して、PMDファイルをエクスポートします。
エクスポート時のダイアログボックスでは、デフォルト値のままで使用しました。
「ボーン名の自動変換」「IK自動割り当て」チェックボックスをOnにすることで、標準モデルとしてボーンを作ったキャラクタの場合にボーン名の置き換えが行われます。
また、両足に自動的にIKが追加されます。
「robot.pmd」としてエクスポートしました。
後は、MMD上の操作になります。
MMDにキャラクタデータを読み込み
ここでは、MikuMikuDance Ver.9.1.0で確認しました。
モデル操作の「読込」ボタンを押して、Shade 3Dでエクスポートしたrobot.pmdファイルを指定します。
無事、読み込めました。
マテリアルについては、Shade 3Dの表面材質の拡散反射/光沢1/サイズ/透明/環境光と、マッピングレイヤの拡散反射テクスチャを参照します。
MMDではトゥーン表現が主体ですので、デフォルトでは若干環境光が強めになっています。
このrobotは標準モデルのボーン構造を与えてますので、MMD付属の「サンプル(きしめん).pmm」のモーションをVMDファイルとして保存後、このrobotに割り当てるとそのままアニメーションされます。
人体モデル以外でもMMDにキャラクタを渡すことができます。
次に、「モーション編」で作成したドラゴンをモーション付きで渡してみましょう。
非人体キャラクタをMMDに渡す
「dragon_modeling_motion_walk.shd」として、「モーション編」で作成したドラゴンの歩行シーンを用意しています。
ただ、ボーン名が14バイトを超えるものがありますのでこの部分を加工する必要があります(VMD出力時の制限)。
下記の場合は、「right_leg_front_2」で17バイトあります。
PMDとしては19バイト以内のボーン名のため出力できますが、VMDを出力する際に14バイトを超えるため正しく出力できなくなります。
そこで、「left」を「L」、「right」を「R」としてボーン名を置き換えてみましょう。
ボーン名の置き換え
ブラウザの「検索」ボタンを押すと、検索ウィンドウが表示されます。
ここで以下の操作を行い、ボーン名の「left」の箇所を「L」に置き換えます。
- ブラウザで「bone_root」を選択
- 検索名に「left」と入力
- 対象で「ジョイント」-「ボーン」を選択
- 「検索」ボタンを押す
- リストにleft_xxx のボーン名が一覧されたのを確認して、「全て選択」ボタンを押す
- 置換名に「L」と入力
- 「置換」ボタンを押す
同様に、ボーン名の「right」を「R」に置き換えてください。
これで、ボーン名は14バイト以内に収まるようになりました。
このファイルを「dragon_modeling_motion_walk2.shd」として保存しました。
PMDファイルをエクスポート (MMD Exporterプラグインが必要です)
メインメニューの「ファイル」-「エクスポート」-「MMD Model (PMD)」を選択して、PMDファイルをエクスポートします。
このときに、
「ボーン名の自動変換」「IK自動割り当て」チェックボックスはOffにします。これは、このドラゴンが人体の標準モデルではないためです。
「dragon.pmd」としてエクスポートしました。
VMDファイルをエクスポート (MMD Exporterプラグインが必要です)
「dragon_modeling_motion_walk2.shd」はモーションデータも持っていますので、モーションデータをVMDとして出力しましょう。
メインメニューの「ファイル」-「エクスポート」-「MMD Motion (VMD)」を選択して、VMDファイルをエクスポートします。
このときに、「ボーン名の自動変換」チェックボックスはOffにします。
「dragon.vmd」としてエクスポートしました。
後は、MMD上の操作になります。
MMDで非人体のキャラクタデータを読み込み
形状データの「dragon.pmd」と、モーションデータの「dragon.vmd」の2つのファイルを作成しましたので、これをMMDに読み込んでドラゴンを動かしてみます。
モデル操作の「読込」ボタンよりdragon.pmdを指定してシーンに読み込みます。
ボーン・フレーム操作のキーフレーム表示部では、「その他」のところに各ボーンが列挙されています。
メインメニューの「ファイル」-「モーションデータ読込」でdragon.vmdを指定します。
これで、ボーン・フレーム操作のキーフレーム表示部でキーフレームが赤く打たれているのが確認できます。
再生枠の「くり返し」チェックボックスをOnにして「再生」ボタンを押すと、ドラゴンが歩きだしました。
ボーン名とボーン構造を同じにすることで、非人体のモデルでも複数のキャラクタ間で同一のvmdを使用する、ということもできます。
この仕様の便利なところは、キャラクタとモーションを分けて管理でき、後で入れ替えることができる、という点になりますね。
今回は、
- MMDにpmdファイルとしてキャラクタを渡し、MMD上でモーションをつける
- Shade 3Dでpmdファイルとvmdファイルを作成し、MMD上でモーションを再生する
2つの処理を行ってみました。
これらのデータのダウンロードはこちら。
読んでいて気になった方もいるかと思いますが、今までの記事では表面材質やUVを割り当てていませんでした。
これはいくつか理由がありまして、テクスチャを入れるとサンプルの添付ファイルが大きくなってしまうというのと
UVや表面材質については別途じっくり説明したほうがよさそうだったからです。
公開しているプラグインの宣伝もかねて、、、おっと、ここまでにしておきましょう。
ということで、次回、いよいよUV+テクスチャについての説明に入ります。