From 7f275062abfdf48ab28cf6372aca08955d63ee4c Mon Sep 17 00:00:00 2001 From: ousttrue Date: Tue, 29 Nov 2022 18:52:05 +0900 Subject: [PATCH 1/3] =?UTF-8?q?=E8=A6=AA=E6=8C=87=E3=81=AE=E5=B7=A6?= =?UTF-8?q?=E5=8F=B3=E3=81=8C=E9=80=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Vrm10Runtime/ControlRig/Rigs/XR_EXT_hand_tracking.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Assets/VRM10/Runtime/Components/Vrm10Runtime/ControlRig/Rigs/XR_EXT_hand_tracking.cs b/Assets/VRM10/Runtime/Components/Vrm10Runtime/ControlRig/Rigs/XR_EXT_hand_tracking.cs index a563e59bd..e5b29cfd1 100644 --- a/Assets/VRM10/Runtime/Components/Vrm10Runtime/ControlRig/Rigs/XR_EXT_hand_tracking.cs +++ b/Assets/VRM10/Runtime/Components/Vrm10Runtime/ControlRig/Rigs/XR_EXT_hand_tracking.cs @@ -34,12 +34,12 @@ namespace UniVRM10 /// /// 親指は XZ 平面45度です。 /// - public static Quaternion LeftThumb = GetRotation((Vector3.forward + Vector3.left).normalized, (Vector3.right + Vector3.forward).normalized); + public static Quaternion LeftThumb = GetRotation((Vector3.forward + Vector3.right).normalized, (Vector3.left + Vector3.forward).normalized); /// /// 親指は XZ 平面45度です。 /// - public static Quaternion RightThumb = GetRotation((Vector3.forward + Vector3.right).normalized, (Vector3.left + Vector3.forward).normalized); + public static Quaternion RightThumb = GetRotation((Vector3.forward + Vector3.left).normalized, (Vector3.right + Vector3.forward).normalized); /// /// VRM-1.0 の T-Pose の定義から各指はX軸と並行です。親指はXZ平面に45度です。 From d72f004cd4d8e1f3ddcc7d2075858fa81c3ff1c8 Mon Sep 17 00:00:00 2001 From: ousttrue Date: Tue, 29 Nov 2022 18:54:08 +0900 Subject: [PATCH 2/3] fix NormalizedLocalRotation logic --- .../Components/Vrm10Runtime/ControlRig/Vrm10ControlBone.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Assets/VRM10/Runtime/Components/Vrm10Runtime/ControlRig/Vrm10ControlBone.cs b/Assets/VRM10/Runtime/Components/Vrm10Runtime/ControlRig/Vrm10ControlBone.cs index f2471e9d4..3a697bf35 100644 --- a/Assets/VRM10/Runtime/Components/Vrm10Runtime/ControlRig/Vrm10ControlBone.cs +++ b/Assets/VRM10/Runtime/Components/Vrm10Runtime/ControlRig/Vrm10ControlBone.cs @@ -92,8 +92,7 @@ namespace UniVRM10 { get { - var delta = Quaternion.Inverse(_initialControlBoneGlobalRotation) * ControlBone.localRotation * _initialControlBoneGlobalRotation; - return InitialControlBoneLocalRotation * delta; + return _initialControlBoneGlobalRotation * Quaternion.Inverse(InitialControlBoneLocalRotation) * ControlBone.localRotation * Quaternion.Inverse(_initialControlBoneGlobalRotation); } } From 432dfb60f0330961858c047d6f3a76e44e1b7a93 Mon Sep 17 00:00:00 2001 From: ousttrue Date: Tue, 29 Nov 2022 19:17:55 +0900 Subject: [PATCH 3/3] fix comment --- .../Vrm10Runtime/ControlRig/Rigs/XR_EXT_hand_tracking.cs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Assets/VRM10/Runtime/Components/Vrm10Runtime/ControlRig/Rigs/XR_EXT_hand_tracking.cs b/Assets/VRM10/Runtime/Components/Vrm10Runtime/ControlRig/Rigs/XR_EXT_hand_tracking.cs index e5b29cfd1..a60bc21e2 100644 --- a/Assets/VRM10/Runtime/Components/Vrm10Runtime/ControlRig/Rigs/XR_EXT_hand_tracking.cs +++ b/Assets/VRM10/Runtime/Components/Vrm10Runtime/ControlRig/Rigs/XR_EXT_hand_tracking.cs @@ -9,14 +9,13 @@ namespace UniVRM10 /// * https://registry.khronos.org/OpenXR/specs/1.0/html/xrspec.html#_conventions_of_hand_joints /// * https://github.com/vrm-c/vrm-specification/blob/master/specification/VRMC_vrm-1.0/tpose.ja.md /// + /// OpenXR は右手系なのに対して Unityは左手系です。 + /// この Rig が期待するボーンの値は、XR_EXT_hand_tracking の Joint の値を Z軸反転で座標変換したものです。 /// public static class XR_EXT_hand_tracking { /// /// up vector と forward vector の外積により空間を算出して、回転を得ます。 - /// - /// OpenXR は右手系なのに対して Unityは左手系です。 - /// 結果として、X軸が反転することに注意してください。 /// /// ///