Procedural Hand Pose
手がコライダーの形に合わせてぬるぬる掴むように動くアセット
うおおおお猫を撫でられるぞおおお pic.twitter.com/poDP0AylsH
— NASPAPA (@naspapas) 2020年9月29日
I've tried different objects, grabs and gestures. It's not perfect yet but it works quite well#procedural #unity #gamedev pic.twitter.com/9B6biHJwmH
— JorgeJGnz (@jorgejgnz) 2020年8月28日
18ドル。半額の時に買った!
Unityバージョン2019.3.4 or higher
VRで使えるんだろうか?
使えるみたい!てのオブジェクト日をコントローラーの位置にしたらいいだけのはずだもんね!
VR空間でまろんちゃんをナデナデする動画です🌟 pic.twitter.com/IuffcTxPq2
— 八ツ橋まろん🌰Vクリエイター& Vシンガー🌰バーチャルマーケット5スタッフ (@Maron_Vtuber) 2020年9月28日
使う
Unity2019.4.11
Readmeのドキュメントしか使い方が載っていないみたいだが、これもあまり詳しくない気がする・・・
サンプル
ExampleSampleを開いたら銃以外のシェーダーが壊れてた
とりあれずMaterialsフォルダーのマテリアルをStandardにした。
一応手を動かしたら反応した。
どの手を動かせばいいか分からない。
MainCameraのScriptがMissingになってる・・・
何がついてたんだ・・・
つかまれるもの
サンプルシーンにある、つかまれるもの
球と銃とフェンスとカード
モデルにはColliderとRigidbodyが必要
必要条件
ProceduralHandPoseと互換性のあるオブジェクトのためには、コリダーを持つRigidbodyでなければなりません。
ProceduralHandPoseは、ボーンがオブジェクトに接触しているときに制御するために衝突検出を使用します。そのためには
コライダーがメッシュにフィットするほど、ポーズはより正確になります。
あとPosePointModelとPosePointControllerというスクリプトもいるみたい
手の構造
プレハブ
一番上にはPosableHandControllerスクリプトがある
左右のHandの下には3つのオブジェクトがある。Master,Ghost,Model
手のモデルは二つ見える。MasterとGhostは実態を持っている・・・
pdfのドキュメントによるとこんな感じ
•ゴーストハンド:これはポーズをとるハンドです。 マスターハンドの位置/回転、ポーズポイントの位置/回転、リジッドボディの位置/回転/スケール、ポーズポイントのモデル、ジェネレーターの構成に従って、リアルなポーズを見つけようとします。
•マスターハンド:このハンドは、グラブをシミュレートする初期状態を定義します。 この手を好きなように回転/移動でき、ポーズの生成に影響します。 ゴーストハンドはマスターからトランスフォームをコピーするため、マスターのボーンを個別に移動すると、ゴーストハンドのボーンが長く/短くなる可能性があります。 指を回転させても、ポーズの生成には影響しません。
•PosePoint:このポイントは、ゴーストハンドが到達しようとするゴールまたは目的地を定義します。
PosePointはModelのこと???
Masterを動かせばいいみたい。実際実行するとmasterだけになる
ModelについているPosableHandModelのPosePointに、つかまれるオブジェクトにつけたPosePointControllerをセットして初めて動く!
上の処理をすると、サンプルシーンと同じように二つモデルが表示されてしまう。
説明通りMasterを動かすとGhostもそれに合わせて動く。
あとオブジェクトにつけたPointのほうを動かしても動く
よくわからん~~~
二つも手が表示されてるのおかしいし、結局VRで使うにはどれを動かしたらいいんだ??
自分のシーンで使う
Prefabのハンドを置く。
今回つかみたいものはこれ。骨喰藤四郎!!!!
コライダーなどはついていなかったので、とりあえず適当につける。
Rigidbodyもつける。isKinematicにチェック
スクリプトを付けるための空のゲームオブジェクトを付ける。
この2つのスクリプトを付ける。
これがついている場所を握っているみたい。Pointを動かしたら手も動いた。
手のModelについているPosableHandModelのPosePointに、つかまれるオブジェクトにつけたPosePointControllerをセット
これで動く・・・けど絶対間違ってるよね~~
二つも手が表示されてるのおかしいし、結局VRで使うにはどれを動かしたらいいんだ??
そういえばMaterialが壊れてたから、全部Standardにしたけど、Ghostは透明だったりしたのかな・・・
VR
XR IntaractionToolkitでコントローラー動かしてみた。
RightHandControllerのしたいhand.Rを置いて実行してみる。
実行すると、コントローラーと手の位置があっていない。なぜかMaster.Rがよく分からない値になっている
これをYだけ-90のままにするといい感じになる
そして手を動かすと、Masterはついてきて、Ghostは刀にくっついて動く
何を間違ったんだ・・・
コライダー自動生成アセット
コライダーの形に沿って動くっぽいので、メッシュに沿ってコライダーを生成してくれるアセットが欲しい
昔使ったやつ。無料!
Cubeとかカプセルとか単純な小ライダーを組み合わせてつける
3年前にMMDにコライダーをつけるのに使ってた・・・
MeshがあるオブジェクトにSAMeshColliderBuilderを付けてProcessを押す
ReducerをMesh、MeshTypeをRawにしたらえっちゃ細かいコライダーができる
子にコライダー付きのGameObjectが生成される
あとrigidbodyがいらないならIsCreateを外す
最後に
なんかうまくいかなかった・・・
なんで壊れてるんだ