Example #1
0
        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();
        }
Example #2
0
 public void SetJoint(JOINT joint)
 {
     if (Joint != joint)
     {
         Joint      = joint;
         LowerLimit = 0f;
         UpperLimit = 0f;
     }
 }
Example #3
0
        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());
        }
Example #4
0
        /// <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);
        }
Example #5
0
        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);
        }
Example #6
0
        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();
        }
Example #7
0
        /// <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);
        }
Example #8
0
 public abstract Transform GetJointTransform(FINGER finger, JOINT joint);
Example #9
0
 public override Transform GetJointTransform(FINGER finger, JOINT joint)
 {
     return(fingerUI[(int)finger].jointGameObject[(int)joint].transform);
 }