Intel RealSenseのサンプルをUnityで動かす

とある案件でリアルタイムの人体＆物体検知を行うため、デプスカメラをいくつか比較してみたところ、要件的にRealSenseのD435が良さそうだったのでまずはUnityで動かすところまでをやってみました。
途中、試行錯誤しながらやったので不要な手順などあるかもしれませんが、参考になれば幸いです。

# 環境

- OS: Windows 10
- CPU: Intel Core i7 3.20GHz 
- GPU: NVIDIA RTX2060
- メモリ: 16.0GB

# はじめに

別PCでのセットアップ時の備忘録も兼ねて、記憶のある限り素のWindowsから動かす手順で書いていきます。
まずは取り急ぎ動かすのに必要な手順をざっとまとめます。

# Unity側の準備

## 入れるもの

- Unity HUB & Unity 2017.4.33f1
- Visual Studio Community 2019

## 目次とざっとした流れ

1. [Unityアカウント作成、ライセンス購入](#unityアカウント作成ライセンス購入)
2. [Unity HUBをインストール](#unity-hubをインストール)
3. [Unityをインストール](#unityをインストール)
4. [Visual Studioをインストール](#visual-studioをインストール)（スキップ化）

### Unityアカウント作成、ライセンス購入
下記のURLからアカウントの作成と、利用用途に応じたライセンスを選択しUnity HUBをダウンロードします。

**Unity** 
https://unity.com/ja


### Unity HUBをインストール

インストーラーが起動するので流れに沿ってインストールします。

**Unity HUB**
https://unity3d.com/jp/get-unity/download


### Unityをインストール

現在の最新バージョンは、安定板が2019.2.10f1で、ベータが2019.3.0b8です。
ただ、上記のバージョンではRealSenseのサンプルをビルド時にエラーが出てビルドできなかったので、サンプルが作られたバージョンに近い**2017.4.33f1**をインストールしていきます。
コードを書き換えれば新しいやつでもいけるかもですが未検証です。（2019.11現在）
インストール時に選択するモジュールは念のため .NET Scripting Backendを入れてみました、他はデフォルトのままです。

### Visual Studioをインストール

こちらはなくても平気ですが、あったほうが便利なので入れていきます。

**Visual Studio 2019**
https://visualstudio.microsoft.com/ja/downloads/


# RealSense側の準備

## 入れるもの

- Intel RealSense SDK 2.0
- librealsense v2.29.0
- CMake 3.16.0-rc2
- Git 2.23.0（なくても平気）

## 目次とざっとした流れ
1. [RealSenseを購入](#realsenseを購入)
2. [SDKをインストール](#sdkをインストール)
3. [CMakeをインストール](#cmakeをインストール)
4. [Gitをインストール](#gitをインストール)（スキップ化）
5. [librealsenseをダウンロード](#librealsenseをダウンロード)
6. [librealsenseをCMake](#librealsenseをcmake)
7. [realsense2.dllをコピペ](#realsense2.dllをコピペ)
8. [Unityサンプルを起動する](#unityサンプルを起動する)

### RealSenseを購入

普通にアマゾンやスイッチサイエンスで購入できます。
僕が購入した時は国内だと割高だったのでIntelの公式サイトから購入しました。

**Intel RealSense D435**
[Amazon](https://amzn.to/331538S) / [Intel ](https://store.intelrealsense.com/buy-intel-realsense-depth-camera-d435.html)

### SDKをインストール

こちらのページから「Download SDK for Windows 10」を選択してインストールを進めます。
インストールが完了したら、RealSenseをPC側のUSB3.0の入力端子と接続し、`/tools/realsense-viewer.exe`を起動します。すると実際にデプスとRGBカメラの動作が確認できます。
必要あればD435のファームウェアのアップデートを行います。

**RealSense SDK 2.0**
https://www.intelrealsense.com/developers/


### CMakeをインストール

WindowsにCMakeをインストールします。こちらの記事が大変分かりやすいです。
https://qiita.com/East_san/items/aff4f7907aedabe6da47

### Gitをインストール

続いてGitもインストーラーから入れていきます。
下記の記事がとても参考になります。
https://qiita.com/toshi-click/items/dcf3dd48fdc74c91b409

### librealsenseをダウンロード

下記のリポジトリをダウンロードします。Gitを入れている場合は`git clone`が良いかなと思います。

```
$ git clone https://github.com/IntelRealSense/librealsense
```

### librealsenseをCMake

そしてできた `/librealsense` フォルダの中に  `/build` フォルダを作成します。
その後、GitHubのUnity Wrapperの中にある説明の通りにCMakeを行います。
https://github.com/IntelRealSense/librealsense/tree/development/wrappers/unity

```
$ mkdir build
$ cd build
$ cmake .. -DBUILD_CSHARP_BINDINGS=ON -DBUILD_UNITY_BINDINGS=ON -DBUILD_SHARED_LIBS=ON -DDOTNET_VERSION_LIBRARY=3.5 -DCMAKE_GENERATOR_PLATFORM=x64
```
完了すると、`/librealsense/build/wrappers/unity/..` が生成されます。
失敗する場合は一度再起動と、コマンドプロンプトを管理者で実行すると成功するかもしれません。

### realsense2.dllをコピペ

次に、SDKをインストールしたフォルダの中にあるdllファイルを、librealsenseのビルドしたフォルダにコピペしていきます。32bit版Windowsをお使いの方はx86フォルダの中にあるほうをお使いください。

```
この2ファイルをコピペ
[インストールフォルダ]/Intel RealSense SDK 2.0/bin/x64/Intel.Realsense.dll
[インストールフォルダ]/Intel RealSense SDK 2.0/bin/x64/realsense2.dll
↓
/librealsense/build/wrappers/unity/Assets/RealSenseSDK2.0/Plugins/[ここにコピペ]
```

### Unityサンプルを起動する

下記の.unityファイルを、2017.4.33f1のバージョンで起動します。
起動時に作成されたバージョンと違うというアラートが出ますが、気にせず起動します。
問題なければ、ビルドが行えUnityからRealSenseの動作が確認できます。

`/librealsense/build/wrappers/unity/Assets/RealSenseSDK2.0/Scenes/StartHere.unity`


以上です。