Пример #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);
        }