Ich habe endlich einen Weg gefunden, dies zu tun und es funktioniert ganz gut. Ich werde versuchen, das so einfach wie möglich zu halten.
Das Hauptproblem, das ich hatte, war, einen Wert der Skala von den Kinect-Verbindungen zu erhalten, die auf die Größe meines Charakters anwendbar sein würden.
Um dies zu lösen, habe ich ein Kalibrierverfahren, das die folgenden Aktionen ausführt:
- die Benutzer Stellen Sie eine T Position zu halten.
- Liest die Länge des linken Arms des Benutzers (kinect)
- Liest die Länge des linken Arms des Charakters im Spiel.
- Vergleichen Sie beide Längen und finden Sie eine relative Skala (zB: wenn die linken Armlängen vom Kinect zurückgegeben werden, wenn 4 und der Charakter einen linken Arm von 2 hat, dann ist die Skala 4/2 = 2)
Ich hatte zuerst ein kleines Problem, aber endete es zu lösen. Die von Kinect in Unity zurückgegebenen Werte von Vector3 beziehen sich auf den Ursprung des Kinect (Kamera). Dafür musste ich etwas lineare Algebra verwenden, um das zu lösen. Da sowohl Vector3 (linke Hand als auch linke Schulter) relativ zum Ursprung der Kinect sind, musste ich sie subtrahieren, um die linke Armlänge zu finden.
Dank der linearen Algebra, wissen wir, dass A + C = B, daher können wir sagen, dass B - A = C. In unserem Fall, LeftHand - LeftShoulder = Left Arm. Durch Anwenden dieses Prinzips auf den Vector3, der von dem Kinect empfangen wurde, haben wir nun den Vektor, der den linken Arm darstellt. Alles, was wir tun müssen, ist die Eigenschaft "Magnitude", und wir haben jetzt seine Länge.
Das fasst es ziemlich zusammen.