예제 #1
0
        public void FromGlbTest(string[] modelPath, ModelTester.IModelTester tester)
        {
            var path = modelPath.Aggregate("SampleModels", (b, p) => Path.Combine(b, p));

            using (var fs = new FileStream(path, FileMode.Open))
            {
                var c = GltfContainer.FromGlb(fs);

                var schema = VJson.Schema.JsonSchemaAttribute.CreateFromClass <Types.Gltf>();
                var ex     = schema.Validate(c.Gltf);
                Assert.Null(ex);

                var loader = new ResourceLoaderFromEmbedOnly(); // Glb files should be packed.

                var store = new ResourcesStore(c.Gltf, c.Buffer, loader);
                tester.TestModel(store);
            }
        }
예제 #2
0
        public void ReadWriteTest(string[] modelPath)
        {
            var path = modelPath.Aggregate("SampleModels", (b, p) => Path.Combine(b, p));

            Glb.Header header0;
            Glb.Chunk  c0Json;
            Glb.Chunk  c0Buffer;
            using (var fs = new FileStream(path, FileMode.Open))
                using (var r0 = new Glb.Reader(fs))
                {
                    header0  = r0.ReadHeader();
                    c0Json   = r0.ReadChunk();
                    c0Buffer = r0.ReadChunk();
                }

            // re-export glb
            byte[] output;
            using (var fs = new FileStream(path, FileMode.Open))
            {
                var c = GltfContainer.FromGlb(fs);
                using (var ms = new MemoryStream())
                {
                    GltfContainer.ToGlb(ms, c);
                    output = ms.ToArray();
                }
            }

            using (var ms = new MemoryStream(output))
                using (var r1 = new Glb.Reader(ms))
                {
                    var header1 = r1.ReadHeader();
                    Assert.AreEqual(header0.Magic, header1.Magic);
                    Assert.AreEqual(header0.Version, header1.Version);
                    // Assert.AreEqual(header0.Length, header1.Length);

                    var c1Json = r1.ReadChunk();
                    // Assert.AreEqual(c0Json.ChunkLength, c1Json.ChunkLength);
                    Assert.AreEqual(c0Json.ChunkType, c1Json.ChunkType);

                    var c1Buffer = r1.ReadChunk();
                    Assert.AreEqual(c0Buffer.ChunkLength, c1Buffer.ChunkLength);
                    Assert.AreEqual(c0Buffer.ChunkType, c1Buffer.ChunkType);
                }
        }