最初にKinect v2プラグインが必要です。リンクは後で提供されます...
[新しいバージョンのプラグインにより、以下の機能が改善されました。再確認する必要はありません。ありがとうございます]
ピットに入る際のヒント:
他のジェスチャー認識とは異なり、キャラクターが関節をキャプチャするのを見るだけでよく、不必要なトラブルを避けるために、カメラがキャラクターにできるだけ正面を向くようにします。斜視の関節点距離の判断が不正確になる現象を避けてください。
既存の公式の既存のコードを参照してください:
AvatarController の既存の関数では、垂直オフセットverticalOffsetと前方および後方オフセットの調整関数のみが見つかりました。
また、一部の衣服では、完全にフィットするように水平オフセットを調整する必要がある場合があります。
まず
、垂直オフセットを達成するための公式の方法を検討しましょう。
if (verticalMovement && verticalOffset != 0f && bones[0] != null && bones[3] != null)
{
Vector3 dirSpine = bones[3].position - bones[0].position;//脖子关节点和脊椎关节点的向量
targetPos += dirSpine.normalized * verticalOffset;//向量模长与偏移量的乘积。实现垂直方向的偏移
}
前後方向のオフセットの実現:
if (forwardOffset != 0f && bones[0] != null && bones[3] != null && bones[5] != null && bones[11] != null)
{
Vector3 dirSpine = (bones[3].position - bones[0].position).normalized;//脖子关节点和脊椎关节点的向量模长
Vector3 dirShoulders = (bones[11].position - bones[5].position).normalized;//左右肩关节点向量模长
Vector3 dirForward = Vector3.Cross(dirShoulders, dirSpine).normalized;//两个向量模长叉乘,得到垂直于两条向量的新向量,计算模长。
targetPos += dirForward * forwardOffset;
}
私は公式から与えられた2つのオフセット実装方法を見てきましたが、実装方法はすでに知っていると思います。
水平方向の2つのジョイントポイントを見つけ、ベクトルの係数の長さを計算し、それに水平オフセット値を掛けます。
しかし、公式は水平方向のベクトル係数の長さ、Vector3 dirShoulders = (bones[11].position - bones[5].position).normalized;//左右肩关节点向量模长
具体的なコードを目に見えない形で与えました:
[Range(-0.5f, 0.5f)]
public float horizontalOffset = 0f;
if (verticalMovement && horizontalOffset != 0f && bones[5] != null && bones[11] != null)//可以自定义一个水平方向的bool值,我这里直接用的是垂直方向的bool值(verticalMovement)
{
Vector3 dirShoulders = (bones[11].position - bones[5].position).normalized;
targetPos += dirShoulders.normalized * horizontalOffset;
}
この時点で、関数が追加されます。
大量の衣服がある場合は、AvatarControllerスクリプトで3つのオフセットパラメータ(verticalOffset、horizontalOffset、forwardOffset)をすべて設定し、AvatarScalerスクリプトでボディスケーリング係数4パラメータ(bodyScaleFactor、bodyWidthFactor、armScaleFactor、legScaleFactor)を設定することをお勧めします。保存する。パラメータを調整して保存し、別の服に変更するたびに値を割り当てます。