Files
old-profesor-atom/Profesor Atom/Library/metadata/ea/ea22dba3baf2ecc4d886bf2444444228

178 lines
9.1 KiB
Plaintext
Raw Normal View History

2017-05-17 12:25:25 +03:00
a$<24>5.6.1f1<00><><EFBFBD><EFBFBD><00><><EFBFBD>0<05><><EFBFBD><EFBFBD>L.`?^<5E>0D7<00><><EFBFBD><EFBFBD><EFBFBD><00><00><00><><00><00><00><00><00><00><00><00><00>#<00><00>+H<00>3<00><><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>@<00><00><00> Q<00>j<00>
<00><00>< <00><00>H H<00>Z<00><><EFBFBD><EFBFBD> <00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>@<00><00><00>Q<00>j<00><00><00>g<00><00><00><00><00><00>#<00><00>+v~<00><00><><00><00><><00><00><><00><00><><00><00><><00><00><><00><00><><00><00><><00><00><><00><00><> <00><00><>!<00><00><>"<00><00><>#<00><00>$<00><00>%<00><00>&<00><00>#<00><><EFBFBD><EFBFBD>'<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>(<00><00><00><00>)H<00>j<00><><EFBFBD><EFBFBD><EFBFBD>*<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>+@<00><00><00>,Q<00>j<00>-<00><00>*.<00><00>8/AssetMetaDataguiddata[0]data[1]data[2]data[3]pathNametimeCreatedoriginalChangesetoriginalNameoriginalParentHash128originalDigestbytes[0]bytes[1]bytes[2]bytes[3]bytes[4]bytes[5]bytes[6]bytes[7]bytes[8]bytes[9]bytes[10]bytes[11]bytes[12]bytes[13]bytes[14]bytes[15]labelsassetStoreReflicenseType <00><>z{<0E>@<40><05><>5^(<28>H'<00>7<00><><EFBFBD><EFBFBD><EFBFBD><00><00><00><><00> <00><00> <00><00>#.<00>,<00><00><><00> <00><00>#.<00>,H<00><><00><><EFBFBD><EFBFBD><EFBFBD><01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD> @<00><00><00>
Q<00>j<00> <00><00>5<00><><EFBFBD><EFBFBD> <00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD> <00><00><00><00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><00>H<00><><00><><EFBFBD><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>@<00><00><00>Q<00>j<00>y<00>
<00> <00><00>#.<00>, <00>I@<00><00>X @<00><00>#.<00>,H<00>]<00><><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>@<00><00><00>Q<00>j<00>H<00>h<00><><EFBFBD><EFBFBD><00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD> @<00><00><00>!Q<00>j<00>"H<00>z<00><><EFBFBD><EFBFBD>#<00>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>$@<00><00><00>%Q<00>j<00>&MonoImporterPPtr<EditorExtension>m_FileIDm_PathIDm_DefaultReferencesexecutionOrdericonm_UserDatam_AssetBundleNamem_AssetBundleVariants<00><><EFBFBD>8-l'<27><>愁h<E68481>ΐA,<00><00>7<00><><EFBFBD><EFBFBD><EFBFBD><00><00><00><><00><00><00> <00><00>.<00><00><00><><00> <00><00>.<00>H<00><><00><><EFBFBD><EFBFBD><EFBFBD><01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD> @<00><00><00>
Q<00>j<00> H<00><><00><><EFBFBD><EFBFBD><EFBFBD> <01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD> @<00><00><00>Q<00>j<00><00><00>(<00><><EFBFBD><EFBFBD><01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD><01><00><00><00><00>j<00><><EFBFBD><EFBFBD><EFBFBD><01>H<00><><00><><EFBFBD><EFBFBD><EFBFBD><01>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>@<00><00><00>Q<00>j<00>y<00>
<00> <00><00>.<00>y<00>< <00><00>.<00><00><00>CH<00>T<00><><EFBFBD><EFBFBD><10>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD> @<00><00><00>!Q<00>j<00>"H<00>`<00><><EFBFBD><EFBFBD>#<10>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>$@<00><00><00>%Q<00>j<00>&H<00>l<00><><EFBFBD><EFBFBD>'<10>1<00>1<00><><EFBFBD><EFBFBD><EFBFBD>(@<00><00><00>)Q<00>j<00>*L<00>{+PPtr<EditorExtension>m_FileIDm_PathIDm_DefaultReferencesm_Iconm_ExecutionOrderm_ClassNamem_Namespacem_AssemblyNamem_IsEditorScript|<00>@<00>y<EFBFBD><00><00><00>"<22>:<3A>/<2F>L<EFBFBD>h<EFBFBD>BDD$<24>$Assets/SteamVR/Scripts/SteamVR_IK.csE<73><45>U
SteamVR_IK^//======= Copyright (c) Valve Corporation, All rights reserved. ===============
//
// Purpose: Simple two bone ik solver.
//
//=============================================================================
using UnityEngine;
public class SteamVR_IK : MonoBehaviour
{
public Transform target;
public Transform start, joint, end;
public Transform poleVector, upVector;
public float blendPct = 1.0f;
[HideInInspector]
public Transform startXform, jointXform, endXform;
void LateUpdate()
{
const float epsilon = 0.001f;
if (blendPct < epsilon)
return;
var preUp = upVector ? upVector.up : Vector3.Cross(end.position - start.position, joint.position - start.position).normalized;
var targetPosition = target.position;
var targetRotation = target.rotation;
Vector3 forward, up, result = joint.position;
Solve(start.position, targetPosition, poleVector.position,
(joint.position - start.position).magnitude,
(end.position - joint.position).magnitude,
ref result, out forward, out up);
if (up == Vector3.zero)
return;
var startPosition = start.position;
var jointPosition = joint.position;
var endPosition = end.position;
var startRotationLocal = start.localRotation;
var jointRotationLocal = joint.localRotation;
var endRotationLocal = end.localRotation;
var startParent = start.parent;
var jointParent = joint.parent;
var endParent = end.parent;
var startScale = start.localScale;
var jointScale = joint.localScale;
var endScale = end.localScale;
if (startXform == null)
{
startXform = new GameObject("startXform").transform;
startXform.parent = transform;
}
startXform.position = startPosition;
startXform.LookAt(joint, preUp);
start.parent = startXform;
if (jointXform == null)
{
jointXform = new GameObject("jointXform").transform;
jointXform.parent = startXform;
}
jointXform.position = jointPosition;
jointXform.LookAt(end, preUp);
joint.parent = jointXform;
if (endXform == null)
{
endXform = new GameObject("endXform").transform;
endXform.parent = jointXform;
}
endXform.position = endPosition;
end.parent = endXform;
startXform.LookAt(result, up);
jointXform.LookAt(targetPosition, up);
endXform.rotation = targetRotation;
start.parent = startParent;
joint.parent = jointParent;
end.parent = endParent;
end.rotation = targetRotation; // optionally blend?
// handle blending in/out
if (blendPct < 1.0f)
{
start.localRotation = Quaternion.Slerp(startRotationLocal, start.localRotation, blendPct);
joint.localRotation = Quaternion.Slerp(jointRotationLocal, joint.localRotation, blendPct);
end.localRotation = Quaternion.Slerp(endRotationLocal, end.localRotation, blendPct);
}
// restore scale so it doesn't blow out
start.localScale = startScale;
joint.localScale = jointScale;
end.localScale = endScale;
}
public static bool Solve(
Vector3 start, // shoulder / hip
Vector3 end, // desired hand / foot position
Vector3 poleVector, // point to aim elbow / knee toward
float jointDist, // distance from start to elbow / knee
float targetDist, // distance from joint to hand / ankle
ref Vector3 result, // original and output elbow / knee position
out Vector3 forward, out Vector3 up) // plane formed by root, joint and target
{
var totalDist = jointDist + targetDist;
var start2end = end - start;
var poleVectorDir = (poleVector - start).normalized;
var baseDist = start2end.magnitude;
result = start;
const float epsilon = 0.001f;
if (baseDist < epsilon)
{
// move jointDist toward jointTarget
result += poleVectorDir * jointDist;
forward = Vector3.Cross(poleVectorDir, Vector3.up);
up = Vector3.Cross(forward, poleVectorDir).normalized;
}
else
{
forward = start2end * (1.0f / baseDist);
up = Vector3.Cross(forward, poleVectorDir).normalized;
if (baseDist + epsilon < totalDist)
{
// calculate the area of the triangle to determine its height
var p = (totalDist + baseDist) * 0.5f; // half perimeter
if (p > jointDist + epsilon && p > targetDist + epsilon)
{
var A = Mathf.Sqrt(p * (p - jointDist) * (p - targetDist) * (p - baseDist));
var height = 2.0f * A / baseDist; // distance of joint from line between root and target
var dist = Mathf.Sqrt((jointDist * jointDist) - (height * height));
var right = Vector3.Cross(up, forward); // no need to normalized - already orthonormal
result += (forward * dist) + (right * height);
return true; // in range
}
else
{
// move jointDist toward jointTarget
result += poleVectorDir * jointDist;
}
}
else
{
// move elboDist toward target
result += forward * jointDist;
}
}
return false; // edge cases
}
}
SteamVR_IKAssembly-CSharp.dll