2014年8月12日火曜日

UnityChanをBlenderでインポート/エクスポート試行

UnityちゃんをBlenderでインポート/エクスポートしてみたメモ。

試行錯誤中なので、間違い/思い違いを含む可能性有りです。




環境

  • Windows7x64
  • Blender2.70a
  • UnityChan Ver1.2

問題点


Blender標準のFBXインポーターだと全くインポートできない。

有志提供によるプラグイン Bos FBX Importer/Exporter を使うと一応できた。



※追記:Blender2.72aでは標準搭載のImporterで読み込めます。逆にBosが動作しなくなくなりました。BlenderのFBXプラグインが大幅に機能対応したようです。


現状 Bos FBX Importer/Exporter を利用するのが良さそう。

追記:.blendファイルでUnityへの直接読込は試していません。
    情報としては2.67では問題があるとのこと。  
  
 

できたこと/できなかったこと等々

Bos FBX Importer/Exporter を利用して試行。

  • UnityChanのモデルをBlenderでインポートできた
     
  • ボーンはインポートできる
    Armatureの設定がされた状態になる。
    → Good!。
     
  • 一部のパーツはボーンから外れる
    頭部連動の目、眉など。(UnityChanの設計上そうなってる感じ?プラグイン云々とは別の話しかもしれない?)。
     
  • Weight Paint はインポートされないもインポートされる。
    そもそもUnityでHumanoid型で設定するのでWeightデータが存在していない?
    Vertex Group紐付けで存在。ただWeight0の無関係部位も全てずらっと存在している感じ。

  • マテリアルは存在はするが中身はない
    マテリアル、テクスチャ貼り付けは全て手動で行う必要有り。

Bos FBX Importer/Exporterの入手&インストール



サイトblenderfbx よりダウンロード。
※Win32/64専用なので注意

動作の為に UmConvも必要なのでダウンロード。
同梱Readme_jaにBlenderへのインストール方法明記有り。

Bos FBX Importer/Exporter はBlenderのプラグイン形式。
UmConvは手動でBlenderのインストールフォルダにコピーする必要があるので注意。

 

その他メモ

  •  メッシュとボーンの紐付けはVertex Group
    Blenderではよくあるパターンなのでわかりやすい
    • Blender上ではVertex GroupでWeightエリア名とメッシュを関連付け
      メッシュ修正後は適当に該当するVertex GroupにAssignすれば良い。
      ※Assign漏れがあると、Unity上でそこだけ尖ったりおかしくなる。
       そういう場合はまずVertex GroupでAssign漏れを疑ってみる。

       
    • Unity上のHumanoid~ConfigでWeightエリア名とボーンを関連付け
      既存UnityChanモデルから読み込み&コピーで関連付け完了できる。
      → 楽ちん。

      既存UnityChanモデルから読み込みではうまくいかない。
      Create From This Model で生成でうまくいった。
       
  • 頭部連動の目、眉などがボーンの階層構造に無い
    Blenderでエクスポート、Unityにインポート後、目、眉などはボーンとの親子関係位置の手動調整要。※EYE_DEFとかEL_DEFとか。
    (一度インポート&位置調整&プレハブ化、以後FBX更新毎での調整作業を回避)
    手足アニメにのみなら関係なし。
    表情のShapeアニメは同梱Animator、スクリプトのままでは動かせず。

     
  • 手動で階層構造調整
    Unityへインポート後、Character1_Reference や root_mesh の階層構造が無い。
    手動で GameObject追加、リネーム。既存Unityちゃんと同じ階層構造になるように手動調整。
    → 既存UnityChanと互換を保ちつつ、BlenderでExportが現状困難そうな予感。
     
  • Blender上でアニメーションを作る用途だと自前で適当にWeight付けが必要。
    手足など基本部位のみで良ければ元Weight利用で。
    Rigfy有効化、AutoWeightで概ねなんとかなるかも?→Autoのみではきつい。面倒。
    簡単なアニメーション作成くらいなら、UnityChanに似た体型の手持ちのアバターを使った方が早いという考えも。
     
  • マテリアル名
    BlenderからBos FBXでエクスポート、Unityでインポートした際、マテリアル名はBlenderで扱っているテクスチャのファイル名になる。
    ※Blender上のマテリアル名でも、テクスチャイメージ名でもなく、実ファイル名
    UnityChanのマテリアル名と一致しなくなる為、いろいろと面倒なことになる。

    テクスチャのファイル名を書き換えると一見回避できるが、複数マテリアルで1テクスチャを使用しているのでやっぱり破綻する。

    どのみち初回はテクスチャを手動設定しなけばならないので、そこでやるしかない様子。(微妙に苦行)

テストで少しメッシュを修正、Unityにインポート、UnityChan同梱のデモスクリプトで動かしてみた。
  • 各種ポーズ → OK
  • 目パチ → OK
  • 髪 → 現状ポーズに連動せず、動かない → 現状の課題
  • 目の視線移動 → 未確認。もともと無いようだ。
原本では二の腕、脇下等々が服下にあり、低コスト化でメッシュが存在しない。
とりあえず適当にメッシュ処理したので激しい動きでは破綻する部分が。

まじめに動かすにはもっと丁寧にメッシュ修正作業をする必要がありそう。




追記:
UnityChan を BlenderでImport、メッシュ加工&Exportでいろいろ試行。
(Mayaを使えばいろいろ幸せな気が・・・する; 学生なら無料版が使えますね今は)

  • 手足アニメーション(ポーズ)
    Armatureによるアニメーション(髪は含まず=Humanoid型の範囲外?)。
    Blender上で Import(Bos FBX)、メッシュ加工、Export(Bos FBX)で普通に作業可。
    メッシュ~ArmatureアサインはVertex Group。
    髪、顔アニメが必要なければ配布物(スクリプト、アニメ等)との互換動作の確保も容易。
     
  • 顔のモーフ
    Shape制御(口、眉、まぶた)。
    BlenderでImport/Export(Bos FBX)は一応できてる。できてるがオリジナルとは若干異なるデータ階層(?)になってしまうのか、配布物のAnimator、スクリプトそのままでは制御不能(メカニム経由)。
    Shapeデータ自体はUnity上に一応Importされてる。自前でスクリプトを書いて制御すれば一通り顔アニメは制御可能(Legacy的な制御?)。
    → メカニム経由での制御がまだうまくいってない(要追試)。
     
  • 髪のアニメーション
    既存アニメーションでの髪アニメはとりあえず断念。
    配布物のアニメーションを利用しようと試みたが、
    • Humanoid型でCreate From This Model で生成すると、
      手足の基本アニメは動く。髪は動かない。
    • 既存UnityChanのModelのAvatar読込&プレハブ上でデータ階層再配置
      髪は一応動く。手足はめちゃくちゃに崩れる。
    BlenderでExportすると髪ボーンの階層がズレる(?)のか、そもそも既存アニメと互換がなくなるような感じ。Unity上でHumanoid型で生成すると基本部分だけは互換が取れてるような感じ?
    (多分・・・Mayaなら問題なくできるんじゃないかと妄想)。
     
  • 髪の揺れモノ駆動
    Vet1.2からダイナミックUnityChanが同梱。
    「揺れモノ」制御のスクリプト類が付属。
    添付Documentを見る感じ、これは使えそうな気がする(未テスト)。テスト済。現状この方式が最適解な気がします。
    シドニア的な何かを感じます(謎)。これは良い。
    ダイナミックUnityChanでは髪のボーンアニメは使ってないような気がする&かなり見栄えが良い。髪は揺れモノ駆動でいいかもしれない(ただし負荷は上がる)。
    Androidで実際ゲーム等に使える負荷レベルなのかはなんともいえない所。がんばればなんとかそれなりに動く。
    (負荷増分を他で削ればなんとかなるか?という妄想)

0 件のコメント:

コメントを投稿