GenerativeArt—MadewithUnity
ティーチャートレーニングデイ
「認定3Dアーティスト編」
ユニティ・テクノロジーズ・ジャパン株式会社
荒川 巧也
1
自己紹介
2
荒川 巧也
ユニティ・テクノロジーズ・ジャパン株式会社所属。
ユニティでは”トレーナー”として主に企業様向けに
Unityに関する導入講義実施や効率的な実装方法
のアドバイスを行っています。
認定3Dアーティスト試験の試験範囲
● 3D オブジェクトのレンダリング 

● ライティングオブジェクトおよび環境 

● パーティクルとエフェクトの操作 

● 基本的なアプリケーション要素のプロトタイプ作成 

● 2D アセットの操作 

● アニメーションの操作 

● ソフトウェア開発チームでの作業

3
今回使用するUnityのバージョンなど
Unityのバージョン: Unity2019.4.8f1を使用します。
使用する素材:
※以下のURLからダウンロード可能です。
https://drive.google.com/drive/folders/1fDfjpN32wqdnOk1Ebw5MA8lptTrJnLGU?u
sp=sharing
アニメーション機能の講習で利用しているアニメーションファイルは別途Asset Storeなど
からダウンロードお願いいたします。
4
プロジェクトを作成します
5
アニメーション機能について
6https://docs.unity3d.com/ja/2018.4/Manual/AnimationOverview.html
アニメーションファイルを繋いでアニメーションを再生させる。
“ステート”とも呼ばれます。
アニメーションをブレンドするとより自然なアニ
メーション遷移を作れます。
アニメーションをAnimator Controllerに追加してアニメーションファイルを追加。
そして状態遷移をつなぎアニメーション制御します。
アニメーションブレンド
Unityにおけるアニメーション再生の流れ
アニメーションが再生される流れは①→②→③→④
① Animation Clip
各アニメーションデータ
   ↓
② リターゲット
ヒューマノイド(人間)型キャラクターのボーン構造を取得。Humanoid型であれば腕の長さなどキャラクターの大きさに関係なくアニ
メーションを使うことができる。
   ↓
③ スキニング
ウェイト情報やボーン情報によってモデルの頂点を動かす。
これをきっかけにキャラクターの頂点情報が動きます。   ↓
   ↓
④ アニメーション再生
Animation Clipの中身について
どのように動かキーフレームが時間軸で打たれており、これはボーン構造がどのように動くべきなのかが定義されている。こ
の情報によってアニメーションが再生される。
Avatarについて
 アニメーションを再生させる際、体のどの部分でアニメーションを再生するか体の各部分 ごとに管理すること ができます。これを設定する
ことにより例えば「銃を撃って走って いる」というシチュエーションがある場合、ア二メーションを上半身だけ銃で撃っている アニメーションを
再生して下半身は走っているアニメーションを再生するといった2つの アニメーションを体のパーツ事に合わせて再生することができます。
Avator Maskについて
この状態だと体全体に1つの設定アニメーションが同時再生されるようになります。 Avatarを確認して体全体が緑の場合(左)はアニメーショ
ンが体全体に適用される。上半身が赤く表示(右)されている場合は上半身にはアニメーションが適用されない。
       体全体にアニメーションが適用                下半身のみにアニメーションが適用
Ethanを追加する
11
Ethanを追加する
12
Animator Controllerを追加する
13
Animator Controllerを開く
14
Animatorを開く
15
*追加するアニメーションを”Humanoid”に変更
追加したアニメーションの Animation TypeをHumanoidに変更する
17
IdleアニメーションをAnimatorControllerに追加します
Loop Timeにチェックを入れる
Runningを追加して状態遷移するように設定する
  ↑
float型”Speed”
↑Runningのアニメーション
PlayerControllerを追加
using UnityEngine;
using System.Collections;
public class PlayerController : MonoBehaviour
{
public float rotationSpeed = 100.0f;
Animator anim;
// Use this for initialization
void Start()
{
anim = GetComponent<Animator>();
}
// Update is called once per frame
void Update()
{
float move = Input.GetAxis("Vertical");
float h = Input.GetAxis("Horizontal");
anim.SetFloat("Speed", move);
transform.position += transform.forward * move * Time.deltaTime;
transform.Rotate(0, rotationSpeed * h * Time.deltaTime, 0);
}
}
PlayerControllerを追加する
↑アニメーションするようになりました。
アニメーションLayerを追加する
アニメーションレイヤーについて
Unity では Animation Layers を使用すると、複雑なステートマシンを体の各部分ごとに
管理することができます。例えば、下半身のレイヤーで歩きやジャンプを管理して、上半
身のレイヤーではオブジェクトを投げたり、撃ったりする、といった場合です。
アニメーションレイヤーは Animator Controller の左上角にある Layers Widget から管
理することができます。
アバターマスクを追加する
Avator Maskとは?
アニメーションを上書きするところは緑。
アニメーションを上書きしないところは
クリックして赤にする。
腕の部分だけアニメーションを上書きしてみます
パンチアニメーションで上書きする。
アニメーションの上書き設定について
BaseLayerの状態遷移が表示される
UpperLayerのMotionにアニメーションを追加するとアニメーションを上書きすることがで
きます
上書きに使うアニメーションを追加する
*UpperLayer上で設定します。
クリックする。
アバターマスクを追加する
アニメーションを再生して確認する
Runningを再生するとPunchするようになります
上半身と下半身で違うLayerを準備して再生する
新しいレイヤーを追加する
上半身と下半身で違うAvatorを利用する
下半身用のAvatorを作る
下半身を有効化
LowerLayerの設定を行う
Kickアニメーションを追加する
36
上半身でパンチして下半身でキックするようになる
下半身がキックするようになりました。
ここまでできたらPrefab化する
38
Animation Riggingとは
Animation Rigging パッケージには、リグコンストレイントのライブラリが入っています。このライブラリは、実行時にプロシージャルな
モーションを作成する際に利用できます。実行時にプロシージャルなモーションを作成することを一般に、「ランタイムリギング」と言い
ます。コンストレイントは、リグと呼ばれるグループに分けてセットアップされます。リグの構築は、アセットの「Animator」ルートに割り
当てられる Rig Builder コンポーネントで行われます。
https://blogs.unity3d.com/jp/2019/05/14/introducing-the-animation-rigging-preview-package-for-unity-2019-1/
Animation Riggingを使ってみる
Animation Rigを追加する
41
Ethanを追加する
42
Rig Setupをクリックする
ボーンを表示されるようにします
ボーンが表示されました
Ethanを開いてRig1が追加されているのを確認
Multi-Aim Contraintを追加する
Multi-Aim Constraintを追加
操作したい部分(今回は頭)を追加
Aim Axis -Yにする
49
* ここの向きは使用するキャラクターによって
向きが変わります。
追っかけるオブジェクトを作っていきます
目で追っかける空のオブジェクトを追加
追いかけるオブジェクトを表示する
頭が動くようにする
←頭が追っかけるオブジェクトを設定する。
ターゲットの方向を向くようになります
胴体は前を向いている・・
胴体も振り向かせるようにする。
胴体も動くようにする
複製する
名前を変更。
胴体も動くようになりました
Animation Riggingのサンプルシーンについて
おすすめのアニメーションの資料
https://www.slideshare.net/UnityTechnologiesJapan/unity-119555796
ワークショップ1
ユニティちゃんを動かしてみましょう。
59
シェーダーを変更しておく
60
UnityChanController
61
using UnityEngine;
using System.Collections;
public class UnityChanController : MonoBehaviour
{
public float rotationSpeed = 100.0f;
Animator anim;
void Start()
{
anim = GetComponent<Animator>();
}
void Update()
{
float move = Input.GetAxis("Vertical");
float h = Input.GetAxis("Horizontal");
anim.SetFloat("Speed", move);
transform.position += transform.forward * move * Time.deltaTime;
transform.Rotate(0, rotationSpeed * h * Time.deltaTime, 0);
if (Input.GetKeyDown(KeyCode.Space))
{
anim.SetBool("Jump", true);
}
else
{
anim.SetBool("Jump", false);
}
if (Input.GetKeyDown(KeyCode.Z))
{
anim.SetTrigger("Salute");
}
}
}
Timeline + Cinemachine
62
TimeLineについて
プログラミング無しで、時系列にアニメーション、オーディオ、カメラワーク、パーティクル
の発生などを視覚的に再生設定を行う機能。
ゲーム内ムービーや映像作品を作ることが簡単に行える。
63
ステージを配置していく
64
* 今回はunitypackageを用意しました。
サンプルシーンを開く
65
UnityCarを配置していく
66
UnityCarのマテリアルを設定する
67
UnityCarを配置する
68
Ethanを配置する
69
EhtanをUnityCarの後ろに配置する
70
Default Playablesを配置する
71
Timeline Windowを表示する
72
空のオブジェクトを追加する
TimelineWindowの”Create”する
73
空のオブジェクトを追加する
74
Z軸方向が前になるようにする。
空のオブジェクトを配置していく
75
Timeline Windowが有効化されます
76
Transform Tween Trackを追加する
77
EthanがPathに沿って動くようにする
78
表示を秒数表示にする
79
Pathを追加する
80
TimelineにPathを設定していきます
81
EthanがPathに沿って動くようになる
82
アニメーショントラックを追加する
83
アニメーションファイルを追加する
84
Running アニメーションを追加する。
Apply Scene Offsetsを選択する
85
アニメーションして歩くようになる
86
ここでアニメーションを一時停止する
87
一時停止状態のTransform情報をコピーする
88
ドアノブの所に手が来るように位置を調整する。
Transformの値をコピーする
一時停止状態でアニメーションを切る
89
Ethanが手を伸ばしたところのTransform情報をDoorOpenに追加する
90
TimelineにPathを追加する
91
腕の位置が調整されました
92
そのままだと顔が出てしまう
93
顔が出ている。
きちんと座るように調整する
94
Pathを追加する
95
Ethanが座ったPositionをEnteringCarにペースト
Timelineにパスを追加する
96
EndLocation EnteringCarに設定する
97
Timelineに新しくPathを追加する
98
EnteringCarだけのパスを追加する
99
車のドアが開くアニメーションを作成する
空のオブジェクトDOORLを追加
100
ドアを開くことができるようにDOORLを調整する
101
DOORL用のアニメーションを作成する
102
Animation Windowを開きます
クリックする。
Doorのアニメーションを作成する
104
↑ ドアが閉まっている状態 ↑
ドアが閉まっている状態
ドアが開いている状態
Doorのアニメーションを追加する
105
UnityCarをキーボード操作できるようにする
106
Ethanが置いていかれる。
EthanをUnityCarの子供オブジェクトにする
107
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Timeline;
public class TimeLineManager : MonoBehaviour, ITimeControl
{
public GameObject man;
// 何度も呼ばれる
public void SetTime(double time)
{
}
// クリップ開始時に呼ばれる
public void OnControlTimeStart()
{
man.transform.parent = GameObject.Find("UnityCar").transform;
}
// クリップから抜ける時に呼ばれる
public void OnControlTimeStop()
{
}
}
TimelineManagerのManにEthanを追加
108
Control Trackを追加する
109
Source GameObjectにTimelineを設定する
110
EthanがUnityCarの子供オブジェクトになった
111
UnityCarを動かしても一緒に移動します
112
ワークショップ
unityCarを動かして車から出るアニメーションを追加してみましょう
113
Cinemachineを追加する
114
Virtual Cameraを追加する
115
Cinemachineを追加する
116
Cinemachineトラックを追加する
117
↑ Cinemachineトラックを追加する。
↓CinemachineのVirtual Cameraを追加する。
再生するとVirtual Cameraが切り替わる
118
Dolly Track With Cartを追加する
119
トラックのパスを引いていく
120
DollyCartのSpeedを”1”にする
121
Virtual Cameraを追加する
122
DollyCartにぶら下げます。
Virtual CameraのLookAtにunityCarを設定する
123
Dolly TrackをTimelineから制御するようにする
124
↑Activation Trackを追加する
Dolly Trackがアクティベーション化されて動きます
Virtual CameraがUnityCarを映すようになる
125
このような形になる
126
MP4の動画として出力します
Unity Recorderを追加する
Recorder Trackを追加する
128
Recorder Trackを設定した
129
出力する形式を設定する
130
動画ファイルとして出力される
131
RenderTexture
Render Texture (レンダーテクスチャ) は、ランタイムに作成、更新される特殊な テクス
チャ です。使用するには、まず新しいレンダーテクスチャを作成し、カメラ の 1 つを指定
して、そこにレンダリングします。次に、通常のテクスチャのように、マテリアル のレン
ダーテクスチャを使用できます。
132
https://docs.unity3d.com/ja/2018.4/Manual/class-RenderTexture.html
RenderTextureと動画の連動
RenderTextureを追加します
RawImageを追加する
RawImageコンポーネントにRenderTexture追加
RawImageにVideoPlayerを追加する
Render Textureを追加する。
動画ファイルを追加する
対応フォーマットはこちらをご確認ください。
https://docs.unity3d.com/ja/2019.4/Manual/VideoS
ources-FileCompatibility.html
RawImageに動画が表示されました
カメラの映像をUIに表示する
140
RawImageを追加する
RenderTextureを新しく追加してRawImageに追加
141
カメラを追加する
142
追加したRenderTextureをCameraに追加する
143
UIにカメラの映像が描画される
144
カメラの映像が表示される
ProBuilderについて
145
プリミティブにない形を簡単に追加できる
146
ProBuilderでモデリング入門
147https://www.youtube.com/watch?v=IeUNvMAA84k
Unity Studentプランのご紹介
https://store.unity.com/ja/academic/unity-student
Unity Student には、5 シートの Unity Teams Advanced が付属します。
148
もっとUnityを学びたい方へ
https://unity.com/ja/products/unity-learn
149

Unityティーチャートレーニングデイ -認定3Dアーティスト編-