2015年5月28日木曜日

SDユニティちゃん活用その1 ~Blenderでインポート~

BlenderもバージョンアップしたのでSDユニティちゃんのインポート手順を再度整理&メモ。





環境

Windows7x64
Unity 5.0.1f1 Personal
Blender2.74(x64)
SDユニティちゃん 3Dモデルデータ Download ver1.0。(2015/5時点最新)

※作業中素材には『ユニティちゃんライセンス』で提供されるコンテンツを利用しています。




準備

SDユニティちゃんのFBXファイルはUnity Packageで配布されているので、

  • 「SDユニティちゃん 3Dモデルデータ」を公式サイトからダウンロード
  • Unityでプロジェクト作成、Packageをインポート
  • 使うFBXファイルを確認 
  • BlenderでFBXファイルをインポート

の、ような手順で進みます。




■3Dモデルデータのダウンロード

公式サイトへ行き3Dモデルデータをダウンロード。

→ 公式サイト: http://unity-chan.com/contents/guideline/


キャラクター利用ガイドラインを読み、同意できればDOWNLOADページへ進む。

「SDユニティちゃん 3Dモデルデータ」をみつけてパッケージファイル(SD_unitychan.unitypackage)をダウンロードする。





■Unityでパッケージをインポート

Unityを起動。空プロジェクトを作成。

メニューバーから、

Assets > Import Package > Custom Package

にてパッケージファイル SD_unitychan.unitypackage を指定。




ダイアログが開くので右下の Importボタン をクリック。

インポートに成功していれば、Assets欄に UnityChan のフォルダができる。





■インポートに使うFBXファイルを確認

Assets欄の UnityChan のフォルダから階層をたどって、
  • Assets/UnityChan /SD_unitychan/Models 
まで展開。

右欄に見える SD_unitychan_humanoid の上で右クリックメニューから、Show in Explorer をクリック。

エクスプローラーが自動起動して開いたフォルダ内の、
  • ファイル SD_unitychan_humanoid.fbx
これをBlenderでインポートして使うので、ここでのエクスプローラーのフォルダ位置を覚えておきます。



また同じフォルダ内の、
  • フォルダ Textures
配下にテクスチャ類が入ってます。

Blenderで SD_unitychan_humanoid.fbx をインポート直後のマテリアルはここのテクスチャを参照しています。

※このUnityプロジェクトは残しておく方が楽です。消す場合は Texturesフォルダのコピーとマテリアルのテクスチャ参照を手動で要設定。
※又は、FBXファイルとTexturesフォルダを予めどこかにコピーしておいた後に、Blenderでインポートする等。





Blenderにインポート

Blenderを起動。
メニューバー File > Import > FBX (.fbx) でインポート画面へ。



ファイル SD_unitychan_humanoid.fbx を指定。
左列のオプションは以下のような感じで。
Automatic Bone Orientationにチェック入れを忘れずに。


インポート後の状態。

この段階で一応インポートはできています。

※Unity上で既存Unityちゃんのアニメーションコントローラで一応動かせます。
※髪などのアニメーションはUnity上で別途ユレモノ設定が必要。

※この段階ではマテリアルの設定が不完全なのでテクスチャ類はまだ見えていません。



一応少し調整をしていきます。




階層の調整

インポート直後は2つのObjectがOutlinerに見えます。
これを入れ子にします。

Outliner上で Character1_ReferenceMesh_SD_unitychan へドラッグ&ドロップします。

操作のポイントは行の左の小さなアイコンをつかんで、ドロップ先もアイコンの上にするとやりやすいです。



ここで一旦Blender作業用のフォルダを決めてSave(blend形式)しておきます。
File > Save as でファイル名指定で保存)

追記: この作業は動作上必須ではないですが、UnityとBlender上で見やすくなるので。




向きの調整

これもUnityでは動作上必須ではないですが、一応作業しておきます。


インポートしたモデル(SD Unityちゃん)をBlender上でよく見てみると、
  • 3DView で Object Modeだと直立している(問題無し)。
  • Pose Modeでは直立(問題無し)。
  • Edit Modeにすると前方に90度倒れる(問題点)。
    メッシュ、アーマチュア(ボーン)共に倒れる
    (問題点)

ということで、Edit Modeで向きが90度倒れる問題を調整してみます。


  1. 3D Viewウィンドウ で Object Modeにする

  2. 真横からモデルを見る
    テンキー3押し。
    遠近(Perspective)で見えている場合はテンキー5押しで垂直視点にする(Ortho)。



  3. Pose Mode で アーマチュアのみ全選択
    3D View上でアーマチュアを右クリック選択、
    (又はOutliner上で SD_unitychan 配下の Pose を CTRLクリック等)。
    その後 Pose Modeにする。
     Aキー押しで アーマチュアを全選択状態にする(1回~数回押しで確認)。



  4. Rest Position を現在位置で再設定する
    3D Viewウィンドウのメニューバーから、Pose > Apply > Apply Pose as Rest Pose
    又は、3D View上で CTAL-A > Apply > Apply Pose as Rest Pose


  5. この段階でアーマチュアは倒れなくなりますが、メッシュが90度前に倒れます


  6. 3DView上でObject Mode でアーマチュアのみを選択。
    選択マーカー(赤青緑のXYZを示す矢印)がモデルの足元付近にあることを確認。


  7. 3Dカーソルを選択マーカー位置へ移動する。
    3D View上で SHIFT+Sキー押し > Cursor to Selected。


  8. Pivot Pointを3D Cursorにする
    3D Viewメニュー > Pivot Point > 3D Cursor


  9. メッシュを90度回転する
    Outliner上で Mesh_SD_unitychan のツリーを展開し、下方にスクロール。
    6つのメッシュがあることを確認します。
    ( _Fhair、_Fhair2、_body、_eye、_head、_face)


    _face以外を 1つずつ90度回転させていきます。

    以下 _body の手順です、他4つも同様手順で90度回転します。
    ※ここまでの作業での3D Cursorの位置、Pivot Pointを3DCursor設定等が済んでいないとうまく回転しません。

    1. Outliner上で _body を左クリックで選択する。
    2. 3DView上で Edit Modeにする。
      TABキー押し、又はメニューバーでの操作で。
    3. メッシュを全選択する。
      Aキー押し。
    4. メッシュを90度回転
      Rキー押し > 9キー押し > 0キー押し ※数字キーはテンキーではない方を使う。


    5. 他、_Fhair、_Fhair2、_head、_eye の4つも同様手順で90度回転を行います。
      ※大きいメッシュからやると良いです。_eye等の小さいメッシュが隠れていて確認しにくいので。

これで Edit Modeでも前に90度倒れなくなります。




追補1

調査が甘いかもしれませんがついでにメモ。
(間違いもあるかもしれません)
  • Blenderのアーマチュアは上(先端)が必ずローカル軸のY+の向きに固定
    Blenderの仕様らしいです(Octahedraでとんがってる方がY+)。
    SDユニティちゃんをインポートした際、アーマチュアのXYZの向きは合っていても、この仕様で先端(とんがり)がY+に向くのでおかしく見えます。
    そこで Automatic Bone Orientation にチェックを入れてインポートするとアーマチュア個々の回転で向きを補正をしてくれるという対策。

    Rest PositionでY+側に倒れこんだ状態になるのもこの辺の差異の影響ではないかと推察

  • SDユニティちゃんの元のボーンは上(先端)がZ+
    多分Z+が先端(な気がします)なのでBlenderの仕様もあいまって向きの補正が必要になるようです。

  • Blender の Rest Position
    Rest Position はアーマチュアを最初に作成しはじめた際の基本的な配置で、アニメーションやその他のアーマチュアに関係するものはこの状態を基点にしているようです。
    作業が進んだ状況でいじると、付随していろんなものがずれてとんでもないコトになるらしいので要注意。
    よってインポート直後の段階で、直立状態を Rest Positon に再設定しておく、というのが前項の作業です。

  • 座標系の違い
    BlenderはOpenGL系(右手系)でDirectX系(左手系)とXYZの軸の取り方が異なるので変換を要する、なるほど面倒;。





追補2

Blenderのバージョンによるインポート状況が少しややこしいことになっています。

SDユニティちゃんの Generic版 と Humanoid版 のFBXファイルをインポートしてみた状況が下図。


ver2.74ではHumanoid版はうまく読見込めてますが、Generic版はメッシュ部分が90度倒れてます。ver2.73aでは逆です。
(Blender2.73より古い版ではうまくインポートできない/特定条件化でのみインポート可能などさらにややこしい)


ver2.73aでGenericをインポートして作業しても一応使えてましたが、記事中では再度最新ver2.74でHumanoid版をインポートして使っています。

0 件のコメント:

コメントを投稿