14
21

More than 5 years have passed since last update.

LeapMotionで3Dモデルの手を動かす

Last updated at Posted at 2018-07-30

はじめに

はじめまして。都内の大学院でVRの研究をしているichita(@ichita_cs)と申します。学部までは材料系の学科にいました。
LeapMotionで3Dモデルの手を動かそうとしたら色々と詰まったので備忘録です。ポンコツなミスが目立ちますが、初学者の方の参考になれば幸いです。

参考資料

@aflkさんの記事を参考にさせて頂きました。時間が経って色々と変わっているところがあるのでそこを書き足していきます。

必要なもの

やり方

シーンを開く

Assets→LeapMotion→Core→Examples→Capsule Hands (Desktop)のシーンを開く(※今回はデスクトップモードを使用)

Cubeを手の子オブジェクトにする

HandModel→RigidRoundHand_L→Palmの下にCubeを配置し、その下に更にCube(以下、子Cube)を配置する。(※利き手の逆の手に配置しないと後述のパラメータ調整でめちゃめちゃ作業しづらい。) 位置を概ねLeapMotionの手の位置に合わせる。

3Dモデルを配置

今回はこれを用いた。インポート後PrefabをSceneに配置し、Leap Motion Controllerが胸の前あたりに来るように位置を合わせる。
2.PNG

モデルにIKを入れる

Hierarchy内の3Dモデル(今回はBasic_BanditPrefab)に"Full Body Biped IK"のコンポーネントを追加。Right Arm→Right Hand Effector→Targetに子Cubeを適用し、Position Weight, Rotation Weightを1にする。

手の設定

再生しながら、子CubeのPositionとRotationを調整して3Dモデルの手とLeap Motionの手を合わせる。
再生を止めるとPositionとRotationが元に戻るので、再生中にInspector→Transform→Copy Componentし、再生を止めてからPaste Component Valuesする。
合わせるとこんな感じ。
07261731.gif

指の設定

Rigged Finger

3Dモデルの指の第三関節(根元)にあたるGameObjectにRigged Fingerを設定し、Finger Type: TYPE_(指の名称)
Element 1: 第三関節のGameObject
Element 2: 第二関節のGameObject
Element 3: 第一関節のGameObject
を設定する。
5.PNG

Rigid Hand

RigidRoundHand_L→Rigid HandのElement0~4に、先ほどRigged Fingerを設定したGameObjectを適用(親指~小指の順)。
7.PNG

動かしてみる

知ってた。
07261748.gif

再設定

Model Finger PointとModel Palm Facingの設定がまだでした。この値はモデルによって異なるようなので、再生しながら値を変えて合わせていく。(上記の画像は既に合わせてある。)

完成

今度こそ完成。なんか怪しい感じもしますが…。原因が突き止められたら追記します。
07261834.gif

おわりに

間違いやアドバイス等あればご指摘頂けると幸いです。ありがとうございました。

14
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
21