Skip to content

Commit ba30544

Browse files
author
Avaer Kazmer
committed
More VRArmIK shoulder cleanup
1 parent 06810c6 commit ba30544

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

vrarmik/VRArmIK.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import ArmTransforms from './ArmTransforms.js';
33
import ShoulderTransforms from './ShoulderTransforms.js';
44
import ShoulderPoser from './ShoulderPoser.js';
55
import VectorHelpers from './Utils/VectorHelpers.js';
6+
import PoseManager from './PoseManager.js';
67

78
class ArmIKElbowSettings
89
{
@@ -196,13 +197,17 @@ function toPositiveEulerAngle(n)
196197
eulerAngles.y = 0;
197198

198199

200+
const shoulderRightOffset = this.target.position.sub(this.upperArmPos);
201+
if (PoseManager.Instance.flipZ) {
202+
shoulderRightOffset.applyQuaternion(new Quaternion().setFromAxisAngle(new Vector3(0, 1, 0), Math.PI));
203+
}
199204
const shoulderRightRotation = new Quaternion().setFromRotationMatrix(
200205
new THREE.Matrix4().lookAt(
201206
new Vector3(),
202-
this.target.position.sub(this.upperArmPos),
207+
shoulderRightOffset,
203208
new Vector3(0, 1, 0)
204209
)
205-
).multiply(new Quaternion().setFromAxisAngle(new Vector3(0, 1, 0), (this.left ? -1 : 1) * Math.PI/2));
210+
).multiply(new Quaternion().setFromAxisAngle(new Vector3(0, 1, 0), (PoseManager.Instance.flipZ ? -1 : 1) * (this.left ? -1 : 1) * Math.PI/2));
206211

207212
// const shoulderRightRotation = new Quaternion().setFromUnitVectors(this.armDirection, targetShoulderDirection);
208213
this.setUpperArmRotation(shoulderRightRotation);

0 commit comments

Comments
 (0)