private Vector3 GetScale(IPositionGesture gesture) { var gesturePosLeft = gesture.GetGesturePosition(Hand.Left); var gesturePosRight = gesture.GetGesturePosition(Hand.Right); var MinScale = 0.001f; var MaxScale = 1; var scale = gesturePosLeft - gesturePosRight; var scaleX = Mathf.Clamp(Mathf.Abs(scale.x), MinScale, MaxScale) / 10f; var scaleY = 1; var scaleZ = Mathf.Clamp(Mathf.Abs(scale.y), MinScale, MaxScale) / 10f; return(new Vector3(scaleX, scaleY, scaleZ)); }
private Vector3 GetScale(IPositionGesture gesture) { var gesturePosLeft = gesture.GetGesturePosition(Hand.Left); var gesturePosRight = gesture.GetGesturePosition(Hand.Right); var MinScale = 0.001f; var MaxScale = 1; var scale = gesturePosLeft - gesturePosRight; var scaleX = Mathf.Clamp(Mathf.Abs(scale.x), MinScale, MaxScale) / 10f; var scaleY = 1; var scaleZ = Mathf.Clamp(Mathf.Abs(scale.y), MinScale, MaxScale) / 10f; return new Vector3(scaleX, scaleY, scaleZ); }
private Vector3 GetRotation(IPositionGesture gesture) { var gesturePosLeft = gesture.GetGesturePosition(Hand.Left); var gesturePosRight = gesture.GetGesturePosition(Hand.Right); var delta = gesturePosRight - gesturePosLeft; var rad = Mathf.Atan2(delta.z, delta.x); var deg = rad * (180f / Mathf.PI); if (deg < -90) deg += 180; if (deg > 90) deg -= 180; return new Vector3(270, -deg, 0); }
private Quaternion GetRotation(IPositionGesture gesture) { // rotation only supported for cubes, since we use the 3d position for scale otherwise if (!UseUniformScale) { return(Quaternion.identity); } var defaultVector = Vector3.one; var gestureVector = gesture.GetGesturePosition(Hand.Right) - gesture.GetGesturePosition(Hand.Left); var rotation = Quaternion.FromToRotation(defaultVector, gestureVector).eulerAngles; // rotate a bit back so that fingers hold the X-axis of the cube, rather than the corners rotation.x = 0; rotation.y -= 45f; rotation.z -= 45f; return(Quaternion.Euler(rotation)); }
private Vector3 GetRotation(IPositionGesture gesture) { var gesturePosLeft = gesture.GetGesturePosition(Hand.Left); var gesturePosRight = gesture.GetGesturePosition(Hand.Right); var delta = gesturePosRight - gesturePosLeft; var rad = Mathf.Atan2(delta.z, delta.x); var deg = rad * (180f / Mathf.PI); if (deg < -90) { deg += 180; } if (deg > 90) { deg -= 180; } return(new Vector3(270, -deg, 0)); }
private Vector3 GetScale(IPositionGesture gesture) { var gesturePosLeft = gesture.GetGesturePosition(Hand.Left); var gesturePosRight = gesture.GetGesturePosition(Hand.Right); if (UseUniformScale) { var scale = (gesturePosLeft - gesturePosRight).magnitude / 2; scale = Mathf.Clamp(scale, MinScale, MaxScale); return(new Vector3(scale, scale, scale)); } else { var scale = gesturePosLeft - gesturePosRight; var scaleX = Mathf.Clamp(Mathf.Abs(scale.x) - 0.025f, MinScale, MaxScale); var scaleY = Mathf.Clamp(Mathf.Abs(scale.y), MinScale, MaxScale); var scaleZ = Mathf.Clamp(Mathf.Abs(scale.z), MinScale, MaxScale); return(new Vector3(scaleX, scaleY, scaleZ)); } }
private Vector3 GetScale(IPositionGesture gesture) { var gesturePosLeft = gesture.GetGesturePosition(Hand.Left); var gesturePosRight = gesture.GetGesturePosition(Hand.Right); if (UseUniformScale) { var scale = (gesturePosLeft - gesturePosRight).magnitude / 2; scale = Mathf.Clamp(scale, MinScale, MaxScale); return new Vector3(scale, scale, scale); } else { var scale = gesturePosLeft - gesturePosRight; var scaleX = Mathf.Clamp(Mathf.Abs(scale.x) - 0.025f, MinScale, MaxScale); var scaleY = Mathf.Clamp(Mathf.Abs(scale.y), MinScale, MaxScale); var scaleZ = Mathf.Clamp(Mathf.Abs(scale.z), MinScale, MaxScale); return new Vector3(scaleX, scaleY, scaleZ); } }
private Quaternion GetRotation(IPositionGesture gesture) { // rotation only supported for cubes, since we use the 3d position for scale otherwise if (!UseUniformScale) { return Quaternion.identity; } var defaultVector = Vector3.one; var gestureVector = gesture.GetGesturePosition(Hand.Right) - gesture.GetGesturePosition(Hand.Left); var rotation = Quaternion.FromToRotation(defaultVector, gestureVector).eulerAngles; // rotate a bit back so that fingers hold the X-axis of the cube, rather than the corners rotation.x = 0; rotation.y -= 45f; rotation.z -= 45f; return Quaternion.Euler(rotation); }