開発日 : 2022年 11月 25日
ハンドトラッキングによる豊かなインタラクション
Oculus Interaction SDK を使用し、ハンドトラッキングで 物理的なオブジェクトを掴む・押す 、 Unity UI をスクロールする・タップする 機能を実装しました。
調査〜完成まで、 合計3日間で開発 しました。
▼Interaction SDK を使用した開発に関する知見を、下記記事にて紹介させて頂いております。
- Oculus Interaction SDK で作る Hand Tracking
掴む
掴む際の手の形をデータ化することで、 ものの形に沿った掴み表現 を実装しました。
貫通することなく、掴んだまま指を動かすことができます。
ハンドベルには複数パターンの掴み表現を実装し、 左右の手で持ち替える ことができるようにしました。
押す
Interaction SDK は 本来、1本の指でしかボタンを押すことができません 。
現在の Hand Tracking 精度では、複数の指で自在にボタンを押すことが難しい為だと思われます。
しかし「どれくらいの精度で押せるのか?」実際に試してみないことにはわかりません!
今回は各コンポーネントの内容を読み解き、 自分の手で改造し、実験的に実装することにしました 。
その結果「ある程度の運指コントロールができる」ということを実体験として確認することが出来ました。
UI 操作
ハンドトラッキングに対応した Scroll View を実装 しました。
Scroll View 内には タップで操作できるボタン を用意し、伴奏の再生・伴奏の速度変更ができるようにしました。
楽器の演奏
トランペット
マウスピースが口元に来るように構えると音が鳴り、 押しているボタンの組み合わせで音が変化 します。
Hand Tracking 精度の問題でズム―ズにボタンを押し替えられないことを考慮し、ボタンの押し替えを始めてから 0.5 秒間は「ボタンを押し替えた」判定が出ない ように実装しています。(それでも、演奏は難しいです。)
今回使用したトランペットの3Dモデルはピストンが一体になっており、動かせないものでした。 Blender で改変 し、使用しています。
ハンドベル
FixedUpdate メソッド内に Rigidbody.velocity.magnitude を記述し、 動く速度が一定以上になった場合に鳴る ように実装しています。
また、リフレクションプローブを使った金属光沢の表現にもこだわりました。
演奏してみました
せっかくなので、Adobe Illustrator で作成したメモを見ながら演奏に挑戦しました。
この開発自体が実験的な試みということで、温かい目で見て頂けますと幸いです。
ちゅ~る ちゅ~る チャオちゅ~る♪
この曲を口ずさむと、愛猫がしっぽをフサフサに膨らませて嬉しそうに寄ってきます。
愛猫家の多くの方にとって、親しみのあるメロディーなのではないでしょうか。
おわりに
Hand Tracking を使った xR 開発は、デバイスの進歩と共に需要がより高まっていくものと予想されます。
引き続き知識を深め、経験を積んでいきたいと思います。
最後までご覧頂き、ありがとうございました。