2015年5月29日金曜日

SDユニティちゃん活用その2 ~Blenderでマテリアル設定~

SDユニティちゃんのアバターモデル(Blenderでインポート後)を、マテリアル経由でテクスチャ設定するメモ。





環境

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

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




前提

前記事でBlendrにSDユニティちゃんのモデルデータ(SD_unitychan_humanoid.fbx)をインポートした状態から作業していきます。

補足:Blenderで新規作成状態で配置されるランプのままだと暗くて見えにくいので、適当にHemiなどに変更してメッシュ面が見やすいようにしておくと良いです。





メッシュパーツを確認

マテリアルを設定するメッシュのパーツは全部で6つ。
各Object名は以下の通り。
  • _Fhair   (前髪 左右分け)
  • _Fhair2  (前髪 中央)
  • _body    (手足体全体)
  • _eye     (目)
  • _face    (顔)
  • _head   (頭部、ツインテール髪、ツノ)
※Object名がアンダーバー( _ )で始まるように統一されているのが特徴。



Blender上で Outliner ウィンドウにて、Mesh_SD_unitychan から下に展開していきます。

Mesh_SD_unitychan > Character1_Reference




下の方にスクロールすると先程の6つのメッシュObjectがあります。

Outliner上で _body を左クリックすると 3D View上でもメッシュが選択状態になります。
マテリアルも _body のものが選択状態になります。

以後「を選択状態にする」といった場合は Outliner上から主に操作しています。




作業方針

SD Unityちゃんをインポートした状態で既にマテリアル名やテクスチャへの参照も一応インポートはされています。

しかしBlender上でのテクスチャ類の細かい部分が自動設定されない為、3D View上で灰色になっている状況です。


作業方針として以下のような感じで進めています。
  • マテリアルの質感設定などはデフォルトのまま使う。
  • テクスチャを見えるように設定する。
  • ノーマルマップが反映するように設定する。
  • スペキュラマップは使わない。
  • 環境マップは使わない。
  • 輪郭部の表現は使わない。(トゥーンシェーダー?というか、アニメ的な輪郭フチ取り)


最低限のテクスチャとノーマルマップの設定のみを行う感じで作業します。

※Unity上で使用時にマテリアルは再設定するので。
Blender上でSDユニティちゃんの動画を作る場合等ではまじめに設定要だとは思いますが。当面の目的から逸れるのでスペキュラ類は割愛しています。




あと作業中はマテリアルが見えるように3D Viewを設定しておきます。
(3D Viewメニューから、Viewport Shading を Material に設定)




マテリアル設定

まず_body のマテリアル設定をしてみます。


_bodyにアサインされているマテリアルはdef_matskin_mat の2つ。
  • def_mat   → 衣服面のマテリアル。
    テクスチャ、ノーマルマップの設定を行う。
  • skin_mat  → スキン面のマテリアル。
    テクスチャの設定を行う。

作業内容は各マテリアル内のテクスチャ設定欄で Color や Nomal map 指定を行うだけです。





■マテリアルの選択方法

  1. 3DView上で Object Modeにします。 
    3D View下部のメニューバー操作ないしはTABキー等。

  2. 3DView上で何も選択していない状態にします。
    Aキーを1~2回押す等で。

  3. Outliner上で _body を左クリックして選択状態にします。
    3DView上でもメッシュが選択状態になります。

  4. PropertiesウィンドウでMaterialを見る。
    2つのマテリアル def_matskin_mat がアサインされているのが見えます。

    ここで def_matskin_mat のマテリアルいずれかを選択する操作ができます。





■マテリアル内のテクスチャ設定

マテリアル def_mat を設定していきます。

  1. マテリアル def_mat 選択する。

  2. テクスチャボタンを左クリック。


  3. テクスチャとノーマルマップのみを有効にする。
    utc_all2.tgautc_normal.tga の2つのみチェックを入れる。
    他の ~.tga のチェックは外す。
    ※FO_CLOTH1.tga は 服の輪郭用(?)。utc_spec.tga は 服のスペキュラ用。ENV2.tga は写りこみ用環境マップ。
    今回これらはBlender上では使わない。



  4. テクスチャの選択。
    utc_all2.tga の文字の上(又は左の小さいアイコン上)を左クリックして選択状態にする。
    ※選択状態になるとすぐ下の Preview に反映されます。


  5. InfluenceパネルDiffuse: Colorにチェックを入れる。
    ※Colorのチェック欄は下にスクロールしていくとあります。
    3DViewにテクスチャの色が反映されます


  6. ノーマルマップの選択
    utc_normal.tga の文字の上(又は左の小さいアイコン上)を左クリックして選択状態にする。
    ※選択状態になるとすぐ下の Previewに反映されます。


  7. Image SamplingパネルNormal Map にチェックを入れる。
    ※中ほどにスクロールしていくとあります。


  8. InfluenceパネルGeometry: Normalにチェックを入れる。
    ※下にスクロールしていくとあります。


  9. 服部分(def_mat)にテクスチャとノーマルマップが反映。




次にマテリアル skin_mat を設定していきます。


要領はマテリアル def_mat の設定と同じなので詳細割愛です。
作業の流れは以下の通り。

  1. マテリアル skin_matを選択する。

  2. テクスチャボタンをクリック。
    テクスチャのリストに以下の2つがある。
    • utc_all2.tga   →  同行内右端にチェックを入れる。(スキン部分)
    • FO_SKIN1.tga  → チェックは外す。(スキンの輪郭用なので使わない)

  3.  utc_all2.tga をクリックして選択。
    InfluenceパネルDiffuse: Colorにチェックを入れる。

  4. スキン部分が3DViewに反映されます。




■ _eye の設定

  1. マテリアルは mouth_mat のみ。
  2. テクスチャは utc_all2.tga のみにチェック入れ。FO_SKIN1.tga は使わない。
  3. utc_all2.tga を選択し、InfluenceパネルDiffuse: Colorにチェックを入れる。(目に色がのる)


■ _face の設定

マテリアルは skin_matmouth_mat
この2つのマテリアルは既に設定済みなのでそのまま(何もしない)。


■ _head の設定

マテリアルは hair_matmouth_matnol_mat
mouth_mat は既に設定済みなのでそのまま。

  1. マテリアル hair_mat を選択。

  2. テクスチャボタンをクリック。
    テクスチャのリストで以下のようにチェック入れ。
    • utc_all2.tga       → チェックを入れる。
    • FO_CLOTH1.tga  → チェックを外す。(輪郭用)
    • utc_spec.tga           → チェックを外す。(スペキュラ用)
    • utc_normal.tga    → チェックを入れる。
    • ENV2.tga               → チェックを外す。(写りこみ環境マップ用)

  3. utc_all2.tga をクリックして選択。
    InfluenceパネルDiffuse: Colorにチェックを入れる。(ツインテ髪に色がのる)

  4. utc_normal.tga をクリックして選択。
    • Image SamplingパネルNormal Mapにチェックを入れる。
    • InfluenceパネルGeometry: Normalにチェックを入れる。

  1. マテリアル nol_mat を選択。

  2. テクスチャボタンをクリック。
    テクスチャのリストで以下のようにチェック入れ。
    • utc_all2.tga       → チェックを入れる。
    • FO_CLOTH1.tga  → チェックを外す。(輪郭用)
    • utc_spec.tga        → チェックを外す。(スペキュラ用)
    • utc_normal.tga    → チェックを入れる。
    • ENV2.tga             → チェックを外す。(写りこみ環境マップ用)

  3. utc_all2.tga をクリックして選択。
    InfluenceパネルDiffuse: Colorにチェックを入れる。(ツインテ髪の一部に色がのる)

  4. utc_normal.tga をクリックして選択。
    • Image SamplingパネルNormal Mapにチェックを入れる。
    • InfluenceパネルGeometry: Normalにチェックを入れる。

■ _Fhair の設定

マテリアルは hair_matnol_mat
この2つのマテリアルは既に設定済みなのでそのまま(何もしない)。


■ _Fhair2の設定

マテリアルは hair_matnol_mat
この2つのマテリアルは既に設定済みなのでそのまま(何もしない)。




これで一通りマテリアル経由でのテクスチャ設定が終了。
3DViewのObjecet Modeにて、Viewport Shading: Material になっていれば以下のように見えます。




これでSDユニティちゃんのアニメーション制作などもやりやすいですね!




補足1

ここまでの作業ではマテリアル経由でテクスチャを設定してます。

3DViewのViewport Shading: を Texture で見たときは灰色のままです。

UV/Image Editor でテクスチャを読み込めばテクスチャで見えるようになります。
  1. _bodyを選択。

  2.  3DView で Edit Modeにする。

  3. Aキーを押して、メッシュ全選択。

  4. UV/Image Editor上で、
    1. ALT+O押し。
    2. Textureフォルダ内の utc_all2.tga を選択して読み込む。

  5. Object Modeにする。
これでテクスチャが見えるようになります。
(ノーマルマップは見れません)

同じ要領で残りの5つのメッシュにも貼りこめばOKです。


ノーマルマップは見れないのですが、マテリアルで見るよりも若干軽い感じです。




補足2

状況とか使い方によりますが高速化重視と考える場合。

Blender上でマテリアルを1つのみにしてしまいテクスチャは utc_all2.tga のみにしてノーマルマップも省いてしまうという思い切った軽量化もアリかも。
これで1つのマテリアルを6つのメッシュで共用のみに。

Blenderでfbxエクスポート、Unity上へインポート後、シェーダーは Unlit > Texture にしてしまうと、幾分高速化している気がします。


0 件のコメント:

コメントを投稿