Programming in VRChat

VRChat でのプログラミングについて調べたことの書き溜め

VRC_IKFollower

アバターでのパーティクルなど、アバターのボーン移動に場所は追従しつつワールド座標系が必要な時に使うコンポーネント

  • ドキュメント: https://docs.vrchat.com/docs/vrc_ikfollower
  • 設定と効果
    • アバターのボーン構造の中で参照したいボーン位置に子オブジェクトをつける
    • そのオブジェクトに VRC_IKFollower コンポーネントを追加する
    • このオブジェクトの Transform のうち位置(Position)はボーンに従うが、回転(Rotaion)は追従しなくなる
    • ボーンから少しずれた位置を利用したい場合には:
      • さらに子オブジェクトを作り、そのオブジェクトの位置を調節してオフセットさせる
      • VRC_IKFollower を付けたオブジェクトの Position は上書きされるので、ここでオフセットを付けてもうまくいかない
  • 考察
    • ドキュメントは、フレームごとに Position を変えると言っている。
    • すると素朴に考えると「ランタイムではそのオブジェクトをボーン構造から取り出して、ワールドに静置されたオブジェクトの子に付け替える。VRC_IKFollower は元居たボーンを覚えていて、毎フレームIKの計算が終わった後にボーンと Position が同一になるように値をコピーしてくる」というような実装になっていそうだ。
    • ドキュメントで Scale については何も言及されていない。常識的に考えて 1.0 なのだろうが。