HoloLensでウンチくんを落としてみた

# HoloLensでウンチくんを落としてみた

HoloLensアドベントカレンダー17日目の記事です！

## 今年はうんちが流行りましたね～
うんこ漢字ドリルを始めに、ハロウィンフラッシュモブでのうんちヒューマン、ARでうんこ。
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">もくもく会から帰ってからもくもく作ってみました。 <a href="https://twitter.com/hashtag/ARCore?src=hash&amp;ref_src=twsrc%5Etfw">#ARCore</a> <a href="https://t.co/P3Wq6wk1ZP">pic.twitter.com/P3Wq6wk1ZP</a></p>&mdash; Satoshi Maemoto (@peugeot106s16) <a href="https://twitter.com/peugeot106s16/status/934437457642209281?ref_src=twsrc%5Etfw">2017年11月25日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

今日は、Remix 3Dで[ウンチくん](https://www.remix3d.com/details/G009SX0MX5PF?section=remixes)を発見したので、HoloLensでうんちを落とせるようにしたいと思います。（前本さんのウンチ作るぞー！）

## 開発環境
- Visual Studio 2017 (15.2)
- Unity 2017.1.2f1
- MixedRealityToolkit-Unity for Unity 2017.1.2f1 (c82e2c2)
- Microsoft Remix 3D のウンチくん
- Paint 3D

## ウンチくんのダウンロード
１．ブラウザーでRemix 3Dを開きます
![unchi1.PNG](https://qiita-image-store.s3.amazonaws.com/0/63863/128983c5-5b40-3e7e-2533-e4b71dda5bee.png)

２．ウンチくんで検索し、ペイント3Dで編集をクリックします
![unchi2.png](https://qiita-image-store.s3.amazonaws.com/0/63863/3324c3ce-a34b-f519-ffc5-adc9ff2eb092.png)
![unchi3.png](https://qiita-image-store.s3.amazonaws.com/0/63863/f2fe8e22-0a92-47fc-77e2-d274a212386e.png)

３．ペイント3Dのウィンドウを開いたら、メニュー->ファイルのエクスポート->3D FBXをクリックし、保存します。
![unchi4.png](https://qiita-image-store.s3.amazonaws.com/0/63863/4b2292e9-7c0d-f4c6-d705-1cf3d5ba755e.png)
![unchi5.png](https://qiita-image-store.s3.amazonaws.com/0/63863/dd0bea14-8657-d350-db59-0aea8260d69d.png)


## HoloLensでウンチくんを落とす
HoloLensでオブジェクトの落とし方は 吉永さんの[HoloLensハンズオン：AirTap & SpatialMapping編](https://www.slideshare.net/ssuserc0d7fb/arhololensvol2airtap) などが参考になります。

１．Unityを開いて、新しいプロジェクトを作成してください。名前はUnchiKunとしました。
２．先ほど保存したウンチくんをProjectビューに持ってきます。
３．ウンチくんを一度Hierarchyビューに持ってきて、Inspectorビューを次のように設定します。RigidBodyとSphere Colliderを追加しました。Scaleは5とありますが、20くらいがいいです！そのあと、ProjectビューのPrefabsフォルダに移動し、Hierarchyビューのものは削除します。
![unchi7.png](https://qiita-image-store.s3.amazonaws.com/0/63863/db7c1c5c-9ad9-6a5e-9e8c-be7132513051.png)
４．HoloToolkit-Unity-v1.2017.1.2.unitypackageをインポートします。
５．MainCameraを削除し、HoloToolkitのHoloLensCamera、InputManager、SpatialMapping、DefaultCursorをHierarchyビューに持ってきます。
６．空のGameObjectを作成し、名前をGenerateUnchiManagerとします。
７．新しいスクリプトGenerateUnchiManger.csを作成します。コードはこちら。

~~~
  using System.Collections;
  using System.Collections.Generic;
  using HoloToolkit.Unity.InputModule;
  using UnityEngine;

  public class GenerateUnchiManager : MonoBehaviour, IInputClickHandler {

      public GameObject obj;

  	// Use this for initialization
  	void Start () {
          InputManager.Instance.PushFallbackInputHandler(gameObject);
  	}

      public void OnInputClicked(InputClickedEventData eventData)
      {
          GameObject unchi = GameObject.Instantiate(obj);
          unchi.transform.position = Camera.main.transform.TransformPoint(0, 0, 1.0f);
      }
  }
~~~

８．タップしたときに、HoloLensの位置から視線方向に向かって1m離れたところにウンチくんを生成します。（やっぱり1.2mくらいがちょうどいいかも）
９．GenerateUnchiMangerのInspectorビューのobjに先ほど作成したウンチくんのPrefabを設定したら完了です。

実行動画はこちらになります。
[![ウンチくん](https://i.ytimg.com/vi/ViZ8-j8IFCc/2.jpg?time=1513511733255)](https://youtu.be/ViZ8-j8IFCc)

ちなみに[ウンチくんゴールド](https://www.remix3d.com/details/G009SVNK4183)も作りました。
![unchi6.png](https://qiita-image-store.s3.amazonaws.com/0/63863/3e979fc8-c38a-5aa1-e005-cb4a3a87361e.png)

Paint 3Dは便利なので今後も使っていきたいと思います！
Remix 3DがGoogle PolyのようにAPIで呼び出せるとイイですね！