プレイヤーの動きを反映する、つまりモーションキャプチャーの手段についてあれこれ試しているのですが、「HTC VIVE」では足に付けるトラッカーが外れて飛んで行ってしまいそうでどうも怖く、「Perception NEURON」は装着に時間がかかるのがどうも面倒な気がしました。
一番いいのは、何も装着せずに動きを反映してくれるのが良いなと思い、「OpenPose」を試してみることにしました。
「OpenPose」というのは、今流行りの「深層学習」と使って人物のポーズを可視化してくれる手法です。
静止画を読み込ませても良いですし、動画を読み込ませることもできます。
「ポーズを可視化」というのは具体的には、画像や動画にリアルタイムでボーンを重ねてくれる形になります。
こんな感じですね。
![](http://lab.sinfonia.biz/wp-content/uploads/2019/06/openpose.png)
以下のブログなどが分かりやすく紹介してくれています。
参考
https://tsunotsuno.hatenablog.com/entry/openpose
で、このOpenPoseでボーンを検出させ、その情報をVR空間のプレイヤーアバターの動きに反映すればよいのではないかということで、試してみようと思った次第です。
「OpenPose」は最近になってUnity用のプラグインもできたそうです。
https://github.com/CMU-Perceptual-Computing-Lab/openpose_unity_plugin
また、UnityでOpenPoseを利用する手順については以下のブログ記事で紹介されていたので、これを参考に試してみました。
【2019.4最新】UnityでOpenPoseが使えるまでのインストール(約2時間)
まずはUnityに読み込む以前に、「OpenPose」の正確さや速度がどのようなものだか試そうと思い、VisualStudio2017でビルドした段階で、動作検証してみました。
Webカメラで私の動作を映し、それをOpenPoseで解析させます。
その様子がこれです。
黒いシャツを着ている私の動作と、モニター内に映っている「OpenPose」の出力画面。
ご覧の通りで、時間差があります。
時間差を計ってみたら、おおよそ0.2~0.3秒くらい。
Webカメラで読み込んだ画像に、OpenPoseで解析したボーン画像を重ねて出力するという処理、ということは、おそらく解析のところで時間がかかるとしか思えない、という判断です。
実は機械学習や深層学習のモデルは少し以前にいろいろ試してみていたのですが、やはり、結果が出るまでにどうしても多少の遅延が感じられてしまったのを記憶しています。
コンピュータ性能はいずれ向上していくわけではありますが、今の段階では、この類のコンテンツにこの遅延はちょっと痛すぎるため、やはり別な方法を考えた方がよさそうです。