Adsense

2014年12月14日日曜日

MMD と SL ~ メッシュ編

この投稿は セカンドライフ技術系 Advent Calender 2014 の 12月14日向けのものになります。

正直、技術的な話題という意味ではあまりに広く、深いテーマなので何をどう書いたらいいか悩むところではありますが、MMD (MikuMikuDance) のモデルさんをセカンドライフのフルメッシュアバターとしてインポートしようとした時に、「簡単にできる」ことと「頑張ればなんとかできる」ことと「ムリです、それ」なことにわけて書いてみようかと思います。

MMD モデルとは

MikuMikuDance には標準でボカロファミリーのいくつかのモデルがついてきますが、それ以外にもユーザー作成モデルが多く公開されています。

ユーザー作成モデル 紹介サイト「みさきる!」様
http://blog.psocafe.com/

モデルは PMD もしくは PMX データと呼ばれるものですが、一般にはメタセコイアMayaBlender といった 3DCG ツールでメッシュによる造形や表情付けのモーフ設定を行います。骨格・関節に相当するボーン入れやボーンとメッシュを関連付けるウェイト付けなどもこれらのツールで行いますが、リグ用(ウェイト付け)のアドインなども存在しています。

ゼロからモデルを作るには上述のツールで作りますが、ちょっとした修正などは PMD/PMX 専用エディターの PMX Editor を使うことができます。また、MMD向けの最適化(スカートなどの調整、材質名の修正や統合、モデルとして不正な頂点の確認と削除など)を PMX Editor で行うことができます。



MMD の動画を見ていると、髪の毛やスカードの動きがとても自然に感じると思います。セカンドライフ ユーザーの観点からすれば、フレキシなプリムの動きをしながらも、そのプリムが体に貫通しないような動きです。MMD モデルではスカートや髪の毛にも「ボーン」を入れて、かつ「剛体」と呼ぶ透明な「重り」をボーンに関連付けることができます。この剛体は他の剛体と衝突判定をすることができるので、剛体同志がぶつかって貫通しなくなったり、重りの調整をすることでふわふわな感じを表現することができます。また、剛体をつなげる「ジョイント」というバネのような蝶番があって、それを調整することで撓りや復元力をつけることができます。

また、これらボーン・剛体・ジョイント・ウェイト付けの調整を自動化する PMX Editor 用のプラグインもあります。


セカンドライフの Rigged Mesh のスカートは腰、足、膝にウェイト付け(腰や足や膝の動きに追随)されていますが、MMD のスカートはスカートの入れたボーンに追随します。これがふわふわする理由です。

セカンドライフ アバター モデルとの違い

セカンドライフ メッシュアバター モデルとの違いはざっくり言うと以下です。
  • 骨格が違う。特に「手・指」の骨格はセカンドライフのモデルにはありません
  • スカートや髪のボーンがない
  • 剛体・ジョイントによる重力設定がない
  • モーフで実装されている瞬きや口の動き、眉の動きがない
メッシュデータ(およびテクスチャ)そのものはほとんどの場合そのままインポートできます。ただし、頂点に含まれているモーフ情報(Blender では ShapeKey 情報)はセカンドライフ モデルの Collada では反映されません。モーフ、ShapeKey については明日の投稿で取り上げるのでここでは割愛します。

たとえば、リグしていない(アバターとして動かない)、お人形モデルを作るのであれば、上記の違いを意識し解決する必要はほとんどありません。

上記でご紹介した PMX Editor の使い方を覚えれば(ただし、PMX Editor も奥が深いのでこれを覚えるだけでも相当時間がかかります)、ポーズをとって、スカートなどが物理演算された状態で固定することができます。それを Blender に取り込んで、オブジェクト(プリムに相当)の材質数(面の数に相当)を調整すればいいのです。(オブジェクトと材質については、モデルの違いというよりは、セカンドライフのメッシュオブジェクトの制限(1オブジェクト8材質)です)
ただ、その調整は Blender の使い方、特にオブジェクト統合・分割、材質統合・分割、テクスチャ貼り付け、などを知っている必要はあります。(この Blender の使い方を覚えるのも、それほど平坦な道ではありませんけど。。。)

スカートの物理演算が適用されポーズをとった状態(ダンス途中で停止状態)
上記とポーズ違いですが同じモデルを SL に上げた場合
MMD モデルをセカンドライフ Rigged アバターにする工程

ざっくりと以下の工程をふんで MMD モデルをアバターとしてインポートすることが可能です。

1) 改造可能、再配布可能などのモデル使用条件に注意してモデルを選ぶ
  • これを無視すると「SLユーザーって酷いよね」と言われるので、本当に気を付けてください)
2) PMX Editor でモデルの特徴を観察する
  • チュートリアルのようなものが作れないのは、モデルごとに特徴が違うからです。
  • そのモデルの特徴をみて毎回調整方法を変えています
  • 材質数、特殊ボーンの有無、モーフの数、隠れオブジェクトの有無、物理演算などなど
  • もう、これは経験でカバーするしかありません><
3) PMX Editor で調整するものは調整して、mmd_tools で Blender に取り込む
  • PMX Editor の調整は材質統合や、不必要オブジェクトの削除など
  • mmd_tools は Blender でモデルを修正するためのインポート/エクスポートツールです
  • セカンドライフのことは考えていません。あくまで MMD-Blender のためのアドオンです。
4) Avastar を使って、セカンドライフ用に MMD モデルの修正を繰り返す
  • 1オブジェクト8材質に収まるように、MMD モデルを分割する
  • 法線の向きをそろえる(難しい話なので割愛します。他の私の投稿などを参照してください)
  • なお、Avastar は必須ではありませんが、私はこの便利アドオンで相当効率化していますので、使わない場合についての知識はほとんどありません~アドバイスもできません><
5) モーフに対応するオブジェクトを用意して材質名を変えて統合する
6) MMD モデルのボーンに合わせて、セカンドライフのボーンを修正
  • こちら参照。http://snumaw.blogspot.jp/2013/09/secondlife.html 
  • MMD モデルは腰の位置が高く、膝下が長い「アニメ体型」なので、セカンドライフのシェイプをシェイプスライダーを使って調整する範疇を超えている場合がほとんどです。よって、特殊なボーン(関節の位置)を持つ Joint 入り Rigged メッシュとして上げる必要があるのです
  • 最近の MMD モデルは上半身2ボーンという準標準ボーンが入っていますが、もし入っていない場合は、セカンドライフ ボーンの chest に対応するボーンがありません。上半身2ボーンがなくてもインポートできますが、ダンスモーションで上半身2ボーン前提のものが少なくありません。また、セカンドライフで販売されているモーションは chest 前提ですから、上半身2ボーンと chest を関連付けたほうがより自然なダンスになります。
    上半身2ボーンがない場合は PMX Editor とアドオンで MMD モデルに上半身2ボーンを追加することができます。ウェイトも自動調整されます。

    そぼろさん作成の準標準ボーン追加プラグイン
7) セカンドライフへアップロード
  • モーフ対応(透明・不透明切り替え)の箇所は Joint なしで(理由は明日)
  • モーフ対応なしは Joint 付きでアップロード
  • PNGやTGAなどの「アルファチャンネル(透過)サポート」の画像は描画順番がおかしく透けてしまうことが多いです。アップして確認してJPEG などに画像を変換し入れ替えることが多いです
  • アップしてはじめて「法線」が裏返っていて表裏逆になっていることに気づくことがあります。裏地を作るか、法線を逆転させるといった作業が発生するので、Blender で見た目に判断されずに法線の向きの確認をしたほうがいいです。

    Making liner - Normals Inside (英語ブログ) 
8) モーフ対応スクリプトを入れて、HUD を作成する

難易度分けしてみる

正直、、、簡単じゃないです。簡単じゃない理由は覚えることが多いからです。
  • PMX Editor と MMD モデルの特徴(SL関係なしにMMD モデルの改造とかして習得)
  • Blender の使い方 (未だお勉強中)
  • mmd_tools / Avastar といった Blender アドオン
  • 表情スクリプトと HUD 作成 (LSLの知識と実装)
とはいえ、できることとできないことをまとめてみると以下。

比較的簡単にできること
  • Blender への MMD モデルのインポート (mmd_tools のおかげです)
  • ボディのウェイト付け (Blenderの仕組みを理解することで、MMD モデルがもっている元々のウェイトを流用することができます。ただし、標準ボーン対応部分のみです。Blender の操作とMMDモデル構造の知識とSLのボーン構造の知識が必要ですが、覚えれば簡単。そして超時間短縮。)
頑張るところ
  • 1オブジェクト8材質制限にあわせて、MMD モデルを分割 (Blender の操作知識必要)
  • モーフ対応のために、対応するオブジェクトを作るところ (やり方さえわかれば簡単)
  • セカンドライフ向けにエクスポートで使うセカンドライフ標準ボーン関節の位置を変更すること(仕組みと作業を覚えたら比較的容易になります)
  • スカートのウェイト付け (100%手作業で貴方のオリジナルになります。よってウェイト職人的な作業の繰り返しとなります。)
  • LSL(スクリプト) モーフ対応するならスクリプト必須です。
それ無理、今は無理
  • モーフ実装 (モーフ対応で擬似的にモーフ「らしき」ものを実装)
  • 物理演算実装 (スカートなどは、もう、手作業で腰や足にウェイト付けするしかありません)

結局最後はモチベーションと気長にやることが肝要かも

ここまで読まれたら「めんどくさいなぁ~」と思うでしょう。はい、その通りです。正直、かなり、めんどうな作業です。

私も途中挫折したり、MMD しか触らなかったり、Blender しか触らなかったり、LSL しか触らない、何もやりたくない、、、といった時間が数か月単位で繰り返してます。初めて MMD モデルのインポートして「コレジャナイ」状態から、Tda 式ミクのフルメッシュアバター+表情付きに至るまで2年かかりました><  LSL の知識はその前からあったとはいえ、それ含めると3年とか4年とかのスパンです、、、。

なので、いきなり Rigged フルメッシュ アバターを作るよりも、まずはお人形から作っていくことをお勧めします。そこで PMX Editor と MMD モデルの特徴を覚えて、Blender の基本操作を覚えて、 SL にアップしてみることです。その時、SL へのアップの設定次第でランドインパクトの数値が変わることもわかります。造形を崩さずに、どの程度調整すればランドインパクトを抑えることができるか、、、など、Rigged をやる前に体験すべきことがあると思います。

私の場合は、お人形はどんどん作っていって、モーフは無理~とあきらめていたんです。だから、Rigged によるアバターを作ることは、一度表情なしのものを作った後していませんでした。

でも、スノラビさんの Nea ちゃんみて感動して、もう一度、モーフ作り、、、というか、モーフらしきものをセカンドライフで作るモチベーションが出てきて、 お人形でまばたき、クチパクを実装しました。

そこから、購入してから1年くらい放置していた Avastar でボーン修正を覚えて、やっとフルメッシュアバターを作ることができました。

だって、ミクちゃんやグミちゃんで踊ると楽しいですからw