calibration fix
This commit is contained in:
parent
6f1d1acbfb
commit
09747638d8
1 changed files with 12 additions and 3 deletions
|
@ -17,7 +17,8 @@ public class Input
|
||||||
public Vector3 twistCursor;
|
public Vector3 twistCursor;
|
||||||
|
|
||||||
Vector3 mainCalibDir;
|
Vector3 mainCalibDir;
|
||||||
float calibDist;
|
Quaternion mainCalibRot;
|
||||||
|
float calibDist, calibZ;
|
||||||
public void Frame()
|
public void Frame()
|
||||||
{
|
{
|
||||||
oculusInject.Frame(this);
|
oculusInject.Frame(this);
|
||||||
|
@ -28,8 +29,13 @@ public class Input
|
||||||
rig.position = -head.localPosition; // that zeros us out for an offset
|
rig.position = -head.localPosition; // that zeros us out for an offset
|
||||||
rig.position += head.localRotation * Vector3.back * 0.666f;
|
rig.position += head.localRotation * Vector3.back * 0.666f;
|
||||||
|
|
||||||
mainCalibDir = Vector3.zero - WorldPos(mainCon).normalized; // Vector3.zero == center?
|
mainCalibDir = Vector3.zero - WorldPos(mainCon).normalized;
|
||||||
|
mainCalibRot = mainCon.physical.Rot();
|
||||||
calibDist = Vector3.Distance(Vector3.zero, WorldPos(mainCon));
|
calibDist = Vector3.Distance(Vector3.zero, WorldPos(mainCon));
|
||||||
|
calibZ = Vector3.Angle(
|
||||||
|
offCon.physical.Rot() * Vector3.up,
|
||||||
|
WorldPos(mainCon) - WorldPos(offCon)
|
||||||
|
) / 90f;
|
||||||
}
|
}
|
||||||
|
|
||||||
float zValue = Vector3.Angle(
|
float zValue = Vector3.Angle(
|
||||||
|
@ -37,7 +43,10 @@ public class Input
|
||||||
WorldPos(mainCon) - WorldPos(offCon)
|
WorldPos(mainCon) - WorldPos(offCon)
|
||||||
) / 90f; // 0in - 1neutral - 2out
|
) / 90f; // 0in - 1neutral - 2out
|
||||||
|
|
||||||
twistCursor = WorldPos(mainCon) + mainCon.physical.Rot() * mainCalibDir * calibDist * zValue;
|
zValue = 1 + zValue - calibZ;
|
||||||
|
|
||||||
|
Quaternion rot = mainCon.physical.Rot() * Quaternion.Inverse(mainCalibRot);
|
||||||
|
twistCursor = WorldPos(mainCon) + rot * mainCalibDir * calibDist * zValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Vector3 WorldPos(Con con)
|
public Vector3 WorldPos(Con con)
|
||||||
|
|
Loading…
Add table
Reference in a new issue