public void setUp() { getScripts(); leftHand.SetActive(true); RiggedHand script = leftHand.GetComponent <RiggedHand>(); script.handModel = transformation; if (stimulus == StimulusType.st) { handPoints.emptyPath(); handPoints.path = PathManager.generateNewPath(transformation == 2); handPoints.firstPoint = 0; handPoints.displayPath(transformation); isClose = false; pathIsOver = false; } /* * GameObject sphere = GameObject.CreatePrimitive(PrimitiveType.Sphere); * sphere.transform.position = pos.position ; * sphere.transform.parent = pos.transform; * sphere.transform.localScale = new Vector3(0.001f, 0.001f, 0.001f); */ }
// Use this for initialization void Start() { maoGrafica = this.GetComponent <RiggedHand> (); posicaoDedos [0] = posicaoDedosDedao; posicaoDedos [1] = posicaoDedosIndicador; posicaoDedos [2] = posicaoDedosMedio; posicaoDedos [3] = posicaoDedosAnelar; posicaoDedos [4] = posicaoDedosMinimo; }
void Update() { RiggedHand leftRig = leftHand.GetComponent <RiggedHand>(); RiggedHand rightRig = rightHand.GetComponent <RiggedHand>(); BuildRectangle(leftRig, rightRig); if (Input.GetKey("g")) { EnablePhysics(); } if (Input.GetKey("r")) { Reset(); } }
public void FixedUpdate() { if (graphicsEnabled) { UpdateHandRepresentations(); if (ikActive) { if (leftActive && leftHand != null) { RiggedHand l = leftHand as RiggedHand; vrIK.solver.leftArm.IKPosition = leftHand.GetPalmPosition(); vrIK.solver.leftArm.IKRotation = leftHand.GetPalmRotation() * l.Reorientation(); vrIK.solver.leftArm.positionWeight = 1.0f; vrIK.solver.leftArm.rotationWeight = 0.0f; leftTransform.Enabled = true; } else { vrIK.solver.leftArm.positionWeight = 0.0f; vrIK.solver.leftArm.rotationWeight = 0.0f; leftTransform.Enabled = false; } if (rightActive && rightHand != null) { RiggedHand r = rightHand as RiggedHand; vrIK.solver.rightArm.IKPosition = rightHand.GetPalmPosition(); vrIK.solver.rightArm.IKRotation = rightHand.GetPalmRotation() * r.Reorientation(); vrIK.solver.rightArm.positionWeight = 1.0f; vrIK.solver.rightArm.rotationWeight = 0.0f; rightTransform.Enabled = true; } else { vrIK.solver.rightArm.positionWeight = 0.0f; vrIK.solver.rightArm.rotationWeight = 0.0f; rightTransform.Enabled = false; } } } }
public PinchGesture(RiggedHand hand) { this.hand = hand; }
public Vector3 center = Vector3.zero; // pointing center public TriangleGesture(RiggedHand left, RiggedHand right) { this.left = left; this.right = right; }
void BuildRectangle(RiggedHand leftRig, RiggedHand rightRig) { Vector3 leftIndex = leftRig.fingers[1].GetTipPosition(); Vector3 leftThumb = leftRig.fingers[0].GetTipPosition(); Vector3 leftMiddle = leftRig.fingers[2].GetTipPosition(); Vector3 leftRing = leftRig.fingers[3].GetTipPosition(); Vector3 leftPinkey = leftRig.fingers[4].GetTipPosition(); Vector3 rightIndex = rightRig.fingers[1].GetTipPosition(); Vector3 rightThumb = rightRig.fingers[0].GetTipPosition(); Vector3 rightMiddle = rightRig.fingers[2].GetTipPosition(); Vector3 rightRing = rightRig.fingers[3].GetTipPosition(); Vector3 rightPinkey = rightRig.fingers[4].GetTipPosition(); bool firstMove = true; if (VectorEqual(leftIndex, leftThumb) && VectorEqual(leftIndex, leftMiddle) && VectorEqual(leftMiddle, leftRing) && VectorEqual(leftRing, leftPinkey) && VectorEqual(rightIndex, rightThumb) && VectorEqual(rightIndex, rightMiddle) && VectorEqual(rightMiddle, rightRing) && VectorEqual(rightRing, rightPinkey)) { Vector3 midpoint = (rightIndex + leftIndex) / 2; Vector3 diff = rightIndex - midpoint; Vector3 projectedVectorZ = Vector3.ProjectOnPlane(diff, Vector3.up); float angleZ = (diff.y / Math.Abs(diff.y)) * Vector3.Angle(diff, projectedVectorZ); Vector3 projectedVectorX = Vector3.ProjectOnPlane(diff, Vector3.back); float angleX = -(diff.z / Math.Abs(diff.z)) * Vector3.Angle(diff, projectedVectorX); if (!float.IsNaN(angleX) && !float.IsNaN(angleZ)) { pubX = angleX; pubZ = angleZ; this.gameObject.transform.localRotation = Quaternion.Euler(0, angleX + lastX, angleZ + lastZ); } firstMove = false; finalMove = false; } else if ((VectorEqual(leftThumb, leftIndex) || VectorEqualRight(rightThumb, rightIndex)) && VectorClose(leftIndex, rightIndex) && leftHand.activeSelf && rightHand.activeSelf) { if (creating == false) { creating = true; if (cube != null) { objects.Add(cube); } SnapCollisions(); if (type == "cube" && color == "brick") { cube = Instantiate(cubeBrickPrefab, this.gameObject.transform); cube.transform.localScale = new Vector3(.1f, .1f, .1f); } else if (type == "cube" && color == "red") { cube = Instantiate(cubeRedPrefab, this.gameObject.transform); cube.transform.localScale = new Vector3(.1f, .1f, .1f); } else if (type == "cube" && color == "yellow") { cube = Instantiate(cubeYellowPrefab, this.gameObject.transform); cube.transform.localScale = new Vector3(.1f, .1f, .1f); } else if (type == "cube" && color == "blue") { cube = Instantiate(cubeBluePrefab, this.gameObject.transform); cube.transform.localScale = new Vector3(.1f, .1f, .1f); } else if (type == "sphere" && color == "brick") { cube = Instantiate(sphereBrickPrefab, this.gameObject.transform); cube.transform.localScale = new Vector3(.1f, .1f, .1f); } else if (type == "sphere" && color == "red") { cube = Instantiate(sphereRedPrefab, this.gameObject.transform); cube.transform.localScale = new Vector3(.1f, .1f, .1f); } else if (type == "sphere" && color == "yellow") { cube = Instantiate(sphereYellowPrefab, this.gameObject.transform); cube.transform.localScale = new Vector3(.1f, .1f, .1f); } else if (type == "sphere" && color == "blue") { cube = Instantiate(sphereBluePrefab, this.gameObject.transform); cube.transform.localScale = new Vector3(.1f, .1f, .1f); } cube.transform.rotation = Quaternion.Euler(0, 0, 0); } } else if (VectorEqual(leftThumb, leftIndex) && VectorEqualRight(rightThumb, rightIndex) && !VectorEqual(leftIndex, leftMiddle)) { creating = false; rotating = true; } else if ((!VectorEqual(leftThumb, leftIndex) && !VectorEqualRight(rightThumb, rightIndex))) { creating = false; rotating = false; } if (creating) { Vector3 midpoint = (rightIndex + leftIndex) / 2; Vector3 diff = rightIndex - leftIndex; cube.transform.position = midpoint; cube.transform.localScale = new Vector3(diff.x, diff.y, diff.z); } else if (rotating) { Vector3 midpoint = (rightIndex + leftIndex) / 2; Vector3 diff = rightIndex - midpoint; cube.transform.position = midpoint; Vector3 projectedVectorZ = Vector3.ProjectOnPlane(diff, Vector3.up); float angleZ = (diff.y / Math.Abs(diff.y)) * Vector3.Angle(diff, projectedVectorZ); Vector3 projectedVectorX = Vector3.ProjectOnPlane(diff, Vector3.back); float angleX = -(diff.z / Math.Abs(diff.z)) * Vector3.Angle(diff, projectedVectorX); Vector3 projectedVectorY = Vector3.ProjectOnPlane(diff, Vector3.up); float angleY = (diff.y / Math.Abs(diff.y)) * Vector3.Angle(diff, projectedVectorY); if (!float.IsNaN(angleX) && !float.IsNaN(angleZ)) { cube.transform.rotation = Quaternion.Euler(0, angleX, angleZ); } } if (firstMove && !finalMove) { Vector3 midpoint = (rightIndex + leftIndex) / 2; Vector3 diff = rightIndex - midpoint; Vector3 projectedVectorZ = Vector3.ProjectOnPlane(diff, Vector3.up); float angleZ = (diff.y / Math.Abs(diff.y)) * Vector3.Angle(diff, projectedVectorZ); Vector3 projectedVectorX = Vector3.ProjectOnPlane(diff, Vector3.back); float angleX = -(diff.z / Math.Abs(diff.z)) * Vector3.Angle(diff, projectedVectorX); lastZ += pubZ; lastX += pubX; finalMove = true; } }