前回の続き。Oculus Developersドキュメントの「User Input」は、その文量の半分を 6DoFコントローラのベストプラクティスに割いている。
6DoFコントローラにおけるBest Practices
優れたhand registration
- hand registrationの実装には時間をかける価値がある
- registrationが適切だと、仮想手により仮想空間と直感的にインタラクトできる
- registrationが不十分だと「不気味の手の谷」(uncanny hand valley)現象を引き起こす
- proprioception(*1)の不一致によってユーザーを不快にさせることも
registrationに必要なこと
- 手の位置と向きが仮想と現実とで一致していること
- わずかな誤差であっても不十分なregistrationにつながる
適切にregistrationする手順
- シーン内にコントローラのモデルを配置する
- その中心点(its pivot)が正しいことを確実にする: HMDを下から覗き込みながらコントローラを顔面付近で動かす
- 実装が適切であれば、コントローラが現実世界から仮想世界にシームレスに受け継がれる
- 次に、コントローラを包むように手をモデル化
- 最後にコントローラのモデルを隠す
registrationの簡単なテスト方法
- 「手の甲」テスト
- 仮想世界で片側の手の甲を人差し指でなぞり、その感触が仮想世界上の手の描画と一致しているかどうか
- 参考: Implementing Quality Hands With Oculus Touch
肉厚(fleshy)でリアルな手のモデル
- 現実の手と乖離があればユーザーを不快にする可能性がある
- 手の外観をカスタマイズできるようにする
- 大きな手や、オブジェクトを装着した手は「その中に自分の手がある」と解釈するため脳が受け入れやすい
- 逆にあまりに小さいと混乱を招く
- 半透明や、ロボット型の手は良い例: 性別、年代、人種、民族性に依存しない
手と物体との交差
- 仮想世界で手と物体とが交差した際に、仮想手の動きを止めないこと
- これを行うと、トラッキングが失われたように、不快感を与える
- リアルな仮想手の場合、物体と交差する際には半透明の手に置き換える
- これによりトラッキングの継続性を維持し、同時に対象を操作できないことを示唆できる
手のアニメーションを避ける
- registrationには脳が仮想手を自身の手と思い込むことが必要
- 実際の手の動作に反した動き/アニメーションは不快感を与える
- 例外は、銃の発射に伴う反動のように、仮想世界におけるユーザー操作の結果として起こる瞬間的なアニメーションはOK
DON’T: 前腕および肘のレンダリング
- proprioception(*1)の繊細さゆえ、腕のシミュレートは困難
- 不正確ならば無いほうがマシ: 手首より上は描画しないことを推奨
DON’T: 物理抵抗の大きなインタラクション
- コントローラは重さに対するモーメントや物理抵抗を再現できない
- 物理抵抗を伴うインタラクション(重い石、レバー)には現実味を与えられない
- 物理抵抗を感じないインタラクション(電気のスイッチ)は現実的に感じられる
- インタラクション設計においては、物体の見かけの重さを考慮に加えて、物理抵抗のなさが現実的に感じられるよう模索をすること
要注意: 両手を伴うインタラクション
- 重い箱を持ち上げる、長い器具を両手で持つ、といった操作は違和感につながりやすい
- これら操作で両手の間に感じるべき、硬さによる制約(the rigid constraints)は仮想世界に存在しないため
仮想世界の物体を掴む
- 物体特有の持ち方に従って掴むこと: 銃ならばグリップを、コーヒーカップなら取手を
- 拾い上げる際、正しい持ち方にsnapする必要がある
- 持ち手をずらす必要のある物体は非推奨(例: 卓球ラケット): 手の入れ替え作業が不自然に感じるため
- 物体を拾って握る場合は、Gripボタンの使用を推奨する
DON’T: 床から物体を拾わせる
- センサー類は机の上に配置されることが多く、床から拾い上げようと屈むことでそれらを塞ぐ可能性があるため
- 手の届かない物体に対する作用にはDistance Grabが効果的
取っ手のない物体
- ボールなど明らかな取っ手が存在しない場合、Gripボタンが押されている限り手に吸着しているべき
- offsetや向きは任意で良い(物体のsnapや位置修正は必要ない)
- Gripボタンがおされた時点のpositional offsetのままで手に吸着させる
投げる操作
- コントローラで期待通りに物体を投げることは期待以上に難しい
- 物体によって投げ方が異なる(例: フリスビー、紙飛行機)
- フリスビーや紙飛行機それぞれに現実味を与えるなら、それぞれで物理法則を分けることが必要
- 投げる操作において、持つ/離すにGripボタンを使用する際は注意が必要
- Gripボタンを使用すると、ユーザーが実際にコントローラ本体を投げてしまう恐れがある
- 勢いを要する投げる操作には、Triggerボタンの使用を検討すること
触覚フィードバック
- 触覚フィードバックで物体とのインタラクションを示唆することで、より現実味が増す
- proprioception: 四肢(自分の手足)が物理空間上のどこに位置しているかを、見ずとも脳が感知すること
hand registrationや、proprioceptionといった単語について、適切な日本語訳を見つけられなかったのでそのまま記載した。このドキュメントを読未進めていけば、その意味に対する推測は自ずと定まってくると思う。
前回の冒頭で触れた「The Climb」のアンチパターンについて、前者「隣接するボタンへの可逆的/非可逆的機能の割り当て」については、ここでは見出せなかった。
一方で、推奨事項の「手の外観はカスタマイズできるように」については、見事にThe Climbがイントロで提供しているものだった。(筆者がThe Climbに魅了された要因のひとつでもあった)
どの指針も一長一短では得難いノウハウで、非常に勉強になった。