Exemplo n.º 1
0
        public static List <Mesh> GetMeshes(CoreCollada.Collada file, CoreCollada.Node parent = null, float[] parentTransform = null, string path = "")
        {
            var result = new List <Mesh>();
            var nodes  = (parent != null) ? parent.Nodes : file.LibraryVisualScenes[0].Nodes;

            if (parentTransform == null)
            {
                /*parentTransform = (file.Asset.Unit.Meter != 1) ?
                 *  new float[] { file.Asset.Unit.Meter , file.Asset.Unit.Meter , file.Asset.Unit.Meter }.ScalingMatrix()
                 *  : new float[] { }.IdentityMatrix();*/
                parentTransform = new float[] { }.IdentityMatrix();
            }

            foreach (var node in nodes)
            {
                var transform = (node.MatrixValue != null) ?
                                node.MatrixValue.TransposeMatrix().MatrixProduct(parentTransform)
                    : parentTransform;

                if (node.InstanceGeometry != null)
                {
                    result.AddRange(GetStaticMeshes(file, node, transform, path));
                }

                if (node.InstanceController != null)
                {
                    result.AddRange(GetSkinnedMeshes(file, node, transform, path));
                }

                result.AddRange(GetMeshes(file, node, transform, path));
            }

            return(result);
        }
Exemplo n.º 2
0
        private static List <SkinnedMesh> GetSkinnedMeshes(CoreCollada.Collada file, CoreCollada.Node node, float[] transform = null, string path = "")
        {
            var result = new List <SkinnedMesh>();

            if (transform == null)
            {
                transform = new float[] { }
            }