# Unreal Engine Vol.001: Building UE4 Scenes to work with Touchdesigner
**Unreal Engine 4.25.3 を使います。インストールしておいてください**
## UE4のプロジェクトを作る
https://youtu.be/0t-DJ3OAJ1E?t=1
Epic Game Launcherから新しいプロジェクトを作る
**最初にやるおすすめの設定**
`Edit > Editor Preferences` から、
- `Level Editor > Viewports > Controls` の `Invert Middle Mouse Pan` `Invert Right Mouse Dilly YAxis` にチェックを入れる → 視点移動の方向を他のDCCツールと合わせる
- `General > Performance > Editor Performance` の `Use Less CPU when in Background` のチェックを外す → UE4 Editorが最前面でないときにUE4 EditorのFPSが落ちるのを防ぐ
- `General > Appearance > User Interface` の `Use Small Tool Bar Icons` のチェックを入れる → ツールアイコンを小さくして画面効率を上げる
`Editor > Project Settings` から、
- `Engine > Input > Mobile > Always Show Touch Interface` のチェックを切る
- `Engine > General Settings > Framerate > Use Fixed Frame Rate` のチェックを入れて、`Fixed Frame Rate` にFPSを固定したい数値を入れる
- Playボタンの下向き矢印をクリックで出てくるメニューから、`Current Camera Location` を選択する

**レイアウトの変更**
初期状態はこういう感じ

- Output Logのウィンドウを作る
- Content Browser の表示を設定する
- Content Browser は2つあると便利なのでもう一個作っておく
- Place Actors は常に表示しておく必要もないので適当な所にドックしておく

特に画面のサイズが限られたノートなどではもうちょっと工夫できるとおもいます
満足のいくレイアウトができたら今後のために保存しておくといいと思います

## 用語、注意点
### アセット
UE4では大抵のものがアセットファイルとして保存されています
アセットは `Content Browser` から見れて、プロジェクトフォルダの `/Content` と1:1で対応しています
ただし、Exprolerから不用意に `/Content` のファイルをいじるとファイル構造が壊れてしまう時があるのでできるだけ `Content Browser` からいじるのが吉です
### Actor
World Outlinerに配置できるオブジェクト
メッシュやライトなど目に見えるもの以外にも動画ファイルやその他色々な機能をもったものがあります
:::info

通常 `Place Actors` ウィンドウからドラッグ&ドロップか、`Content Browser` から配置できる
:::
### Component
Actorには色々な種類があると書きましたが、そのほとんどは `Component` の組み合わせでできています
なので、既存のActorを使いたいんだけど一箇所だけ他のActorの機能が欲しい… となった場合、欲しい機能の Component を追加すると用途にあった形でActorをカスタマイズできます
:::info

`Add Component` ボタンでComponentを追加できる
:::
### Map
Mapはひらたく言うと `World Outliner` の状態を保存したファイルです
色々な Actor を配置してシーンを作ったぞとなった時には、その Actor の状態はMapに保存されています
なので、基本今のレイアウトでいいんだけどちょっとだけ変更した別のシーンが欲しい… となった時には .map ファイルを複製して別のシーンとして作ることができます
### BluePrint
BluePrintはノードベースのプログラミング環境で、グラフィカルにロジックを組むことができます
ロジックだけでなく、マテリアルやなんかその他色々も同じようなインターフェイスで編集できるようになっています
### 座標系
UE4の座標系はちょっと特殊で、+Xが前、+Zが上の左手系のセンチメートル単位の座標系になっています
TouchDesignerは+Zが前、+Yが上の左手系のメートル座標系なので、座標系を合わせる時は色々回転させて100倍スケールをかけないといけない時があるので注意が必要です
:::info

:::
### フォルダ構成
UE4のファイルを人に渡す時にものすごくファイルサイズが重くなってしまう時があります
UE4では色々な中間ファイルやキャッシュファイルを生成するので、それらを消すと結構軽くなります。
- DerivedDataCache
- Intermediate
- Saved
あたりは消しても再生成されるので問題ないフォルダです
より詳しくは → [こちら](https://github.com/github/gitignore/blob/master/UnrealEngine.gitignore)
:::info

:::
:::info
:bulb: **Hint:** UE4のアセット命名規則について
https://github.com/akenatsu/ue4-style-guide/blob/master/README.jp.md
:::
## OSCでUE4とTouchDesignerを繋ぐ
### UE4で OSC Plugin を使ってみる
[OSC プラグインの概要](https://docs.unrealengine.com/ja/Engine/Audio/OSC/index.html)

1. Actor の BluePrint Class を作る
2. 受信するための OSCServer を作る
3. OSCServer にイベントを追加する
という手順になります
:::info
UE4、TDともに `OSC_TEST` にサンプルがあります
:::
### OSCActor Pluginを使う
https://youtu.be/0t-DJ3OAJ1E?t=294
:::info
UE4、TDともに `OSCACTOR_TEST` にサンプルがあります
:::
## TouchDesignerからOSC経由で Static Mesh Instance を動かす
https://youtu.be/0t-DJ3OAJ1E?t=556
:::info
UE4、TDともに `OSCACTOR_TEST` にサンプルがあります
:::
## TouchDesignerのカメラでUE4を動かす
https://youtu.be/0t-DJ3OAJ1E?t=1119
:::info
UE4、TDともに `OSCACTOR_TEST` にサンプルがあります
:::
## TouchDesinger、UE4間でテクスチャの入出力をする
https://youtu.be/0t-DJ3OAJ1E?t=1353
:::info
UE4、TDともに `SPOUT_TEST` にサンプルがあります
:::
## デモシーンの解説
:::info
UE4、TDともに `DEMO` にサンプルがあります
:::