対応オブジェクトを作る
今回は以下の2つのオブジェクトがあればOKです。
- ジャイロの対象: Gyro
- カメラ: Camera(デフォルトがあるので作成不要)
対応スクリプトを作る
非VRの時と同じようにスクリプトファイルを作成します。
今回はGyroにだけ設定すれば良いです。
- 起動時にジャイロ機能を有効にする
- ジャイロに応じて回転を与える
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Gyro : MonoBehaviour { Quaternion gyro; void Start () { Input.gyro.enabled = true; } void Update () { gyro = Input.gyro.attitude; transform.rotation = Quaternion.Euler(0, 0, 180) * (new Quaternion(gyro.x, -gyro.y, gyro.z, gyro.w)); } }
Gyro.cs
クォータニオンによる回転処理は理解するのに時間がかかりました。
ややこしいのでここでは割愛します。
詳しいことを知りたい方は是非調べてみてください。
実機で挙動を確認する
PCとAndroidを接続して実機で確認します。
Androidの設定からUSBデバッグを有効にしておきましょう。
USBケーブルでPCとつないで、Unity上でBuild & Runを実行します。
VR解剖図 Androidアプリ
分かり辛いですが、Android実機の傾きにカメラが追従しています。
via www.youtube.com
まとめ
初めてのUnity、初めてのC#でしたが、意外となんとかなりました。
VR界隈も機械学習と同じで情報の更新が早いのでソースの鮮度には気をつける必要があります。
とりあえず最低限の閲覧機能をつけることができました。
全体の流れをつかめたのでこれからは洗練化していきます。
次の目標は塊になっている3Dモデルを、骨ごとに切り分けることですね。
それができたら臓器、筋肉、血管、神経も出力して相対位置を固定。
これで最低限の教材として使えるかなという感じです。
画像解析が適用できるのはまだまだ後ですね。
参考
本記事は個人的に開発しているアプリのこれまでの開発日誌をまとめたものです。
下記以外の参考サイトや開発詳細、トライアンドエラーの様子は以下のサイトを参照してください。
ここには載せませんでしたがPS3コントローラでの操作を試みたりもしています。