mattak's blog

気の向くままに書く

ゲームブートキャンプ 4月 3日目

今日やること

  • UnityChanを動かす部分を自分で書いてみる
  • Mecanimつかう

UnityChanを自分でうごかす

まずはUnityChanをそのまま表示してみる.

Q1. UnityChanの実態はどこ?

そもそも3Dの知識が乏しいので、シーン上にモデルをどのように配置すればいいのか? 3Dモデルの実態はどのようなファイル(群)で構成されているのかがわからない.

$ tree -I "*.meta|License" | lshift 4
.
├── Amimators
│   ├── UnityChanARPose.controller
│   ├── UnityChanActionCheck.controller
│   └── UnityChanLocomotions.controller
├── Animations
│   ├── 131205_unitychan_ARpose2_OUT.fbx
│   ├── 131205_unitychan_ARpose_OUT.fbx
│   ├── Materials
│   │   ├── body.mat
│   │   ├── body_01.mat
│   │   ├── cgfxShader2.mat
│   │   ├── eye_L1.mat
│   │   ├── eye_R1.mat
│   │   ├── eye_iris_L_00.mat
│   │   ├── eye_iris_R_00.mat
│   │   ├── eyebase.mat
│   │   ├── eyeline.mat
│   │   ├── eyeline_00.mat
│   │   ├── face.mat
│   │   ├── face_00.mat
│   │   ├── hair.mat
│   │   ├── hair_01.mat
│   │   ├── skin1.mat
│   │   └── skin_01.mat
│   ├── unitychan_DAMAGED00.fbx
│   ├── unitychan_DAMAGED01.fbx
│   ├── unitychan_HANDUP00_R.fbx
│   ├── unitychan_JUMP00.fbx
│   ├── unitychan_JUMP00B.fbx
│   ├── unitychan_JUMP01.fbx
│   ├── unitychan_JUMP01B.fbx
│   ├── unitychan_LOSE00.fbx
│   ├── unitychan_REFLESH00.fbx
│   ├── unitychan_RUN00_F.fbx
│   ├── unitychan_RUN00_L.fbx
│   ├── unitychan_RUN00_R.fbx
│   ├── unitychan_SLIDE00.fbx
│   ├── unitychan_UMATOBI00.fbx
│   ├── unitychan_WAIT00.fbx
│   ├── unitychan_WAIT01.fbx
│   ├── unitychan_WAIT02.fbx
│   ├── unitychan_WAIT03.fbx
│   ├── unitychan_WAIT04.fbx
│   ├── unitychan_WALK00_B.fbx
│   ├── unitychan_WALK00_F.fbx
│   ├── unitychan_WALK00_L.fbx
│   ├── unitychan_WALK00_R.fbx
│   └── unitychan_WIN00.fbx
├── FaceAnimation
│   ├── FaceUpdate.cs
│   ├── angry1@unitychan.anim
│   ├── angry2@unitychan.anim
│   ├── conf@unitychan.anim
│   ├── default@unitychan.anim
│   ├── eye_close@unitychan.anim
│   ├── face\ only\ mask.mask
│   ├── sap@unitychan.anim
│   ├── smile1@unitychan.anim
│   └── smile2@unitychan.anim
├── Models
│   ├── Materials
│   │   ├── body.mat
│   │   ├── eye_L1.mat
│   │   ├── eye_R1.mat
│   │   ├── eyebase.mat
│   │   ├── eyeline.mat
│   │   ├── face.mat
│   │   ├── hair.mat
│   │   ├── mat_cheek.mat
│   │   └── skin1.mat
│   ├── UnityChanShader
│   │   ├── Materials
│   │   │   ├── body.mat
│   │   │   ├── eye_L1.mat
│   │   │   ├── eye_R1.mat
│   │   │   ├── eyebase.mat
│   │   │   ├── eyeline.mat
│   │   │   ├── face.mat
│   │   │   ├── hair.mat
│   │   │   ├── mat_cheek.mat
│   │   │   └── skin1.mat
│   │   ├── Shader
│   │   │   ├── CharaMain.cg
│   │   │   ├── CharaOutline.cg
│   │   │   ├── CharaSkin.cg
│   │   │   ├── Unitychan_chara_eye.shader
│   │   │   ├── Unitychan_chara_eye_blend.shader
│   │   │   ├── Unitychan_chara_eyelash_blend.shader
│   │   │   ├── Unitychan_chara_fuku.shader
│   │   │   ├── Unitychan_chara_fuku_ds.shader
│   │   │   ├── Unitychan_chara_hada.shader
│   │   │   ├── Unitychan_chara_hada_blend.shader
│   │   │   ├── Unitychan_chara_hair.shader
│   │   │   └── Unitychan_chara_hair_ds.shader
│   │   └── Texture
│   │       ├── DEFAULT_NORMAL.tga
│   │       ├── ENV2.tga
│   │       ├── FO_CLOTH1.tga
│   │       ├── FO_RIM1.tga
│   │       ├── FO_SKIN1.tga
│   │       ├── body_01.tga
│   │       ├── body_01_NRM.tga
│   │       ├── body_01_SPEC.tga
│   │       ├── cheek_00.tga
│   │       ├── eye_iris_L_00.tga
│   │       ├── eye_iris_R_00.tga
│   │       ├── eyeline_00.tga
│   │       ├── face_00.tga
│   │       ├── guide.tga
│   │       ├── hair_01.tga
│   │       ├── hair_01_NRM.tga
│   │       ├── hair_01_SPEC.tga
│   │       └── skin_01.tga
│   └── unitychan.fbx
├── Prefabs
│   ├── Directional\ light\ for\ UnityChan.prefab
│   ├── LookPos.prefab
│   ├── for\ Locomotion
│   │   ├── CamPos.prefab
│   │   ├── FrontPos.prefab
│   │   ├── JumpPos.prefab
│   │   ├── LookAtPos.prefab
│   │   ├── Main\ Camera.prefab
│   │   └── unitychan.prefab
│   └── unitychan.prefab
├── ReadMe_en.pdf
├── ReadMe_jp.pdf
├── Scenes
│   ├── ARPoseTest.unity
│   ├── ActionCheck.unity
│   └── Locomotion.unity
├── Scripts
│   ├── IdleChanger.cs
│   ├── ThirdPersonCamera.cs
│   └── UnityChanControlScriptWithRgidBody.cs
└── Voice
    ├── unity-chan_voice_list.txt
    ├── univ0001.wav
    ├── univ0002.wav
    ├── univ0003.wav
    ├── univ0004.wav
    ├── univ0005.wav
    ├── univ0006.wav
    ├── univ0007.wav
    ├── univ0008.wav
    ├── univ0009.wav
    ├── univ0010.wav
    ├── univ0011.wav
    ├── univ0012.wav
    ├── univ0013.wav
    ├── univ0014.wav
    ├── univ0015.wav
    ├── univ0016.wav
    ├── univ0017.wav
    ├── univ0018.wav
    ├── univ0019.wav
    ├── univ0020.wav
    ├── univ0021.wav
    ├── univ0022.wav
    ├── univ0023.wav
    ├── univ0024.wav
    ├── univ0025.wav
    ├── univ0026.wav
    ├── univ0027.wav
    ├── univ0028.wav
    ├── univ0029.wav
    ├── univ0030.wav
    ├── univ0031.wav
    ├── univ0032.wav
    ├── univ0033.wav
    ├── univ0034.wav
    ├── univ0035.wav
    ├── univ0036.wav
    ├── univ0037.wav
    ├── univ0038.wav
    ├── univ0039.wav
    ├── univ0040.wav
    ├── univ0041.wav
    ├── univ0042.wav
    ├── univ0043.wav
    ├── univ0044.wav
    └── univ0045.wav
15 directories, 167 files

本質的でないファイル *.metaやLicenseフォルダーはのぞいた. 拡張子で分けると以下の通り.

*.controller

  • Animatorで利用するファイルだろうか?
  • Unityで開いてみると状態遷移図が出てきたので、Mecanim関連のファイルっぽい

*.fbx

  • $ cat ./Animations/unitychan_DAMAGED00.fbx | head -2
  • 中身てみると、kobayashiさんがDropbox内で、Mayaをつくって制作していることがわかるw
  • こうゆう本質的じゃない情報をmetaデータに含めるファイル形式って嫌いだなー. (iOSのプロジェクト設定ファイルとか)
  • うーん、maya使ったことないからよくわからんなー.
  • ファイル名、フォルダ名から察するに、ポーズとかを動きを設定するファイル?

*.mat

  • マテリアルファイル?
  • テクスチャに対するメタ情報を与えるようなファイルであるようだ。
  • YAML形式のものは、スケール、オフセット、色、シェーダーなどが定義されている.

*.anim

  • アニメーションのメタ情報を設定するファイル?

*.cs

  • C#のプログラム

*.mask

  • モデルのボーンに関係するメタファイル.
  • 部位や領域情報を定義している?

*.cg

  • シェーダのプログラムファイル
  • Maya関係?

*.shader

  • シェーダのプロパティを設定するファイル?

*.tga

  • 透過処理のできる画像ファイル形式?

*.prefab

  • Unityで利用するprefabファイル

*.unity

  • Unityのシーンファイル

*.wav

  • LPCMの音声ファイル

いろいろファイルはあったけど、多分Prefabs/unitychan.prefabがゲームオブジェクトとしてのルートなはず。これをドラック&ドロップすればいい?

f:id:mattaclj:20140412212719p:plain

ドラック&ドロップしたけど、真っ黒。

Q2. UnityChanを表示するには?

真っ黒なので、キャラに光を当てたい. Readme_Ja.pdfを読むと、すでにDirectional light for UnityChan.prefabがあるから、それを使えと書いてある。