private void RecursivlyWriteJoints(JOINT joint) { writer.WriteStartElement("node"); writer.WriteAttributeString("id", $"Armature_{joint.Name}"); writer.WriteAttributeString("name", joint.Name); writer.WriteAttributeString("sid", joint.Name); writer.WriteAttributeString("type", "JOINT"); writer.WriteStartElement("matrix"); writer.WriteAttributeString("sid", "transform"); StringBuilder mat = new StringBuilder(); foreach (var v in joint.Transform) { mat.Append(v.ToString("0.####") + " "); } writer.WriteString(mat.ToString()); writer.WriteEndElement(); foreach (var child in GetChildren(joint)) { RecursivlyWriteJoints(child); } writer.WriteEndElement(); }
public void SetJoint(JOINT joint) { if (Joint != joint) { Joint = joint; LowerLimit = 0f; UpperLimit = 0f; } }
private JOINT[] GetChildren(JOINT j) { int parentindex = Joints.IndexOf(j); List <JOINT> Children = new List <JOINT>(); foreach (var child in Joints) { if (child.Parent == parentindex) { Children.Add(child); } } return(Children.ToArray()); }
/// <summary> /// Adds a new joint to the default skeletal tree /// </summary> public void AddJoint(string name, string parentName, float[] Transform, float[] InvWorldTransform) { JOINT j = new JOINT(); j.Name = name; j.Transform = Transform; j.BindPose = InvWorldTransform; foreach (var joint in Joints) { if (joint.Name.Equals(parentName)) { j.Parent = Joints.IndexOf(joint); } } Joints.Add(j); }
public override Transform GetJointTransform(FINGER finger, JOINT joint) { if (finger == FINGER.small) { if (joint == JOINT.One) { return(fingerUI[(int)finger].jointGameObject[4].transform); } else if (joint == JOINT.Two) { return(fingerUI[(int)finger].jointGameObject[0].transform); } else if (joint == JOINT.Three) { return(fingerUI[(int)finger].jointGameObject[1].transform); } else if (joint == JOINT.Four) { return(fingerUI[(int)finger].jointGameObject[2].transform); } else if (joint == JOINT.Five) { return(fingerUI[(int)finger].jointGameObject[3].transform); } } else { if (joint == JOINT.One) { return(fingerUI[(int)finger].jointGameObject[3].transform); } else if (joint == JOINT.Two) { return(fingerUI[(int)finger].jointGameObject[0].transform); } else if (joint == JOINT.Three) { return(fingerUI[(int)finger].jointGameObject[1].transform); } else if (joint == JOINT.Four) { return(fingerUI[(int)finger].jointGameObject[2].transform); } } return(null); }
private void RecursivlyWriteJoints(JOINT joint) { writer.WriteStartElement("node"); writer.WriteAttributeString("id", $"Armature_{joint.Name}"); writer.WriteAttributeString("name", joint.Name); writer.WriteAttributeString("sid", joint.Name); writer.WriteAttributeString("type", "JOINT"); writer.WriteStartElement("matrix"); writer.WriteAttributeString("sid", "transform"); writer.WriteString(string.Join(" ", joint.Transform)); writer.WriteEndElement(); foreach (var child in GetChildren(joint)) { RecursivlyWriteJoints(child); } writer.WriteEndElement(); }
/// <summary> /// Adds a new joint to the default skeletal tree /// </summary> public void AddJoint(string name, string parentName, float[] Transform, float[] InvWorldTransform, float[] trs) { JOINT j = new JOINT(); j.Name = name; j.Transform = Transform; j.BindPose = InvWorldTransform; foreach (var joint in Joints) { if (joint.Name.Equals(parentName)) { j.Parent = Joints.IndexOf(joint); } } j.Translate = new float[] { trs[0], trs[1], trs[2] }; j.Rotate = new float[] { trs[3], trs[4], trs[5] }; j.Scale = new float[] { trs[6], trs[7], trs[8] }; jointNameToIndex.Add(name, Joints.Count); Joints.Add(j); }
public abstract Transform GetJointTransform(FINGER finger, JOINT joint);
public override Transform GetJointTransform(FINGER finger, JOINT joint) { return(fingerUI[(int)finger].jointGameObject[(int)joint].transform); }