このエントリーをはてなブックマークに追加

Makehumanで作成したthree.jsモデルのボーンのweight/indexの修正の仕方を説明します。

まずは、Makehumanをthree.jsモデルに変換する を行います。 これで、通常に出力したthree.jsモデルが出来ます。

ただし、three.js(r67)ですと、ボーンのweight/indexが2点のみサポートのようで、それ以上のweight/indexのあるモデルの出力時に、変な値になることがあります。

Blenderをつかって2点のみなるようweight/indexを調整しても解決できるでしょう。

ここではModel Weightアプリを使って修正する方法を説明します。

Model Weightアプリを開く

jsonをロードする

右上のコントロールパネルのLoad Datasの所の一番上のcharacterの所から、ファイルを選択した、Blenderから出力したthree.jsモデルjsファイルを選択します。

blender側で、Decimal Modifierしていないと重くて読み込まないことあります。この場合、アプリをリロードしてください。 1万数千ポリゴンでも厳しいことがある。

また、読み込んだ直後の、SkinnedMeshの位置が若干おかしいことがある。 これは、ModelPosition&RotationのY-Postionで調整できます。

自動Weightする

タブをBone&Weightに切り替えて、

Re Auto-Weightの所を、makehuman secondLife-19にします。

そして、Exec Weightで実行します。

細かい調整をする

一部、上記の処理でおかしいindexの割り当てがありあす。それを手動で修正します。

複数のボーンが交差する部分(hip・rThigh/lThighや、chest・rColor/lColor当たりは)おかしくなりやすい。

まずは、各ボーンを選択します。すると、それに所属する点が表示されます。 weightが高いと、赤(1だと白)・低いと青(0だと黒)で表示されます。

基本は、おかしい部分(はなれて存在する。なめらかに繋がっていない)をクリックで選択して、index1あるいはindex2を正しく選択して、Update Indexボタンを押します。この時、シフトキーを押しながらですと複数の点を選択してまとめて、処理できます。

選択された点は紫色になります。

まったくおかしい部分は、indexおよびweightも調整して、Update Bothする必要があります。

実は、完全に正しいweightは難しくて、自分のポーズ・モーションで正しく表示されるようにするといいです。この場合、PoseEditorで出力したBVHを読み込むといいでしょう。

出力する

ExportDatas タブに切り替えて、Export As Jsonボタンを押してモデルを出力します。ダウンロードリンクが表示されますので、クリックしてダウンロードします。 これで完成です。