UE4-OSCの送受信を行う

# UE4でOSCの送受信を行う

## UE4-OSCをダウンロード
[UE4-OSC](https://github.com/monsieurgustav/UE4-OSC)

デフォルトでは、以下の設定となっている。
受信ポート:8000
送信ポート:8000
送信先IP:127.0.0.1

## UE4でOSCプロジェクトを作成する

**新規プロジェクト作成**
1. 新規プロジェクト
2. 空のプロジェクト
3. スターターコンテンツ無し
4. フォルダを選択
5. 名前[OSCSample]
6. [プロジェクトを作成]を押下
![20160526_Qiita_UE4OSC_001.png](https://qiita-image-store.s3.amazonaws.com/0/111261/0f1ffd45-1e66-c8ee-6305-1baf09c32a7f.png)

新規プロジェクト作成時にC++ではなく、ブループリントを選択する
Pluginsフォルダを作成して、OSCフォルダをコピー。
以下のdialogが表示されて、Pluginがビルドされない。
Missing or incompatible modules OSC plugin - woud you like to disable it? You will no longer be able to open any assets create using it.
![image](https://qiita-image-store.s3.amazonaws.com/0/111261/5a1568fc-395f-7016-3028-a0fe3fe0a805.png)

エラーが出た場合は、UE4-OSCの送受信を行う V15.0対応 を参照
http://qiita.com/gansaibow/items/28bf6bf15f62b30cbebf


**プロジェクトを閉じる**
![20160526_Qiita_UE4OSC_003.png](https://qiita-image-store.s3.amazonaws.com/0/111261/e630d789-14c8-1937-233e-729917d7c3a0.png)

**作成したプロジェクトのフォルダに移動して[Plugins]フォルダを作成する**
![20160526_Qiita_UE4OSC_003.png](https://qiita-image-store.s3.amazonaws.com/0/111261/631aadba-271c-b6ff-fe90-eda41931b739.png)

**UE4-OSCのOSCフォルダをPluginsフォルダにコピーする**
![20160526_Qiita_UE4OSC_004.png](https://qiita-image-store.s3.amazonaws.com/0/111261/6cba5b49-c9cf-3d6b-3337-7253ed0fe8a4.png)

**[OSCSample]プロジェクトを開きなおす**
![20160526_Qiita_UE4OSC_005.png](https://qiita-image-store.s3.amazonaws.com/0/111261/54aa493a-3340-9de6-b90f-d444eb8da4c7.png)

**[UE4Editor-OSC.dll]がないのでRebuildしますか？というダイアログが表示されるので、[はい]を選択する**
![20160526_Qiita_UE4OSC_006.png](https://qiita-image-store.s3.amazonaws.com/0/111261/ed2f4f9b-0ce0-3e3c-2a94-9bd60b727f51.png)

**進捗バー**
![20160526_Qiita_UE4OSC_007.png](https://qiita-image-store.s3.amazonaws.com/0/111261/95d05078-2723-e7a4-8e15-8741124a362a.png)

## 受信用のブループリントクラス OSCReceiver を作成

**OSCReceiverを作成する**
1. [Content]配下に[Blueprints]フォルダを作成
2. [Blueprints]フォルダに[ブループリントクラス]作成
3. 親クラス[アクター]
4. 名前を[OSCReceiver]と設定する
5. [OSCReceiver]をブループリントエディタで開く

**コンポーネント OSC Receiveを追加する**
![20160526_Qiita_UE4OSC_008.png](https://qiita-image-store.s3.amazonaws.com/0/111261/718a7d32-040e-9aff-6678-0a2d66c94703.png)

**OSCの受信イベント [On OSC Receiver]を追加する**
![20160526_Qiita_UE4OSC_009.png](https://qiita-image-store.s3.amazonaws.com/0/111261/4ee35eb9-ec7a-f44f-8942-9af503192e3e.png)

**変数Targetの追加**
変数名：Target
変数の種類：アクターのリファレンス
公開に設定
![20160526_Qiita_UE4OSC_010.png](https://qiita-image-store.s3.amazonaws.com/0/111261/e017ead5-80f5-60cd-6198-97cda7fe8ba1.png)

**OSCから受信した値でTargetの位置を変更する処理**
![20160526_Qiita_UE4OSC_011.png](https://qiita-image-store.s3.amazonaws.com/0/111261/15af5597-24ec-bfea-8cd1-26585b960c77.png)

**CubeとOSCReceiverを画面にドラッグ**
![ｓ20160526_Qiita_UE4OSC_012.png](https://qiita-image-store.s3.amazonaws.com/0/111261/d27a2c51-ee02-5297-3e6c-c852d5f12913.png)

![ｓ20160526_Qiita_UE4OSC_015.png](https://qiita-image-store.s3.amazonaws.com/0/111261/a4d6045a-65f7-a5de-1e15-4bf57f64e340.png)


![ｓ20160526_Qiita_UE4OSC_013.png](https://qiita-image-store.s3.amazonaws.com/0/111261/22b482ce-0943-71ad-c7f4-f7064cab3367.png)

**画面に追加したOSCReceiverのTargetに[Cube]を設定する**
![ｓ20160526_Qiita_UE4OSC_014.png](https://qiita-image-store.s3.amazonaws.com/0/111261/d7f0d2c2-3ee9-f2de-f4c2-4c3fb8452645.png)

**Processingから値を送信する**
参照
http://qiita.com/gansaibow/items/fcae51cff691b6b84905

**Processingから送信される値でCubeを動かすことが出来る**
![ｓ20160526_Qiita_UE4OSC_016.png](https://qiita-image-store.s3.amazonaws.com/0/111261/9f865414-a49b-5f49-8038-8db0cd015a93.png)

## 送信用のブループリントクラス OSCSender を作成
1. [Blueprints]フォルダに[ブループリントクラス]作成
2. 親クラス[アクター]
3. 名前を[OSCSender]と設定する
4. [OSCSender]をブループリントエディタで開く

**イベントティックからSendOSCを呼ぶようにする**
![ｓ20160526_Qiita_UE4OSC_025.png](https://qiita-image-store.s3.amazonaws.com/0/111261/54f8a45e-be8a-d0fe-93ca-3c8a8e04b943.png)

**変数を追加する**

変数名：Source
変数の種類：アクターのリファレンス
公開に設定

変数名：Address
変数の種類：Name
デフォルト値：/Position
![ｓ20160526_Qiita_UE4OSC_026.png](https://qiita-image-store.s3.amazonaws.com/0/111261/11927b8b-6f3c-5c8e-e6e9-e0ef3fffe46e.png)

**OSCSenderを画面に追加する**
![ｓ20160526_Qiita_UE4OSC_028.png](https://qiita-image-store.s3.amazonaws.com/0/111261/5ada647a-ba98-12f9-4fe8-7f4e92e091f6.png)

**Sourceにターゲットを設定する**
[UE4 Timelinesでコンポーネントを動かす](http://qiita.com/gansaibow/items/92e4fd03aa1bfcff9cb3)で作成したコンポーネントを指定した

![ｓ20160526_Qiita_UE4OSC_029.png](https://qiita-image-store.s3.amazonaws.com/0/111261/03fdccbf-5967-185e-dabc-d1976dda1f8c.png)

**UE4からの送信を確認する**
![ｓ20160526_Qiita_UE4OSC_030.png](https://qiita-image-store.s3.amazonaws.com/0/111261/ca1b2d42-a2b4-7ed1-b7fb-eae77863b652.png)

## 送受信するPortを変更する
Portをデフォルト値から変更したい場合の手順。

(プロジェクトフォルダ)/Plugins\OSC\Source\OSC\Private
OscSettings.cpp を修正する
![image](https://qiita-image-store.s3.amazonaws.com/0/111261/976aafbf-5f4c-f96c-a2f7-93889f5fd2a7.png)

Pluginを再ビルドするために、以下のフォルダを削除する
(プロジェクトフォルダ)/Plugins\OSC\
- Binaries
- Intermediate

![image](https://qiita-image-store.s3.amazonaws.com/0/111261/6dee4184-f557-ef99-7a1e-e29814c2209a.png)

プラグインのバイナリー情報がプロジェクト直下のフォルダに含まれているので、こちらもフォルダを削除する
(プロジェクトフォルダ)/
- Binaries
- Intermediate

フォルダを削除後に、プロジェクトを開き直す

![image](https://qiita-image-store.s3.amazonaws.com/0/111261/98559db3-ae98-45a3-a613-ec4a2567ac56.png)

はいをクリック
![image](https://qiita-image-store.s3.amazonaws.com/0/111261/aceb9b6e-a1a8-2f07-8ded-1d2cebd8111d.png)

進捗ダイアログの表示
![image](https://qiita-image-store.s3.amazonaws.com/0/111261/c3550950-2d11-b6cc-7035-17f0bcae823e.png)