Makehumanクロス作成ツール ver.13.4.0

Masa: http://masatoshisoh.sitemix.jp/ 2017/05/18


Makehumanクロス作成ツールは、Open Source で公開されている MakeHuman 1.0.11.1.1(総称クロスとします)を Shade3D 上で作る為のプラグインです。但し、本プラグインは、本家の MakeHuman に対してかなり拡張されていていますので、むしろ私提供の Make Human プラグイン用のツールといえます。また、本家のクロスファイルの拡張子は、mhpxy に変わってますが、本プラグインは、拡張機能を付加するために旧形式の mhclo です。(本家の MakeHuman は、正しいmhcloファイルを検出すると、自動で、mhpxyファイルを生成するようです。)
本プラグインでの拡張部は、クロスライブラリにオリジナルのジョイント構造を付加できる点と、形状に対するマテリアルにShade3D 表面材質を直接指定出来る点です。
プラグインでは、作成だけでなく、その後のチューニング機能も内包してますので、かなりのところまで作り込めます。
尚、この説明書の例は、全て、 Windows10(64bit) 上の Shade3d ver.16(16.1.0) 上のものです。他の OS Shade3D バージョンでは、表示が異なる場合があります。

目次

  1. インストール方法
  2. 動作環境
  3. 使用方法
  4. 実行例
  5. クロスの仕様
  6. その他の事項
  7. ライセンス
  8. 改定履歴

インストール方法

Shade名は、バージョンまで含めた名前のフォルダで、Shade3Dによって自動的に作られます。
Shade3Dを起動して、「表示」メニューおよびブラウザの情報メニューの中にMakehuman1 クロス作成ツールが見つかれば、インストールは成功です。

:しかしながら、本プラグインがちゃんと機能するには、予めMakeHuman(1.1.1)または、MakeHuman(1.0.1版)プラグインをインストールして、その設定MakeHuman本体へのパスを登録しておく必要があります。

動作環境

使用方法

基本的手順

表示メニューのMakehuman クロス作成ツール のメニューをクリックすると以下のようなウインドウが現れます。

一番上のポップアップメニューがこのプラグインのメインメニューです。

ポップアップメニューの一番上でクロスライブラリを新規作成します。
それ以外は、既に出来上がったクロスへの補正用です。
クロスライブラリーは、クロスを構成するファイル一式です。但しその中の ...mhclo ファイルが、基本部分で、その他の全てのデータは、このファイルから参照されます。二番目以降のメニューは、この ...mhclo ファイルだけを編集します。

クロスを作る基本の手順は、以下の通りです。
  1. MakeHumanプラグインを使ってクロスを着せる体型のキャラクター形状(ヘルパー形状を含む)を用意します。
  2. キャラクター形状に着せるクロス用形状を用意します。形状は、1つにまとめます。形状名をクロス名にします。この形状には、必要な表面材質および必要なら新規に追加したジョイントも含めたスキンを掛けておきます。
  3. Makehuman クロス作成ツールを開き、対象のクロスに最もあう基準形状(ヘルパー形状)をメニューから選びます。必要に応じてウインドウの4行目以降を設定します。
  4. 処理新規作成にして、その右の実行ボタンを押します。保存ダイアログが開きますので、保存したい場所(通常は、ドキュメント内の makehuman/v1/data 内の適切なクロスフォルダーを指定します。)を指定して名前は、クロス名にしてOKを押します。これでクロスが作成されます。クロス名の形状が無かったり、複数あると中断します。同時に、Pathボタンの右にクロスのファイル名がパスを含めて表示され、ボタンが有効になります。
  5. 場合によっては、クロスに補正が必要な場合があります。その場合は、処理の中から補正する処理を選んで再実行します。この場合、2行目の基準形状検索範囲の指定を確実に行ってください。再実行すると、既存の .mhjcloファイルが更新されます。
  6. もし、リグを付加してクロスを作った場合、フォルダー内の .rig ファイルをメモ帳等で開いて、locationsbones の中身を手動で修正します。これは、現時点では、なかなか適切な値にはなりません。

機能一覧

以下に処理で選べる機能に付いて説明します。
  1. 新規作成
    新規にクロスを作ります。本プラグインの基本機能です。基本的にファイルダイアログで指定したクロスと同じ名前の形状から、クロスライブラリを作ります。
  2. 選択頂点再計算
    既存のクロスに対して、クロス用の形状の選択されている頂点の定義を再設定します。クロスの各頂点は、の1~3個の頂点の選択とそれぞれの重みの配分とそこからの移動量(オフセット)で定義されます。ここでは、それを全て再計算します。これは、自動計算では気に入らない部分の修正とヘルパー形状の変更に利用します。
  3. オフセット補正
    既存のクロスの選択されている頂点の換算式の内、オフセットのみ再計算します。これは、一度作ったクロスの頂点の位置を少しだけ動かしたい場合に使います。
  4. 配分を同一にする
    既存のクロスの選択されている複数の頂点の換算式の配分値を同一にして、オフセット値を再設定します。この機能の必要性は、例えばボタンのように、その部分の形を固定したい場合に、利用します。
    この処理を選ぶと以下のように登録というボタンが情報ボタンの右に現れます。

    この処理の使い方については、実行例を参考にしてください。
  5. 頂点番号コメントを削除
    これは、新規作成時に頂点番号コメント出力をチェックして作ったクロスライブラリからコメントを削除するだけの処理です。

各設定一覧

以下に実行時の設定項目付いて説明します。

実行例

ここでは、添付ファイルの one_piece.shd から、ワンピースのクロスライブラリを作り上げる例で、説明します。

新規作成

添付ファイルの sample フォルダーの one_piece.shd を Shade3D で開きます。
MakeHuman1 クロス作成ツールを開きます。新規作成を選び、基準形状を helper-tights にします。
その他の設定を、以下の図の様に設定します。

実行を押します。ファイルダイアログが開きますので、フォルダー を、ドキュメント -> makehuman -> data -> cloth -> one_piece 、ファイル名を one_piece.mhclo にします。問題が無ければ、完了のダイアログが現れますので、OKを押すとワンピースのクロスライブラリが出来ます。

スカート部のヘルパー形状の変更

この状態でも、クロス自体は、機能します。ただ、スカート部は、脚を基準に作られる設定になっているので、モーフ時の変形は美しいとはいえません。それで選択頂点再計算でスカート部を再計算します。下図のようにスカート部分を選択します。 選択には、UV図面を利用すると便利です。

基準形状を helper-skirt に切り替え、検索範囲を、制限無しにします。実行ボタンを押すと、メッセージウインドウに修正した内容を表示しながら、.mhclo ファイルが修正されます。
情報ボタンの利用例として、おへその辺りの頂点を選択して、情報ボタンを押すと、メッセージウインドウに以下のように内容が表示され、さらにhelper-skirt 形状のおへその辺りの頂点が選択されているのが分かります。

メッセージウインドウのヘルパー形状の部分に!マークが付いているのは、現在指定されているヘルパー形状と会わないという意味です。

これで、クロスとしては十分ですが、あと少し微調整します。

バラの胸飾りの形の固定

この時点でクロスとしては十分ですが、モーフ時に胸のバラの胸飾りの形が崩れない様にします。まず、配分を同一にするに切り替えます。まず、配分の基準頂点を登録します。 Shade3D を編集モード、頂点編集モードにして、バラの根元の頂点を選択します。方法は、UV画面で、端の三角形の形の一番先の部分を選択するようにすると楽に選択でします。

基準形状が、 helper-tights になっていることを確認します。なってなければ、変更します。 ここで、登録ボタンを押します。うまくいけば、メッセージウインドウに、情報ボタンを押したのと同様な内容が表示されます。問題があれば、エラーメッセージが表示されます。基準形状を確認してください。うまく登録されたら、バラ全体を選択します。これも、UV画面で選択すれば楽です。 実行ボタンを押します。すると、殆ど、選択頂点再計算と同じように再計算が行われます。

追加の表面材質の登録

今回は、もう一つのワンピースの柄を登録してみます。 ワンピースが登録されている、ディレクトリの中の materials フォルダーの中に、添付ファイルの、sample フォルダー内の flower_mat.thumb bard_mat.thumb をコピーします。 さらに pne_piece.shd の中にある、マスターサーフェス内の、bard_mat を表面材質ウインドウから、このフォルダー内に保存します。以上のことを実行すると、makehuman プラグインで、いったんワンピースのクロスを生成した後、マテリアルタブを開くと以下のようなメニューが現れ、好みの柄を選べるようになります。 この、...thumbというファイルは、拡張子だけ変更したPNG画像ファイルその物です。これが無いとメニューには現れません。

以上でワンピースクロスの完成です。後から、好みの表面材質とそのthumbファイルを追加コピーすれば、いくつでも柄を登録出来ます。

クロスの仕様

クロスライブラリは、複数のファイルで構成されます。ただ、名前.mhcloというテキストファイルが要のデータです。そして、同じ名前.thumbというファイルが、メニューの中に現れるそのクロスのメニュー画像となります。それ以外に利用されるファイルは、全て .mhclo ファイルの中から明示的に指定されます。
ただ、マテリアル関係は、 .mhmat ファイルが、.mhclo から参照され、 .mhmat ファイルからテクスチャー画像が、参照される構造になっています。Shadeの表面材質を利用する場合は、 .shdsfc ファイルが参照されテクスチャー画像は存在しません。 また、ジョイント構造は、.rigというファイルで定義されます。ここでは本プラグインで拡張された、 .mhclo と、.rigファイルに付いて説明します。
まず、 .mhclo をテキストエディタで開いて眺めてください。なるほどと思えるはずです。
  1. 作られる形状の頂点
    指定することで作られる形状の各頂点は、 MakeHuman の base.npz(人体モデルとヘルパー形状を一体にしたもの) の頂点の1~3個とその各配分係数および、オフセットとなるベクトルで指定されます。つまり、各頂点の位置ベクトルを v0 v1 v1 配分係数を f0 f1 f2 (f0+f1+f2==1.0)、オフセットベクトルを ov とすると、その 頂点の位置は、 v0*f0+v1*f1+v2*f2+ov となるわけです。こういう仕様にすることで、元の人体が変形しても、それに追従して、クロスも追従して変形出来ることになり、スキンも計算で与えることが出来ます。各頂点毎のこのデータが、.mhclo ファイルの中の verts 0 と書かれた行以降に頂点番号0から1行、1頂点で、記述されています。
    最初の三個の整数が、 MakeHuman の側の頂点番号で、次の三つの実数が、各頂点毎の配分係数です。ここが、0 ならその点は、無視されます。そして、最後の三つの実数が、上記のオフセットベクトルとなります。
  2. 基本仕様
    • # で始まる行
      コメント欄です。基本的には意味を持ちません。
    • uuid で始まる行
      クロス uuid を定義です。このコードでクロスを一義的に定義しています。ただ、現時点のプラグインでは利用してません。
    • basemesh で始まる行
      参照先の形状の指定です。Makehumanの版確認用と思います。
    • name で始まる行
      クロス名を指定します。これが、一番大事な要です。 Shade の形状名内には空白が利用出来ますが、クロスにする場合は、空白は使用しないように願います。
    • obj_file で始まる行
      クロスの形状を生成するに必要なデータの参照先を指定してますが、この仕様は矛盾しています。理由は、参照先は、名前.npz という numpy ファイルに変わっているからです。
    • x_scale 等で始まる行
      続く4つの情報の用途は不明です。現時点では、適当な値を出力してますが、特に支障ないようです。
    • material で始まる行
      続いて参照すべき.mhmat(マテリアル)ファイルか、Shade3D .shdsfc(表面材質)ファイル名前が、このファイルからの相対位置で指定されています。
    • rig で始まる行
      本部分は、オリジナルの拡張部です。続いて参照すべきrigファイルを、このファイルからの相対位置で定義しています。参照される側のリグファイルファイルに付いては、以下を参照願います。

  3. rigファイル仕様
    .rig ファイルは、以前は、有ったクロスのリグが本家から消滅したので、独自に付加しました。以下に .rig ファイルの簡単な仕様を添付しておきます。
    • locations
      各1行で1つの位置を定義しています。この位置を、下の bones 欄から参照します。最初が、その名前で、次の3つの整数がクロス形状の頂点番号、次の3つの浮動小数点数が、その各頂点毎の重み、次の3つの浮動小数点が、そこからのオフセットです。ちょうど .mhclo ファイルの vert以降の定義法と同様です。この部分は、後からマニュアルで修正した方がいいでしょう。下記の bones 欄で、必要ないものは、全て削除しその結果参照されない、locations は、削除してください。

    • bones
      各1行がジョイントを定義しています。最初がジョイント名、次の名前が、ボーンジョイントの場合の頭部の位置のロケーション名、その次の名前が、尻尾の位置のロケーション名、次の名前が、そのジョイントの親の bone 名です。自動では、不必要な、ジョイントが現れる場合があります。特に、 -ND 付きのジョイントで不要な物は削除してください。それ以降は、そのジョイント各種の設定情報です。簡単に列記ます。
      -ND
      Makehuman1 側のリグ側に存在しているジョイントです。このジョイントを起点として、以降のジョイントを作ります。-ND付きでないジョイントから参照されてないなら、この指定のジョイントは、不要ですので削除してください。

      -NC
      このジョイントは、親の直系のジョイントではないという意味です。つまり、ボーンジョイントの直系の子ではないジョイントにこのフラグが付きます。

      -E
      このボーンジョイントに子がない。子の部分に自動で終端ジョイントを作ります。

      -FOL
      このジョイントは、追従ジョイントである。その後にターゲットジョイント bone 名とその影響度の記述が必要です。

      -AIM
      このジョイントは、拡張エイムコンストレインツジョイントであることを意味してます。その後にターゲットジョイント bone 名の記述が必要です。

      -S
      このジョイントは、均等拡大縮小ジョイントであることを意味してます。しっぽのbone名は無意味です。

      -B
      このジョイントは、ボールジョイントであることを意味しています。しっぽのbone名は無意味です。

      -MUSCLE
      このジョイントは、筋肉ジョイントであることを意味しています。、その後に筋肉ジョイントのターゲットの bone 名の記述が必要です。

    • weights
      weights の次の名前は、そのスキン bone 名です。以降、クロスの、頂点番号とそのウエイト値が列記されてます。 Shade での表現とは異なり、ジョイント側を基準に列記されてます。 この部分だけは、正確です。

その他の事項

ライセンス

改版履歴