コード例 #1
0
        /// <summary>
        /// Updates the node transforms
        /// </summary>
        private void IterateUpdate(RiggedModelNode node)
        {
            if (node.parent != null)
            {
                node.CombinedTransformMg = node.LocalTransformMg * node.parent.CombinedTransformMg;
            }
            else
            {
                node.CombinedTransformMg = node.LocalTransformMg;
            }

            //// humm little test
            //if (node.name == "Armature")
            //    node.CombinedTransformMg = Matrix.Identity;

            // set to the final shader matrix.
            if (node.isThisARealBone)
            {
                globalShaderMatrixs[node.boneShaderFinalTransformIndex] = node.OffsetMatrixMg * node.CombinedTransformMg;
            }
            // call children
            foreach (RiggedModelNode n in node.children)
            {
                IterateUpdate(n);
            }
        }
コード例 #2
0
 /// <summary>
 /// Convienience method pass the node let it set itself.
 /// This also allows you to call this is in a iterated node tree and just bypass setting non bone nodes.
 /// </summary>
 public void SetGlobalShaderBoneNode(RiggedModelNode n)
 {
     if (n.isThisARealBone)
     {
         globalShaderMatrixs[n.boneShaderFinalTransformIndex] = n.CombinedTransformMg;
     }
 }