[UE4] 新しいVRのテンプレートでグレイマンの手を使う

# はじめに
UnrealEngineの4.27でVRのテンプレートが新しくなりましたが、これまでのテンプレートで使われていたグレイマンの手の代わりに、コントローラが表示されるようになっています。
これまでと同じようにグレイマンの手を使えるようにしてみました。
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">UnrealEngineの新しいVRのテンプレートでグレイマンの手を使う<a href="https://twitter.com/hashtag/UE4?src=hash&amp;ref_src=twsrc%5Etfw">#UE4</a> <a href="https://twitter.com/hashtag/VR?src=hash&amp;ref_src=twsrc%5Etfw">#VR</a> <a href="https://t.co/sweTQ9ueiv">pic.twitter.com/sweTQ9ueiv</a></p>&mdash; 高浜 (@SatoshiTakahama) <a href="https://twitter.com/SatoshiTakahama/status/1477071617922842625?ref_src=twsrc%5Etfw">January 1, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
# 環境
Windows10
UnrealEngine 4.26.2及び4.27.2

# 作り方
・UnrealEngine 4.26.2及び4.27.2の両方で、VRテンプレートを使用してプロジェクトを作成しておきます。
・4.26.2のプロジェクトを開いて、コンテンツブラウザ上でBP_MotionControllerを選択して右クリック=>アセットアクション=>移行を選択、送り先コンテンツフォルダで4.27.2のプロジェクトのContentフォルダを選択します。
・4.27.2のプロジェクトを開いて、コンテンツブラウザ上でBP_MotionControllerをダブルクリックします。
・HandMeshを選択しコピーします。
・コンテンツブラウザ上でVRPawnをダブルクリックします。
・MotionControllerLeftとMotionControllerRightの下に貼り付け、それぞれ名前をHandMeshLeft,HandMeshRightに変更します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215278/d5853b43-7e8a-f478-b41e-53d131836793.png)
・HandMeshLeftとHandMeshRightのトランスフォームの位置を(0,0,0)に修正し、HandMeshLeftだけ拡大・縮小のZを-1に修正します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215278/91dcbf0c-c1db-1f39-ee7f-cca467b94329.png)
・MotionControllerLeftとMotionControllerRightのDisplay Device Modelのチェックを外します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215278/971c32d4-9697-f2f1-8d49-f79e5d85bd51.png)
・VRPawnのイベントグラフに、手を握ったり開いたりする動作を追加します。
イベントグラフで、InputAction Grab LeftとInputAction Grab Rightのコメントが入っている箇所です。
既存のノードの手前にSequenceを追加して、実行されるようにしておきます。
追加後のInputAction Grab Leftは以下のようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215278/44c33d01-35a4-8e8a-9416-6766aa09f885.png)
Pressedに接続されている方の拡大表示。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215278/e43e88ca-9153-04e7-8222-10355b08b172.png)
Releaseedに接続されている方の拡大表示。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215278/011bc348-2ccd-b3ee-c046-653c70f6befc.png)
・BP_MotionControllerはコンパイルエラーが発生するので削除します。

# 参考資料
・[VRテンプレート](https://docs.unrealengine.com/4.27/ja/Resources/Templates/VRTemplate/)
新しいVRのテンプレートの公式ドキュメントです。

# 追記1
物をつかんだままだと移動できない現象が発生するのですが、以下のようにすると対策できます。
・VRPawnで変数GrabedActorを追加し、イベントグラフでつかんだ時にセットしておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215278/78fbe3d1-8169-b954-4b6e-43b1e14933f7.png)
・VRPawnの関数TeleportTraceでテレポートのラインを作成している箇所で検出対象外にGrabedActorを設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215278/a3a20435-c384-f342-94f1-cbe0ea6ba434.png)

# 追記2
以下のように設定することで、PC上のビューポートでVRPawnを動かすことができます。
・Inputでキーボードで移動するための操作を割り当てます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215278/dd63e1a2-6881-035a-b67d-6107cde30f2a.png)
・VRPawnのイベントグラフに、起動時に手の位置を変更する処理を追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215278/8f7a8846-da4d-b7db-7e1b-0cd9e2f83073.png)
・VRPawnのイベントグラフに、キーボードで移動する処理を追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215278/3f3f9136-6ede-5be7-d764-8eaad906c9c0.png)

あとは以下のように動かすことができます。
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">PC上のビューポートで確認できるモードできました<a href="https://twitter.com/hashtag/UE4Study?src=hash&amp;ref_src=twsrc%5Etfw">#UE4Study</a> <a href="https://t.co/HmfCkhpR8n">pic.twitter.com/HmfCkhpR8n</a></p>&mdash; 高浜 (@SatoshiTakahama) <a href="https://twitter.com/SatoshiTakahama/status/1487719124499562496?ref_src=twsrc%5Etfw">January 30, 2022</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>