こういうことをやります
ペンの先をキャンバスに当てたらインクが出る部分はすでにできているとして、
・手のどの位置でペンを持つように設定したらいいのか
・ハンドトラッキングの揺れを抑えるにはどうしたらいいのか
などをテストしていきます。
先行事例
Added Doodling with Hand Tracking and Finger Physics for #OculusQuest 🙌✏️#VirtualReality #VR #Oculus pic.twitter.com/l06EXMFhuS
— Dennys Kuhnert | Acetylan (@DennysKuhnert) 2020年2月9日
指に対するペンの位置と角度
指のpositionはこれで取れます
OculusQuest ハンドトラッキングSDKから、指Boneの情報を取得し分析する - Qiita
より引用
これをもとにペンの位置を設定していきます。
1:単純な中間
位置:人差し指の付け根と先端のまんなか
角度:人差し指の付け根と先端の間
指の角度によってはクルクル回りますが、ペンを持つような指の形にしたら、位置はいい感じになります。
ちなみに実際にペンを持った状態でも、ある程度指を認識しますが、精度は下がります。
2:Good!
位置:人差し指の付け根と先端の間
角度:人差し指の付け根から先端のをつないだ方向
いい感じ
人差し指をまっすぐ伸ばしても書ける。
3:認識回数とか゚所を減らしたver
位置:人差し指付け根のみ
角度:人差し指の付け根から先端のをつないだ方向(親指と人差し指がくっついた時点の角度で固定)
2のとき、位置は関節二つをもとに計算してたけど、一つをもとにしたらブレが抑えられるのではないかという考えのもと、あまり動かなそうな人差し指の付け根だけを位置の親にした。
が、変わらずぶれた。
角度は2の時の角度のとり方だが、2がUpdate文の中で常に角度を更新していたのに対し、3では親指と人差し指を付けたときをトリガーとして、その時の2の角度で固定するようにした。
再びトリガーが引かれたら角度が更新される。
そんなに変わらないかも。
ブレ対策
ハンドトラッキングはじっとしていても小刻みに震える。
その対策を考える
位置の小数点第2以下を切り捨てる
だめだった
うまい方法があったら別記事で書きたい
おまけ:ブレの英語は?
小刻みに揺れることを英語ではなんていうんだろう?誰かtwitterでつぶやいてたけど見つけられない。
見つけたけど、動作のかくつきだった。ちょっと違うかな?
動作のカクつきを英語でぐぐるときの単語は stutter, lagging, jitter あたり
— こりん@VR (@korinVR) 2020年2月7日
wiggleとかかな?
その他
指先で書くもできる。
メリットとデメリット
コントローラーを使わずにハンドトラッキングで平面に文字を書くメリットとデメリット
メリット
・重くない(コントローラーを持たなくてい)
・シンプルになる(コントローラーの使い方を考えなくていい)
デメリット
・フィードバックがない(コントローラーは振動でフィードバックしている)
・ぶれる(Oculusハンドトラッキングの精度の問題。Hololens2やLeapMotionだったらどうなのか)