-Blenderでユニティちゃんを読む-(2.72以降)



0. ユニティちゃん

1. FBX ファイル読み込み

2. モデルの修正や設定

3. プレビュー画面でのテクスチャ表示

4. ポージング準備

5. ポージング

0. ユニティちゃん

ユニティちゃんは、Unityによるゲーム(もしくはゲームに限らずともアプリの)開発を活発にするために配布されているキャラクターデータです。

もとから歩く走るといったモーションは含まれているのですが、新規モーションを追加したい場合など、Blender 上で読み込み&書きだしができると便利なので、その方法をメモっておきます。

キャラクターアニメーションは普段は行っていないので、少々勘違いや効率の悪いやりかたが含まれているかも知れません。

1. FBX ファイル読み込み

Blender のユーザー設定(Ctrl+Alt+U)で、Addonsの設定をします
FBXファイル読み込みの「EXPERIMENTAL」(テスト用)の アドオンを有効にします。最初から有効になっているFBX読み込み用のアドオンは使いません。

2.72の時点ではまだテスト用扱いなので、今後変更が加わってゆく可能性はあります。
メニューからアドオンを実行できるようになります。アセット内のModels/unitychan.fbxを読み込みます。

ここから先、うっかり元データを変更しちゃった、という事故が起こりがちです。
また、アセット内のフォルダに.blendファイルを保存すると、それをUnityが読み込んだりしてしまいます。
.fbxファイルとテクスチャファイルなどを別の場所にコピーして、そこで作業をするほうが良いかも知れません。
デフォルト設定のまま読み込んだ時点で、モデルデータは読み込めています。
よく見ると顔の一部が足元に落ちていますが、これは必要であれば後で修正します。

制御用のボーンが見えますが、どうも変な方向を向いています。
ボーンを強調してみると、全体的に体から外に突き出してとげとげしています。これは、読み込み時の向きの設定がおかしいからなので、正しい設定で読み込む必要があります。
ボーンのデフォルトの軸の設定が違うようです。
読み込み時に左下に出ているオプションの Primary Bone Axis: と Secondary Bone Axis:
を、X,Y の順番に直します。
ボーンだけ表示させました。
ほぼ正しく構造が読み込めているようです。
よく見ると、いくつかのボーンが反対を向いています。
特に右半身の服のひらひらなどが怪しいです。

元から向きが反対なのか、読み込むときに反転してしまったのかはわかりません。
しかし、この状態で Blender 上でポーズをとったり、ポーズをとった状態で出力して Unity で読みこんでも大丈夫なようなので、少々使いづらいですがこのままにしておきます。

むしろボーンだけを修正してしまうと、Unityちゃんのモデルとのつながりがおかしくなるようなので…

2. モデルの修正や設定

この状態で顔パーツと後頭部が何故か左下に落ちています。顔パーツが分離している状態でポーズを取って、ポーズの情報を Unityに戻しても大丈夫なようなのですが…(Unity側で使うのはボーンの情報なので)

何かと不便なので顔パーツを本来の位置に戻します。

落ちてしまっているパーツの親をボーンからオブジェクトにして、位置と回転の情報をゼロに戻す(Alt+G, Alt+R)と無事に本来あるべき位置に移動します。
本来ある位置に顔パーツが配置されました。
ここで、色が反映されていないのを反映させたりしたいのですが、パーツがばらばらの状態なので、一個一個設定をしないといけないので面倒くさい面もあります。

今後のユニティちゃんモデルの用途(他のツール用にエクスポートする等など)によって、パーツが分かれていなくても構わない場合は、体の各パーツオブジェクトを一つに合成(Join, Ctrl+J)させてしまっても良いかもしれません。

が、パーツを合成してしまうと、テクスチャの設定や、ポーズに追随させる設定の調整が面倒になってしまうので、その場合は先に 次のセクションの作業その次のセクションの作業をしておきます。
合成したパーツ(または各パーツごと)のマテリアルを選択して、
使用しているテクスチャを選択して、
テクスチャを何に反映させるか(この場合は色)を設定します。

基本的に色用のテクスチャを色に反映させれば基本の見た目が設定できます。
スペキュラー用のテクスチャなども用意されているので、より凝った表現にする場合には、適切に反映がされるように順次設定してゆきます。

SPECがスペキュラー、NRMがノーマルマップなのはわかるけど、FOって何だ?
skinだけ設定してレンダリングしたらこのようになりました。
順次設定してゆきます。

本当はUVマップの設定で「どのUVマップを使うか」も設定しないといけないはずなのですが、正しいUVマップが先頭に設定されているようなので、設定なしでも正しく配置されているようです。
頬の赤味パーツの半透明を設定していないので邪魔になっています。また、おでこのあたりをよく見ると顔パーツの部品の境界が見えてしまっています。

目や頬、アイラインはテクスチャの不透明度を情報を利用しているので、マテリアルの透明(Transparency)を有効にします。不透明度は1を基準にして、テクスチャが透明な部分は0をかける、という考え方が都合がいいので、Blend: の効果は Mix から Multiply にします。

テクスチャの設定も、色と一緒に不透明度(Alpha)に影響を与えるようにします。
顔周りがすっきりしました。

顔パーツをバラバラにした状態だと、おでこの境界線は残ってしまいますが、Joinでひとまとめにしている場合は、境界をなくして滑らかにできます。

メッシュ編集で Remove Double を行って、境界部分で重なっている頂点をまとめてしまいます。
顔のポリゴンが滑らかに繋がって、境界がなくなりました。

3. プレビュー画面でのテクスチャ表示

最初の状態ではまだプレビュー表示のテクスチャを有効にしても、テクスチャは表示されません。(光源なしで表示すると、真っ白です)

本当はこの時点で表示されるのがあるべき姿の気もしますが…。blender側でおまじないが必要です。
プレビューでテクスチャ表示したいパーツを選択して、UV/Image Editorでの見える状態で、メッシュ編集をするEdit Mode に入ります。UV/Image Editor側にUV座標が表示されます。
この状態で、対応する画像を表示させると、プレビュー画面での UV 座標と使用テクスチャの関係付けが行われます。
少々面倒ですが、パーツごとに次々に正しいテクスチャ画面を設定してゆきます。

上でも述べましたが、最初にオブジェクトを統合してしまうと、パーツごとにテクスチャを設定できません。 一まとめになったUVに対して、どのUVにどのテクスチャを割り当てるかを設定しなくてはいけなくなるので、とても面倒です。

プレビュー画面でテクスチャを表示させたい場合には、パーツがバラバラのうちにこの操作をしたほうが楽です。
この状態になれば、複数のパーツを統合しても見た目は変わりません。
最終的にこのようになります。かわいいほっぺが cheek の透明部分によって隠れてしまっています。

これは、Blender の というよりも、半透明なものをポリゴン表示する場合の共通の問題で、モデルの描画順序を、顔->cheek の順番にすることができれば解決するはずのなのですが…

inserted by FC2 system