public Quaternion GetBoneRotation(uint actorId, Side side, Finger fingerId, FingerBone fingerboneId) { SideBone sideBoneId = BoneReference.HumanoidSideBone(fingerId, fingerboneId); Quaternion q = GetBoneRotation(actorId, side, sideBoneId); return(q); }
public static Bone HumanoidBone(Side side, SideBone sideBone) { if (sideBone == Tracking.SideBone.None) { return(Bone.None); } int shoulderIx; int sideBoneIx; switch (side) { case Side.Left: shoulderIx = (int)Bone.LeftShoulder; sideBoneIx = (int)sideBone; return((Bone)(shoulderIx + sideBoneIx - 1)); //return (int)Bone.LeftShoulder + ((int)sideBone - 1); case Side.Right: shoulderIx = (int)Bone.RightShoulder; sideBoneIx = (int)sideBone; return((Bone)(shoulderIx + sideBoneIx - 1)); default: return(Bone.None); } }
public BonePose AddBone(Bone _boneId, bool useSideBones = false) { BonePose newBonePose = new BonePose(); SideBone sideBone = BoneReference.HumanoidSideBone(_boneId); if (sideBone == SideBone.None) { newBonePose.boneRef = new BoneReference() { type = BoneType.AllBones, boneId = _boneId }; } else { newBonePose.boneRef = new BoneReference() { type = BoneType.SideBones, sideBoneId = sideBone }; } newBonePose.translation = Vector3.zero; newBonePose.rotation = Quaternion.identity; bonePoses.Add(newBonePose); return(newBonePose); }
public SensorBone(TrackingDevice tracker, uint actorId, Bone boneId) { this.tracker = tracker; this.actorId = actorId; this.side = Side.AnySide; this.boneId = boneId; this.sideBoneId = SideBone.None; }
public SensorBone(TrackingDevice tracker, uint actorId, Side side, SideBone sideBoneId) { this.tracker = tracker; this.actorId = actorId; this.boneId = Bone.None; this.side = side; this.sideBoneId = sideBoneId; }
private void StartFinger(Side side, FingersTarget.TargetedFinger finger, int fingerIx) { SideBone sideBoneId = BoneReference.HumanoidSideBone((Finger)fingerIx, FingerBone.Proximal); fingerSensors[fingerIx, 0] = neuronTracker.device.GetBone(0, side, sideBoneId); sideBoneId = BoneReference.HumanoidSideBone((Finger)fingerIx, FingerBone.Intermediate); fingerSensors[fingerIx, 1] = neuronTracker.device.GetBone(0, side, sideBoneId); sideBoneId = BoneReference.HumanoidSideBone((Finger)fingerIx, FingerBone.Distal); fingerSensors[fingerIx, 2] = neuronTracker.device.GetBone(0, side, sideBoneId); }
public BonePose GetSideBone(SideBone sideBoneId) { if (bonePoses != null) { for (int i = 0; i < bonePoses.Count; i++) { if (bonePoses[i].boneRef.sideBoneId == sideBoneId) { return(bonePoses[i]); } } } return(null); }
public BonePose CheckBone(Bone boneId, bool useSideBones = false) { BonePose bone; if (useSideBones) { SideBone sideBone = BoneReference.HumanoidSideBone(boneId); bone = GetSideBone(sideBone); } else { bone = GetBone(boneId); } if (bone == null) { bone = AddBone(boneId, useSideBones); } return(bone); }
public void SetReferenceLocal(HumanoidControl humanoid, Side side = Side.AnySide) { if (side == Side.AnySide) { if (boneRef.boneId < 0 || boneRef.boneId > Bone.Count) { return; } HumanoidTarget.TargetedBone targetedBone = humanoid.GetBone(boneRef.boneId); if (targetedBone.parent == null) { SetReferenceRoot(); } else { referenceBoneRef.type = BoneType.AllBones; referenceBoneRef.boneId = targetedBone.parent.boneId; } } else { if (boneRef.sideBoneId < 0 || boneRef.sideBoneId > SideBone.Count) { return; } HumanoidTarget.TargetedBone targetedBone = humanoid.GetBone(side, boneRef.sideBoneId); if (targetedBone.parent == null) { SetReferenceRoot(); } else { referenceBoneRef.type = BoneType.SideBones; SideBone parentSideBoneId = BoneReference.HumanoidSideBone(targetedBone.parent.boneId); referenceBoneRef.sideBoneId = parentSideBoneId; } } }
private void BoneSelector(ref BoneReference bone) { switch (bone.type) { case BoneType.AllBones: bone.boneId = (Bone)EditorGUILayout.EnumPopup(bone.boneId); return; case BoneType.CenterBones: CenterBone centerBone = (CenterBone)EditorGUILayout.EnumPopup(bone.centerBoneId); if (centerBone != CenterBone.Unknown) { bone.centerBoneId = centerBone; } return; case BoneType.SideBones: if (bone.boneId == Bone.None) { SideBone sideBoneId = bone.sideBoneId; bone.sideBoneId = (SideBone)EditorGUILayout.EnumPopup(sideBoneId); } else { bone.sideBoneId = (SideBone)EditorGUILayout.EnumPopup(bone.sideBoneId); } bone.side = (Side)EditorGUILayout.EnumPopup(bone.side, GUILayout.Width(80)); return; case BoneType.FaceBones: bone.faceBoneId = (FacialBone)EditorGUILayout.EnumPopup(bone.faceBoneId); return; default: return; } }
public virtual SensorBone GetBone(uint actorId, Side side, SideBone boneId) { return(new SensorBone(this, actorId, side, boneId)); }
public override void OnInspectorGUI() { for (int i = 0; i < pose.bonePoses.Count; i++) { BonePose bonePoses = pose.bonePoses[i]; if (bonePoses == null) { continue; } if (bonePoses.boneRef.type == BoneType.SideBones && bonePoses.boneRef.side == Side.AnySide) { EditorGUILayout.HelpBox("Configure AnySide like Left Side", MessageType.Info); } EditorGUILayout.BeginHorizontal(); bonePoses.boneRef.type = (BoneType)EditorGUILayout.EnumPopup(bonePoses.boneRef.type, GUILayout.Width(159)); Bone oldBoneId = bonePoses.boneRef.boneId; SideBone oldSideBoneId = bonePoses.boneRef.sideBoneId; BoneSelector(ref bonePoses.boneRef); EditorGUILayout.EndHorizontal(); if (bonePoses.boneRef.boneId != oldBoneId || bonePoses.boneRef.sideBoneId != oldSideBoneId) { PresetReferenceBone(bonePoses.boneRef, ref bonePoses.referenceBoneRef); } EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Reference", GUILayout.MaxWidth(65)); bonePoses.referenceBoneRef.type = (BoneType)EditorGUILayout.EnumPopup(bonePoses.referenceBoneRef.type, GUILayout.Width(90)); BoneSelector(ref bonePoses.referenceBoneRef); EditorGUILayout.EndHorizontal(); EditorGUI.indentLevel++; EditorGUILayout.BeginHorizontal(); bonePoses.setTranslation = EditorGUILayout.ToggleLeft("Translation", bonePoses.setTranslation, GUILayout.MaxWidth(131)); if (bonePoses.setTranslation) { bonePoses.translation = EditorGUILayout.Vector3Field("", bonePoses.translation); } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); bonePoses.setRotation = EditorGUILayout.ToggleLeft("Rotation", bonePoses.setRotation, GUILayout.MaxWidth(131)); if (bonePoses.setRotation) { Vector3 eulerAngles = EditorGUILayout.Vector3Field("", bonePoses.rotation.eulerAngles); if (eulerAngles != bonePoses.rotation.eulerAngles) { bonePoses.rotation.eulerAngles = eulerAngles; } } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); bonePoses.setScale = EditorGUILayout.ToggleLeft("Scale", bonePoses.setScale, GUILayout.MaxWidth(131)); if (bonePoses.setScale) { bonePoses.scale = EditorGUILayout.Vector3Field("", bonePoses.scale); } EditorGUILayout.EndHorizontal(); EditorGUI.indentLevel--; } Buttons(); EditorUtility.SetDirty(pose); }
public static SideBone HumanoidSideBone(Finger fingerId, FingerBone fingerBoneId) { SideBone boneId = (SideBone)(((int)Tracking.SideBone.ThumbProximal - 1) + (int)fingerId * 4 + (int)fingerBoneId); return(boneId); }
unsafe public virtual SensorBone GetBone(uint actorId, Side side, SideBone boneId) { return(new SensorBone(null)); }
public virtual float GetBoneConfidence(uint actorId, Side side, SideBone boneId) { return(0); }
public override SensorTransformC GetBoneData(uint actorId, Side side, SideBone boneId) { SensorTransformC sensorTransform = Neuron_GetSideBoneData(actorId, side, boneId); return(sensorTransform); }
unsafe public override SensorBone GetBone(uint actorId, Side side, SideBone boneId) { SensorTransformC *pTargetTransform = Neuron_GetSideBone(actorId, side, boneId); return(new SensorBone(pTargetTransform)); }
public override SensorTransformC GetBoneData(uint actorId, Side side, SideBone boneId) { return(Astra_GetSideBoneData(actorId, side, boneId)); }
public virtual SensorTransformC GetBoneData(uint actorId, Side side, SideBone boneId) { return(new SensorTransformC()); }
unsafe private static extern SensorTransformC *Neuron_GetSideBone(uint actorId, Side side, SideBone boneId);
public virtual Vector3 GetBonePosition(uint actorId, Side side, SideBone boneId) { return(Vector3.zero); }
private static extern SensorTransformC Neuron_GetSideBoneData(uint actorId, Side side, SideBone boneId);
public virtual Quaternion GetBoneRotation(uint actorId, Side side, SideBone boneId) { return(Quaternion.identity); }