Пример #1
0
        private GltfNodeInfo[] ExtractNodes(Gltf model, GltfBucketContainer cameras)
        {
            var noOfNodes = model.Nodes != null ? model.Nodes.Length : 0;
            var allNodes  = new GltfNodeInfo[noOfNodes];

            for (var i = 0; i < noOfNodes; i += 1)
            {
                var srcNode  = model.Nodes[i];
                var destNode = new GltfNodeInfo
                {
                    Name             = srcNode.Name,
                    NodeIndex        = i,
                    CameraAllocation = cameras.GetAllocation(srcNode.Camera),
                    Children         = srcNode.Children ?? (new int[] { }),
                    Transform        = GenerateTransform(srcNode),
                    Mesh             = srcNode.Mesh,
                };

                destNode.IsMirrored = destNode.Transform.Determinant < 0;

                // TODO: meshes

                allNodes[i] = destNode;
            }

            LinkToParents(allNodes);
            return(allNodes);
        }
Пример #2
0
        private GltfMesh[] ExtractMeshes(Gltf model, GltfAccessor[] accessors, GltfBucketContainer materials)
        {
            var noOfItems = model.Meshes != null ? model.Meshes.Length : 0;
            var output    = new GltfMesh[noOfItems];

            for (var i = 0; i < noOfItems; i += 1)
            {
                var result = new GltfMesh(model.Meshes[i], accessors);
                output[i] = result;
            }
            return(output);
        }