2015年12月3日木曜日

MakeHuman が v1.0.2 になっていた

alpha がはずれて、v1.0.2 になっていました、MakeHuman。

http://www.makehuman.org/index.php

人型のMESHを作るときは重宝します、このツール。

しばらくリアルで視力が低下して、このあたりのツールを触っていませんでしたが、ちょっとキャッチアップする意味も含めて検証してみました。

MakeHuman は Second Life 向けに、[ポーズ/アニメーション] で リグプリセットに [second_life.json] と [second_life_bones.json] があり選択できるようになっています。ボーンの数が 26 と 19 のように違います。目とかつま先の扱いですね、このボーンの数の差は。


UI は日本語に変更できます。(この手のツールはあまり日本語に頼らないほうが後々のためなのですけどね。問題があったときに英語で検索しないとだめになりがちなので。。。)

デフォルトのポーズが T ポーズじゃないので、このまま Collada エクスポートしても Second Life へのインポートできないだろうなぁ、、、と思い、やってみましたが、リグ入りだとモデル アップロード時で見事にビューワーが落ちました(泣 Viewer は 公式 3.8.6 です。

MakeHuman で作成したモデルを、一旦 Blender を経由する、となると、Collada 形式とは別に Blender exchange (mhx) 形式の選択肢が増えます。(他のフォーマットでも Blender で読めますが、あえて obj などは選ばないでしょうね)mhx にするメリットは Blender の作業を考えると、かなりありますが、今回はそこは割愛します。

また、MakeHuman のサイトには「Blender Tools」がありますが、モデルだけの Blender ヘのインポートであれば、Blender Tools アドオンが必須ではありません。モデルのインポートだけであればb、Collada であれば何もやらなくても OK、mhx であれば、Blender アドオンの「Import-Export: Import: MakeHuman(.mhx) を有効にしてください。

MakeHuman .mhx import add-on
最終的な目的が Second Life への Rigged Mesh のアップロードなら、MakeHuman では SL用のボーンとウェイトがついた Collada でエクスポートしたほうがいいでしょうね。

ただし、上述のように MakeHuman で作成したモデルは T ポーズではないので、メッシュとボーンの Rest Pose を T ポーズにする必要があります。

また、SLボーンがあるとはいえ、やはり Blender でボーンとウェイトとメッシュの調整をしなければなりません。T Pose と呼ぶ "Rest Pose" の足の位置も違うので、そのあたりの調整なしに SL にインポートすると、アニメーションで歩幅が広いポーズをとることもあります。


 とはいえ、ある程度のウェイト付けもされているのはありがたいですよね。

 Avastarがあればいろいろとできますが、Avastar がなくても Rigged Mesh として人型 Mesh を上記の図のように SL にインポートすることができます。ただし、T Pose 調整などもあるため、MakeHuman で作成した Collada 形式ファイルをそのまま SL にインポートはできないと考えていたほうがよさそうです。これら調整のため Blender などの編集ツール経由となるでしょう。

・ MakeHuman でモデリング
 ・ [ポーズ/アニメーション] - [スケルトン] で Bones:26 となる Second Life用のリグ "second_life.json" を選択します
 ・ [ファイル] - [エクスポート] で [メッシュフォーマット] は Collada (dae) を選択し、[オプション] では、[足を地面につける] で [Z up, face X] を選択し、単位は [メートル]にします

Blender で調整する場合、SL の座標軸としては X 軸が前方です。SL へインポートをうまくやるために、ここでは face X と X 軸を正面(前後)の軸として選んでください

・ Blender で T ポーズ
 ・ インポートで上記エクスポートされた dae ファイルを Blender にインポート

 ・ ボーンを選択、ポーズモードにして T のポーズをとる。若干歩幅も狭くする

 ・ この状態は T の Pose している状態で、"Rest Pose" と呼ぶお休み状態(=デフォルト)ではありません。この T Pose を Rest Pose として設定します

 1) このポーズの状態で、ボディのメッシュ オブジェクトを選び、[モディファイア] で現在の Armature モディファイアを適用します。

 2) 再度、Armature モディファイアを追加し、Object は python (MakeHuman が勝手につけたボーン オブジェクトの名前です)を選択します。

 
3) 腕がおかしくなりますが、それで OK です。


 4) ボーンを選択して Pose モードにして、[Pose] - [Apply] - [Appy Pose As Rest Pose] を選択します。


これで T Pose が Rest Pose として設定されて、ボディのメッシュも T の状態が Rest Pose になりました。

 これで、下準備完了です。

・ セカンドライフ向けに Collada エクスポート
 使用している Blender は 2.76 です。メッシュを選択して、[File] - [Export] - [Collada (Default) .dae]を選び、左サイドバーの Export COLLADA オプションで [Sl+Open Sim Rigged] プリセットを選んで、適当に名前を付けて [Export COLLADA] ボタンを押します。
・ セカンドライフにインポート
上でエクスポートした dae ファイルをアップロードのために読み込んだダイアログが以下になります。MakeHuman が作成したボーンを使った全身義体(笑)なので [ジョイントポジションを含む] はオンにしたほうがいいでしょう。

 上記の手順である程度の Rigged Mesh になりますが、やっぱり、微調整かけないとだめよね。


 まぁ、現実のところ、MakeHuman でフルボディの Rigged Mesh を作ったところで、他のアクセサリや服飾などを用意するのは大変ですから、ヘッドのみパーツにする、、、など、使いどころで検討する余地は大きいと思います。

ただ、3DCG の技術面からみると、このあたりは、非常にベーシックなところでの応用だったり、確認だったりすることが多いので、プラットフォームが変わっても、ツールが変わっても、流用できる知識かなぁ、と感じています。 

リンデンが準備している次の 3DCG のプラットフォームは Maya をツールとして推奨しているようですが、Maya ってお高いんですよね。。。