diff --git a/Output/Animation_Node/Animation_Node_00.bin b/Output/Animation_Node/Animation_Node_00.bin
new file mode 100644
index 00000000..19cdbb29
Binary files /dev/null and b/Output/Animation_Node/Animation_Node_00.bin differ
diff --git a/Output/Animation_Node/Animation_Node_00.gltf b/Output/Animation_Node/Animation_Node_00.gltf
new file mode 100644
index 00000000..0a994059
--- /dev/null
+++ b/Output/Animation_Node/Animation_Node_00.gltf
@@ -0,0 +1,175 @@
+{
+ "accessors": [
+ {
+ "bufferView": 0,
+ "componentType": 5126,
+ "count": 24,
+ "type": "VEC3",
+ "max": [
+ 0.3,
+ 0.3,
+ 0.3
+ ],
+ "min": [
+ -0.3,
+ -0.3,
+ -0.3
+ ],
+ "name": "Positions Accessor"
+ },
+ {
+ "bufferView": 1,
+ "componentType": 5126,
+ "count": 24,
+ "type": "VEC3",
+ "name": "Normals Accessor"
+ },
+ {
+ "bufferView": 2,
+ "componentType": 5126,
+ "count": 24,
+ "type": "VEC2",
+ "name": "UV Accessor 0"
+ },
+ {
+ "bufferView": 3,
+ "componentType": 5125,
+ "count": 36,
+ "type": "SCALAR",
+ "name": "Indices Accessor"
+ },
+ {
+ "bufferView": 4,
+ "componentType": 5126,
+ "count": 3,
+ "type": "SCALAR",
+ "max": [
+ 2.0
+ ],
+ "min": [
+ 0.0
+ ],
+ "name": "Animation Sampler Input"
+ },
+ {
+ "bufferView": 5,
+ "componentType": 5126,
+ "count": 3,
+ "type": "VEC3",
+ "name": "Animation Sampler Output"
+ }
+ ],
+ "animations": [
+ {
+ "channels": [
+ {
+ "sampler": 0,
+ "target": {
+ "node": 0,
+ "path": "translation"
+ }
+ }
+ ],
+ "samplers": [
+ {
+ "input": 4,
+ "output": 5
+ }
+ ]
+ }
+ ],
+ "asset": {
+ "generator": "glTF Asset Generator",
+ "version": "2.0"
+ },
+ "buffers": [
+ {
+ "uri": "Animation_Node_00.bin",
+ "byteLength": 960
+ }
+ ],
+ "bufferViews": [
+ {
+ "buffer": 0,
+ "byteLength": 288,
+ "name": "Positions"
+ },
+ {
+ "buffer": 0,
+ "byteOffset": 288,
+ "byteLength": 288,
+ "name": "Normals"
+ },
+ {
+ "buffer": 0,
+ "byteOffset": 576,
+ "byteLength": 192,
+ "name": "Texture Coords 0"
+ },
+ {
+ "buffer": 0,
+ "byteOffset": 768,
+ "byteLength": 144,
+ "name": "Indices"
+ },
+ {
+ "buffer": 0,
+ "byteOffset": 912,
+ "byteLength": 12,
+ "name": "Animation Sampler Input"
+ },
+ {
+ "buffer": 0,
+ "byteOffset": 924,
+ "byteLength": 36,
+ "name": "Animation Sampler Output"
+ }
+ ],
+ "images": [
+ {
+ "uri": "Textures/BaseColor_Cube.png"
+ }
+ ],
+ "materials": [
+ {
+ "pbrMetallicRoughness": {
+ "baseColorTexture": {
+ "index": 0
+ }
+ }
+ }
+ ],
+ "meshes": [
+ {
+ "primitives": [
+ {
+ "attributes": {
+ "POSITION": 0,
+ "NORMAL": 1,
+ "TEXCOORD_0": 2
+ },
+ "indices": 3,
+ "material": 0
+ }
+ ]
+ }
+ ],
+ "nodes": [
+ {
+ "mesh": 0
+ }
+ ],
+ "scene": 0,
+ "scenes": [
+ {
+ "nodes": [
+ 0
+ ]
+ }
+ ],
+ "textures": [
+ {
+ "source": 0
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Output/Animation_Node/Animation_Node_01.bin b/Output/Animation_Node/Animation_Node_01.bin
new file mode 100644
index 00000000..53c2b289
Binary files /dev/null and b/Output/Animation_Node/Animation_Node_01.bin differ
diff --git a/Output/Animation_Node/Animation_Node_01.gltf b/Output/Animation_Node/Animation_Node_01.gltf
new file mode 100644
index 00000000..6d69b53b
--- /dev/null
+++ b/Output/Animation_Node/Animation_Node_01.gltf
@@ -0,0 +1,175 @@
+{
+ "accessors": [
+ {
+ "bufferView": 0,
+ "componentType": 5126,
+ "count": 24,
+ "type": "VEC3",
+ "max": [
+ 0.3,
+ 0.3,
+ 0.3
+ ],
+ "min": [
+ -0.3,
+ -0.3,
+ -0.3
+ ],
+ "name": "Positions Accessor"
+ },
+ {
+ "bufferView": 1,
+ "componentType": 5126,
+ "count": 24,
+ "type": "VEC3",
+ "name": "Normals Accessor"
+ },
+ {
+ "bufferView": 2,
+ "componentType": 5126,
+ "count": 24,
+ "type": "VEC2",
+ "name": "UV Accessor 0"
+ },
+ {
+ "bufferView": 3,
+ "componentType": 5125,
+ "count": 36,
+ "type": "SCALAR",
+ "name": "Indices Accessor"
+ },
+ {
+ "bufferView": 4,
+ "componentType": 5126,
+ "count": 5,
+ "type": "SCALAR",
+ "max": [
+ 4.0
+ ],
+ "min": [
+ 0.0
+ ],
+ "name": "Animation Sampler Input"
+ },
+ {
+ "bufferView": 5,
+ "componentType": 5126,
+ "count": 5,
+ "type": "VEC4",
+ "name": "Animation Sampler Output"
+ }
+ ],
+ "animations": [
+ {
+ "channels": [
+ {
+ "sampler": 0,
+ "target": {
+ "node": 0,
+ "path": "rotation"
+ }
+ }
+ ],
+ "samplers": [
+ {
+ "input": 4,
+ "output": 5
+ }
+ ]
+ }
+ ],
+ "asset": {
+ "generator": "glTF Asset Generator",
+ "version": "2.0"
+ },
+ "buffers": [
+ {
+ "uri": "Animation_Node_01.bin",
+ "byteLength": 1012
+ }
+ ],
+ "bufferViews": [
+ {
+ "buffer": 0,
+ "byteLength": 288,
+ "name": "Positions"
+ },
+ {
+ "buffer": 0,
+ "byteOffset": 288,
+ "byteLength": 288,
+ "name": "Normals"
+ },
+ {
+ "buffer": 0,
+ "byteOffset": 576,
+ "byteLength": 192,
+ "name": "Texture Coords 0"
+ },
+ {
+ "buffer": 0,
+ "byteOffset": 768,
+ "byteLength": 144,
+ "name": "Indices"
+ },
+ {
+ "buffer": 0,
+ "byteOffset": 912,
+ "byteLength": 20,
+ "name": "Animation Sampler Input"
+ },
+ {
+ "buffer": 0,
+ "byteOffset": 932,
+ "byteLength": 80,
+ "name": "Animation Sampler Output"
+ }
+ ],
+ "images": [
+ {
+ "uri": "Textures/BaseColor_Cube.png"
+ }
+ ],
+ "materials": [
+ {
+ "pbrMetallicRoughness": {
+ "baseColorTexture": {
+ "index": 0
+ }
+ }
+ }
+ ],
+ "meshes": [
+ {
+ "primitives": [
+ {
+ "attributes": {
+ "POSITION": 0,
+ "NORMAL": 1,
+ "TEXCOORD_0": 2
+ },
+ "indices": 3,
+ "material": 0
+ }
+ ]
+ }
+ ],
+ "nodes": [
+ {
+ "mesh": 0
+ }
+ ],
+ "scene": 0,
+ "scenes": [
+ {
+ "nodes": [
+ 0
+ ]
+ }
+ ],
+ "textures": [
+ {
+ "source": 0
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Output/Animation_Node/Animation_Node_02.bin b/Output/Animation_Node/Animation_Node_02.bin
new file mode 100644
index 00000000..a194eeaf
Binary files /dev/null and b/Output/Animation_Node/Animation_Node_02.bin differ
diff --git a/Output/Animation_Node/Animation_Node_02.gltf b/Output/Animation_Node/Animation_Node_02.gltf
new file mode 100644
index 00000000..e339ac1c
--- /dev/null
+++ b/Output/Animation_Node/Animation_Node_02.gltf
@@ -0,0 +1,175 @@
+{
+ "accessors": [
+ {
+ "bufferView": 0,
+ "componentType": 5126,
+ "count": 24,
+ "type": "VEC3",
+ "max": [
+ 0.3,
+ 0.3,
+ 0.3
+ ],
+ "min": [
+ -0.3,
+ -0.3,
+ -0.3
+ ],
+ "name": "Positions Accessor"
+ },
+ {
+ "bufferView": 1,
+ "componentType": 5126,
+ "count": 24,
+ "type": "VEC3",
+ "name": "Normals Accessor"
+ },
+ {
+ "bufferView": 2,
+ "componentType": 5126,
+ "count": 24,
+ "type": "VEC2",
+ "name": "UV Accessor 0"
+ },
+ {
+ "bufferView": 3,
+ "componentType": 5125,
+ "count": 36,
+ "type": "SCALAR",
+ "name": "Indices Accessor"
+ },
+ {
+ "bufferView": 4,
+ "componentType": 5126,
+ "count": 3,
+ "type": "SCALAR",
+ "max": [
+ 2.0
+ ],
+ "min": [
+ 0.0
+ ],
+ "name": "Animation Sampler Input"
+ },
+ {
+ "bufferView": 5,
+ "componentType": 5126,
+ "count": 3,
+ "type": "VEC3",
+ "name": "Animation Sampler Output"
+ }
+ ],
+ "animations": [
+ {
+ "channels": [
+ {
+ "sampler": 0,
+ "target": {
+ "node": 0,
+ "path": "scale"
+ }
+ }
+ ],
+ "samplers": [
+ {
+ "input": 4,
+ "output": 5
+ }
+ ]
+ }
+ ],
+ "asset": {
+ "generator": "glTF Asset Generator",
+ "version": "2.0"
+ },
+ "buffers": [
+ {
+ "uri": "Animation_Node_02.bin",
+ "byteLength": 960
+ }
+ ],
+ "bufferViews": [
+ {
+ "buffer": 0,
+ "byteLength": 288,
+ "name": "Positions"
+ },
+ {
+ "buffer": 0,
+ "byteOffset": 288,
+ "byteLength": 288,
+ "name": "Normals"
+ },
+ {
+ "buffer": 0,
+ "byteOffset": 576,
+ "byteLength": 192,
+ "name": "Texture Coords 0"
+ },
+ {
+ "buffer": 0,
+ "byteOffset": 768,
+ "byteLength": 144,
+ "name": "Indices"
+ },
+ {
+ "buffer": 0,
+ "byteOffset": 912,
+ "byteLength": 12,
+ "name": "Animation Sampler Input"
+ },
+ {
+ "buffer": 0,
+ "byteOffset": 924,
+ "byteLength": 36,
+ "name": "Animation Sampler Output"
+ }
+ ],
+ "images": [
+ {
+ "uri": "Textures/BaseColor_Cube.png"
+ }
+ ],
+ "materials": [
+ {
+ "pbrMetallicRoughness": {
+ "baseColorTexture": {
+ "index": 0
+ }
+ }
+ }
+ ],
+ "meshes": [
+ {
+ "primitives": [
+ {
+ "attributes": {
+ "POSITION": 0,
+ "NORMAL": 1,
+ "TEXCOORD_0": 2
+ },
+ "indices": 3,
+ "material": 0
+ }
+ ]
+ }
+ ],
+ "nodes": [
+ {
+ "mesh": 0
+ }
+ ],
+ "scene": 0,
+ "scenes": [
+ {
+ "nodes": [
+ 0
+ ]
+ }
+ ],
+ "textures": [
+ {
+ "source": 0
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Output/Animation_Node/Animation_Node_03.bin b/Output/Animation_Node/Animation_Node_03.bin
new file mode 100644
index 00000000..2968a7af
Binary files /dev/null and b/Output/Animation_Node/Animation_Node_03.bin differ
diff --git a/Output/Animation_Node/Animation_Node_03.gltf b/Output/Animation_Node/Animation_Node_03.gltf
new file mode 100644
index 00000000..513d828e
--- /dev/null
+++ b/Output/Animation_Node/Animation_Node_03.gltf
@@ -0,0 +1,176 @@
+{
+ "accessors": [
+ {
+ "bufferView": 0,
+ "componentType": 5126,
+ "count": 24,
+ "type": "VEC3",
+ "max": [
+ 0.3,
+ 0.3,
+ 0.3
+ ],
+ "min": [
+ -0.3,
+ -0.3,
+ -0.3
+ ],
+ "name": "Positions Accessor"
+ },
+ {
+ "bufferView": 1,
+ "componentType": 5126,
+ "count": 24,
+ "type": "VEC3",
+ "name": "Normals Accessor"
+ },
+ {
+ "bufferView": 2,
+ "componentType": 5126,
+ "count": 24,
+ "type": "VEC2",
+ "name": "UV Accessor 0"
+ },
+ {
+ "bufferView": 3,
+ "componentType": 5125,
+ "count": 36,
+ "type": "SCALAR",
+ "name": "Indices Accessor"
+ },
+ {
+ "bufferView": 4,
+ "componentType": 5126,
+ "count": 5,
+ "type": "SCALAR",
+ "max": [
+ 4.0
+ ],
+ "min": [
+ 0.0
+ ],
+ "name": "Animation Sampler Input"
+ },
+ {
+ "bufferView": 5,
+ "componentType": 5126,
+ "count": 5,
+ "type": "VEC3",
+ "name": "Animation Sampler Output"
+ }
+ ],
+ "animations": [
+ {
+ "channels": [
+ {
+ "sampler": 0,
+ "target": {
+ "node": 0,
+ "path": "translation"
+ }
+ }
+ ],
+ "samplers": [
+ {
+ "input": 4,
+ "interpolation": "STEP",
+ "output": 5
+ }
+ ]
+ }
+ ],
+ "asset": {
+ "generator": "glTF Asset Generator",
+ "version": "2.0"
+ },
+ "buffers": [
+ {
+ "uri": "Animation_Node_03.bin",
+ "byteLength": 992
+ }
+ ],
+ "bufferViews": [
+ {
+ "buffer": 0,
+ "byteLength": 288,
+ "name": "Positions"
+ },
+ {
+ "buffer": 0,
+ "byteOffset": 288,
+ "byteLength": 288,
+ "name": "Normals"
+ },
+ {
+ "buffer": 0,
+ "byteOffset": 576,
+ "byteLength": 192,
+ "name": "Texture Coords 0"
+ },
+ {
+ "buffer": 0,
+ "byteOffset": 768,
+ "byteLength": 144,
+ "name": "Indices"
+ },
+ {
+ "buffer": 0,
+ "byteOffset": 912,
+ "byteLength": 20,
+ "name": "Animation Sampler Input"
+ },
+ {
+ "buffer": 0,
+ "byteOffset": 932,
+ "byteLength": 60,
+ "name": "Animation Sampler Output"
+ }
+ ],
+ "images": [
+ {
+ "uri": "Textures/BaseColor_Cube.png"
+ }
+ ],
+ "materials": [
+ {
+ "pbrMetallicRoughness": {
+ "baseColorTexture": {
+ "index": 0
+ }
+ }
+ }
+ ],
+ "meshes": [
+ {
+ "primitives": [
+ {
+ "attributes": {
+ "POSITION": 0,
+ "NORMAL": 1,
+ "TEXCOORD_0": 2
+ },
+ "indices": 3,
+ "material": 0
+ }
+ ]
+ }
+ ],
+ "nodes": [
+ {
+ "mesh": 0
+ }
+ ],
+ "scene": 0,
+ "scenes": [
+ {
+ "nodes": [
+ 0
+ ]
+ }
+ ],
+ "textures": [
+ {
+ "source": 0
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Output/Animation_Node/Animation_Node_04.bin b/Output/Animation_Node/Animation_Node_04.bin
new file mode 100644
index 00000000..54dcfcd2
Binary files /dev/null and b/Output/Animation_Node/Animation_Node_04.bin differ
diff --git a/Output/Animation_Node/Animation_Node_04.gltf b/Output/Animation_Node/Animation_Node_04.gltf
new file mode 100644
index 00000000..34a9f4b3
--- /dev/null
+++ b/Output/Animation_Node/Animation_Node_04.gltf
@@ -0,0 +1,176 @@
+{
+ "accessors": [
+ {
+ "bufferView": 0,
+ "componentType": 5126,
+ "count": 24,
+ "type": "VEC3",
+ "max": [
+ 0.3,
+ 0.3,
+ 0.3
+ ],
+ "min": [
+ -0.3,
+ -0.3,
+ -0.3
+ ],
+ "name": "Positions Accessor"
+ },
+ {
+ "bufferView": 1,
+ "componentType": 5126,
+ "count": 24,
+ "type": "VEC3",
+ "name": "Normals Accessor"
+ },
+ {
+ "bufferView": 2,
+ "componentType": 5126,
+ "count": 24,
+ "type": "VEC2",
+ "name": "UV Accessor 0"
+ },
+ {
+ "bufferView": 3,
+ "componentType": 5125,
+ "count": 36,
+ "type": "SCALAR",
+ "name": "Indices Accessor"
+ },
+ {
+ "bufferView": 4,
+ "componentType": 5126,
+ "count": 3,
+ "type": "SCALAR",
+ "max": [
+ 2.0
+ ],
+ "min": [
+ 0.0
+ ],
+ "name": "Animation Sampler Input"
+ },
+ {
+ "bufferView": 5,
+ "componentType": 5126,
+ "count": 9,
+ "type": "VEC3",
+ "name": "Animation Sampler Output"
+ }
+ ],
+ "animations": [
+ {
+ "channels": [
+ {
+ "sampler": 0,
+ "target": {
+ "node": 0,
+ "path": "translation"
+ }
+ }
+ ],
+ "samplers": [
+ {
+ "input": 4,
+ "interpolation": "CUBICSPLINE",
+ "output": 5
+ }
+ ]
+ }
+ ],
+ "asset": {
+ "generator": "glTF Asset Generator",
+ "version": "2.0"
+ },
+ "buffers": [
+ {
+ "uri": "Animation_Node_04.bin",
+ "byteLength": 1032
+ }
+ ],
+ "bufferViews": [
+ {
+ "buffer": 0,
+ "byteLength": 288,
+ "name": "Positions"
+ },
+ {
+ "buffer": 0,
+ "byteOffset": 288,
+ "byteLength": 288,
+ "name": "Normals"
+ },
+ {
+ "buffer": 0,
+ "byteOffset": 576,
+ "byteLength": 192,
+ "name": "Texture Coords 0"
+ },
+ {
+ "buffer": 0,
+ "byteOffset": 768,
+ "byteLength": 144,
+ "name": "Indices"
+ },
+ {
+ "buffer": 0,
+ "byteOffset": 912,
+ "byteLength": 12,
+ "name": "Animation Sampler Input"
+ },
+ {
+ "buffer": 0,
+ "byteOffset": 924,
+ "byteLength": 108,
+ "name": "Animation Sampler Output"
+ }
+ ],
+ "images": [
+ {
+ "uri": "Textures/BaseColor_Cube.png"
+ }
+ ],
+ "materials": [
+ {
+ "pbrMetallicRoughness": {
+ "baseColorTexture": {
+ "index": 0
+ }
+ }
+ }
+ ],
+ "meshes": [
+ {
+ "primitives": [
+ {
+ "attributes": {
+ "POSITION": 0,
+ "NORMAL": 1,
+ "TEXCOORD_0": 2
+ },
+ "indices": 3,
+ "material": 0
+ }
+ ]
+ }
+ ],
+ "nodes": [
+ {
+ "mesh": 0
+ }
+ ],
+ "scene": 0,
+ "scenes": [
+ {
+ "nodes": [
+ 0
+ ]
+ }
+ ],
+ "textures": [
+ {
+ "source": 0
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Output/Animation_Node/Animation_Node_05.bin b/Output/Animation_Node/Animation_Node_05.bin
new file mode 100644
index 00000000..c72db717
Binary files /dev/null and b/Output/Animation_Node/Animation_Node_05.bin differ
diff --git a/Output/Animation_Node/Animation_Node_05.gltf b/Output/Animation_Node/Animation_Node_05.gltf
new file mode 100644
index 00000000..b7ec561c
--- /dev/null
+++ b/Output/Animation_Node/Animation_Node_05.gltf
@@ -0,0 +1,176 @@
+{
+ "accessors": [
+ {
+ "bufferView": 0,
+ "componentType": 5126,
+ "count": 24,
+ "type": "VEC3",
+ "max": [
+ 0.3,
+ 0.3,
+ 0.3
+ ],
+ "min": [
+ -0.3,
+ -0.3,
+ -0.3
+ ],
+ "name": "Positions Accessor"
+ },
+ {
+ "bufferView": 1,
+ "componentType": 5126,
+ "count": 24,
+ "type": "VEC3",
+ "name": "Normals Accessor"
+ },
+ {
+ "bufferView": 2,
+ "componentType": 5126,
+ "count": 24,
+ "type": "VEC2",
+ "name": "UV Accessor 0"
+ },
+ {
+ "bufferView": 3,
+ "componentType": 5125,
+ "count": 36,
+ "type": "SCALAR",
+ "name": "Indices Accessor"
+ },
+ {
+ "bufferView": 4,
+ "componentType": 5126,
+ "count": 5,
+ "type": "SCALAR",
+ "max": [
+ 4.0
+ ],
+ "min": [
+ 0.0
+ ],
+ "name": "Animation Sampler Input"
+ },
+ {
+ "bufferView": 5,
+ "componentType": 5126,
+ "count": 15,
+ "type": "VEC4",
+ "name": "Animation Sampler Output"
+ }
+ ],
+ "animations": [
+ {
+ "channels": [
+ {
+ "sampler": 0,
+ "target": {
+ "node": 0,
+ "path": "rotation"
+ }
+ }
+ ],
+ "samplers": [
+ {
+ "input": 4,
+ "interpolation": "CUBICSPLINE",
+ "output": 5
+ }
+ ]
+ }
+ ],
+ "asset": {
+ "generator": "glTF Asset Generator",
+ "version": "2.0"
+ },
+ "buffers": [
+ {
+ "uri": "Animation_Node_05.bin",
+ "byteLength": 1172
+ }
+ ],
+ "bufferViews": [
+ {
+ "buffer": 0,
+ "byteLength": 288,
+ "name": "Positions"
+ },
+ {
+ "buffer": 0,
+ "byteOffset": 288,
+ "byteLength": 288,
+ "name": "Normals"
+ },
+ {
+ "buffer": 0,
+ "byteOffset": 576,
+ "byteLength": 192,
+ "name": "Texture Coords 0"
+ },
+ {
+ "buffer": 0,
+ "byteOffset": 768,
+ "byteLength": 144,
+ "name": "Indices"
+ },
+ {
+ "buffer": 0,
+ "byteOffset": 912,
+ "byteLength": 20,
+ "name": "Animation Sampler Input"
+ },
+ {
+ "buffer": 0,
+ "byteOffset": 932,
+ "byteLength": 240,
+ "name": "Animation Sampler Output"
+ }
+ ],
+ "images": [
+ {
+ "uri": "Textures/BaseColor_Cube.png"
+ }
+ ],
+ "materials": [
+ {
+ "pbrMetallicRoughness": {
+ "baseColorTexture": {
+ "index": 0
+ }
+ }
+ }
+ ],
+ "meshes": [
+ {
+ "primitives": [
+ {
+ "attributes": {
+ "POSITION": 0,
+ "NORMAL": 1,
+ "TEXCOORD_0": 2
+ },
+ "indices": 3,
+ "material": 0
+ }
+ ]
+ }
+ ],
+ "nodes": [
+ {
+ "mesh": 0
+ }
+ ],
+ "scene": 0,
+ "scenes": [
+ {
+ "nodes": [
+ 0
+ ]
+ }
+ ],
+ "textures": [
+ {
+ "source": 0
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Output/Animation_Node/Figures/SampleImages/Animation_Node_00.png b/Output/Animation_Node/Figures/SampleImages/Animation_Node_00.png
new file mode 100644
index 00000000..aa4f6be7
Binary files /dev/null and b/Output/Animation_Node/Figures/SampleImages/Animation_Node_00.png differ
diff --git a/Output/Animation_Node/Figures/SampleImages/Animation_Node_01.png b/Output/Animation_Node/Figures/SampleImages/Animation_Node_01.png
new file mode 100644
index 00000000..0ab10e60
Binary files /dev/null and b/Output/Animation_Node/Figures/SampleImages/Animation_Node_01.png differ
diff --git a/Output/Animation_Node/Figures/SampleImages/Animation_Node_02.png b/Output/Animation_Node/Figures/SampleImages/Animation_Node_02.png
new file mode 100644
index 00000000..d2bf4e0d
Binary files /dev/null and b/Output/Animation_Node/Figures/SampleImages/Animation_Node_02.png differ
diff --git a/Output/Animation_Node/Figures/SampleImages/Animation_Node_03.png b/Output/Animation_Node/Figures/SampleImages/Animation_Node_03.png
new file mode 100644
index 00000000..aa4f6be7
Binary files /dev/null and b/Output/Animation_Node/Figures/SampleImages/Animation_Node_03.png differ
diff --git a/Output/Animation_Node/Figures/SampleImages/Animation_Node_04.png b/Output/Animation_Node/Figures/SampleImages/Animation_Node_04.png
new file mode 100644
index 00000000..aa4f6be7
Binary files /dev/null and b/Output/Animation_Node/Figures/SampleImages/Animation_Node_04.png differ
diff --git a/Output/Animation_Node/Figures/SampleImages/Animation_Node_05.png b/Output/Animation_Node/Figures/SampleImages/Animation_Node_05.png
new file mode 100644
index 00000000..0c205082
Binary files /dev/null and b/Output/Animation_Node/Figures/SampleImages/Animation_Node_05.png differ
diff --git a/Output/Animation_Node/Figures/SampleImages/Animation_Node_06.png b/Output/Animation_Node/Figures/SampleImages/Animation_Node_06.png
new file mode 100644
index 00000000..a0c3850f
Binary files /dev/null and b/Output/Animation_Node/Figures/SampleImages/Animation_Node_06.png differ
diff --git a/Output/Animation_Node/Figures/SampleImages/Animation_Node_07.png b/Output/Animation_Node/Figures/SampleImages/Animation_Node_07.png
new file mode 100644
index 00000000..ce0c0943
Binary files /dev/null and b/Output/Animation_Node/Figures/SampleImages/Animation_Node_07.png differ
diff --git a/Output/Animation_Node/Figures/Thumbnails/Animation_Node_00.png b/Output/Animation_Node/Figures/Thumbnails/Animation_Node_00.png
new file mode 100644
index 00000000..b8bf833d
Binary files /dev/null and b/Output/Animation_Node/Figures/Thumbnails/Animation_Node_00.png differ
diff --git a/Output/Animation_Node/Figures/Thumbnails/Animation_Node_01.png b/Output/Animation_Node/Figures/Thumbnails/Animation_Node_01.png
new file mode 100644
index 00000000..e373806e
Binary files /dev/null and b/Output/Animation_Node/Figures/Thumbnails/Animation_Node_01.png differ
diff --git a/Output/Animation_Node/Figures/Thumbnails/Animation_Node_02.png b/Output/Animation_Node/Figures/Thumbnails/Animation_Node_02.png
new file mode 100644
index 00000000..68e756e6
Binary files /dev/null and b/Output/Animation_Node/Figures/Thumbnails/Animation_Node_02.png differ
diff --git a/Output/Animation_Node/Figures/Thumbnails/Animation_Node_03.png b/Output/Animation_Node/Figures/Thumbnails/Animation_Node_03.png
new file mode 100644
index 00000000..b8bf833d
Binary files /dev/null and b/Output/Animation_Node/Figures/Thumbnails/Animation_Node_03.png differ
diff --git a/Output/Animation_Node/Figures/Thumbnails/Animation_Node_04.png b/Output/Animation_Node/Figures/Thumbnails/Animation_Node_04.png
new file mode 100644
index 00000000..b8bf833d
Binary files /dev/null and b/Output/Animation_Node/Figures/Thumbnails/Animation_Node_04.png differ
diff --git a/Output/Animation_Node/Figures/Thumbnails/Animation_Node_05.png b/Output/Animation_Node/Figures/Thumbnails/Animation_Node_05.png
new file mode 100644
index 00000000..033113ea
Binary files /dev/null and b/Output/Animation_Node/Figures/Thumbnails/Animation_Node_05.png differ
diff --git a/Output/Animation_Node/Figures/Thumbnails/Animation_Node_06.png b/Output/Animation_Node/Figures/Thumbnails/Animation_Node_06.png
new file mode 100644
index 00000000..c0e57082
Binary files /dev/null and b/Output/Animation_Node/Figures/Thumbnails/Animation_Node_06.png differ
diff --git a/Output/Animation_Node/Figures/Thumbnails/Animation_Node_07.png b/Output/Animation_Node/Figures/Thumbnails/Animation_Node_07.png
new file mode 100644
index 00000000..b8b7d177
Binary files /dev/null and b/Output/Animation_Node/Figures/Thumbnails/Animation_Node_07.png differ
diff --git a/Output/Animation_Node/Figures/Thumbnails/BaseColor_Cube.png b/Output/Animation_Node/Figures/Thumbnails/BaseColor_Cube.png
new file mode 100644
index 00000000..4dd78402
Binary files /dev/null and b/Output/Animation_Node/Figures/Thumbnails/BaseColor_Cube.png differ
diff --git a/Output/Animation_Node/Manifest.json b/Output/Animation_Node/Manifest.json
new file mode 100644
index 00000000..8c458950
--- /dev/null
+++ b/Output/Animation_Node/Manifest.json
@@ -0,0 +1,71 @@
+{
+ "folder": "Animation_Node",
+ "models": [
+ {
+ "fileName": "Animation_Node_00.gltf",
+ "sampleImageName": "Figures/SampleImages/Animation_Node_00.png",
+ "camera": {
+ "translation": [
+ 0.0,
+ 0.0,
+ 1.3
+ ]
+ }
+ },
+ {
+ "fileName": "Animation_Node_01.gltf",
+ "sampleImageName": "Figures/SampleImages/Animation_Node_01.png",
+ "camera": {
+ "translation": [
+ 0.0,
+ 0.0,
+ 1.3
+ ]
+ }
+ },
+ {
+ "fileName": "Animation_Node_02.gltf",
+ "sampleImageName": "Figures/SampleImages/Animation_Node_02.png",
+ "camera": {
+ "translation": [
+ 0.0,
+ 0.0,
+ 1.3
+ ]
+ }
+ },
+ {
+ "fileName": "Animation_Node_03.gltf",
+ "sampleImageName": "Figures/SampleImages/Animation_Node_03.png",
+ "camera": {
+ "translation": [
+ 0.0,
+ 0.0,
+ 1.3
+ ]
+ }
+ },
+ {
+ "fileName": "Animation_Node_04.gltf",
+ "sampleImageName": "Figures/SampleImages/Animation_Node_04.png",
+ "camera": {
+ "translation": [
+ 0.0,
+ 0.0,
+ 1.3
+ ]
+ }
+ },
+ {
+ "fileName": "Animation_Node_05.gltf",
+ "sampleImageName": "Figures/SampleImages/Animation_Node_05.png",
+ "camera": {
+ "translation": [
+ 0.0,
+ 0.0,
+ 1.3
+ ]
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Output/Animation_Node/README.md b/Output/Animation_Node/README.md
new file mode 100644
index 00000000..39869b10
--- /dev/null
+++ b/Output/Animation_Node/README.md
@@ -0,0 +1,13 @@
+These models are intended to test the basic attributes of animation on a node.
+
+The following table shows the properties that are set for a given model.
+
+| | Sample Image | Target | Interpolation |
+| :---: | :---: | :---: | :---: |
+| [00](Animation_Node_00.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=0&model=0) | [](Figures/SampleImages/Animation_Node_00.png) | Translation | Linear |
+| [01](Animation_Node_01.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=0&model=1) | [](Figures/SampleImages/Animation_Node_01.png) | Rotation | Linear |
+| [02](Animation_Node_02.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=0&model=2) | [](Figures/SampleImages/Animation_Node_02.png) | Scale | Linear |
+| [03](Animation_Node_03.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=0&model=3) | [](Figures/SampleImages/Animation_Node_03.png) | Translation | Step |
+| [04](Animation_Node_04.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=0&model=4) | [](Figures/SampleImages/Animation_Node_04.png) | Translation | Cubic Spline |
+| [05](Animation_Node_05.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=0&model=5) | [](Figures/SampleImages/Animation_Node_05.png) | Rotation | Cubic Spline |
+
diff --git a/Output/Animation_Node/Textures/BaseColor_Cube.png b/Output/Animation_Node/Textures/BaseColor_Cube.png
new file mode 100644
index 00000000..fd169ab3
Binary files /dev/null and b/Output/Animation_Node/Textures/BaseColor_Cube.png differ
diff --git a/Output/Buffer_Interleaved/README.md b/Output/Buffer_Interleaved/README.md
index 746a4508..07c6d3e5 100644
--- a/Output/Buffer_Interleaved/README.md
+++ b/Output/Buffer_Interleaved/README.md
@@ -13,9 +13,9 @@ The following table shows the properties that are set for a given model.
| | Sample Image | Vertex UV 0 | Vertex Color |
| :---: | :---: | :---: | :---: |
-| [00](Buffer_Interleaved_00.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=0&model=0) | [](Figures/SampleImages/Buffer_Interleaved_00.png) | Float | Vector3 Float |
-| [01](Buffer_Interleaved_01.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=0&model=1) | [](Figures/SampleImages/Buffer_Interleaved_01.png) | Float | Vector3 Byte |
-| [02](Buffer_Interleaved_02.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=0&model=2) | [](Figures/SampleImages/Buffer_Interleaved_02.png) | Float | Vector3 Short |
-| [03](Buffer_Interleaved_03.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=0&model=3) | [](Figures/SampleImages/Buffer_Interleaved_03.png) | Byte | Vector3 Float |
-| [04](Buffer_Interleaved_04.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=0&model=4) | [](Figures/SampleImages/Buffer_Interleaved_04.png) | Short | Vector3 Float |
+| [00](Buffer_Interleaved_00.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=1&model=0) | [](Figures/SampleImages/Buffer_Interleaved_00.png) | Float | Vector3 Float |
+| [01](Buffer_Interleaved_01.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=1&model=1) | [](Figures/SampleImages/Buffer_Interleaved_01.png) | Float | Vector3 Byte |
+| [02](Buffer_Interleaved_02.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=1&model=2) | [](Figures/SampleImages/Buffer_Interleaved_02.png) | Float | Vector3 Short |
+| [03](Buffer_Interleaved_03.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=1&model=3) | [](Figures/SampleImages/Buffer_Interleaved_03.png) | Byte | Vector3 Float |
+| [04](Buffer_Interleaved_04.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=1&model=4) | [](Figures/SampleImages/Buffer_Interleaved_04.png) | Short | Vector3 Float |
diff --git a/Output/Compatibility/README.md b/Output/Compatibility/README.md
index dc184156..b6499a09 100644
--- a/Output/Compatibility/README.md
+++ b/Output/Compatibility/README.md
@@ -17,10 +17,10 @@ Model 05 should fail to load on all clients, since no clients will support the r
| | Version | Min Version | Description | Model Should Load |
| :---: | :---: | :---: | :---: | :---: |
-| [00](Compatibility_00.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=1&model=0) | 2.0 | | | :white_check_mark: |
-| [01](Compatibility_01.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=1&model=1) | 2.1 | | Light object added at root | :white_check_mark: |
-| [02](Compatibility_02.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=1&model=2) | 2.1 | | Light property added to node object | :white_check_mark: |
-| [03](Compatibility_03.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=1&model=3) | 2.1 | | Alpha mode updated with a new enum value, and a fallback value | :white_check_mark: |
-| [04](Compatibility_04.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=1&model=4) | 2.1 | 2.1 | Requires a specific version or higher | Only in version 2.1 or higher |
-| [05](Compatibility_05.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=1&model=5) | 2.0 | | Extension required | :x: |
+| [00](Compatibility_00.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=2&model=0) | 2.0 | | | :white_check_mark: |
+| [01](Compatibility_01.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=2&model=1) | 2.1 | | Light object added at root | :white_check_mark: |
+| [02](Compatibility_02.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=2&model=2) | 2.1 | | Light property added to node object | :white_check_mark: |
+| [03](Compatibility_03.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=2&model=3) | 2.1 | | Alpha mode updated with a new enum value, and a fallback value | :white_check_mark: |
+| [04](Compatibility_04.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=2&model=4) | 2.1 | 2.1 | Requires a specific version or higher | Only in version 2.1 or higher |
+| [05](Compatibility_05.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=2&model=5) | 2.0 | | Extension required | :x: |
diff --git a/Output/Manifest.json b/Output/Manifest.json
index cb81d389..f03963ec 100644
--- a/Output/Manifest.json
+++ b/Output/Manifest.json
@@ -1,4 +1,75 @@
[
+ {
+ "folder": "Animation_Node",
+ "models": [
+ {
+ "fileName": "Animation_Node_00.gltf",
+ "sampleImageName": "Figures/SampleImages/Animation_Node_00.png",
+ "camera": {
+ "translation": [
+ 0.0,
+ 0.0,
+ 1.3
+ ]
+ }
+ },
+ {
+ "fileName": "Animation_Node_01.gltf",
+ "sampleImageName": "Figures/SampleImages/Animation_Node_01.png",
+ "camera": {
+ "translation": [
+ 0.0,
+ 0.0,
+ 1.3
+ ]
+ }
+ },
+ {
+ "fileName": "Animation_Node_02.gltf",
+ "sampleImageName": "Figures/SampleImages/Animation_Node_02.png",
+ "camera": {
+ "translation": [
+ 0.0,
+ 0.0,
+ 1.3
+ ]
+ }
+ },
+ {
+ "fileName": "Animation_Node_03.gltf",
+ "sampleImageName": "Figures/SampleImages/Animation_Node_03.png",
+ "camera": {
+ "translation": [
+ 0.0,
+ 0.0,
+ 1.3
+ ]
+ }
+ },
+ {
+ "fileName": "Animation_Node_04.gltf",
+ "sampleImageName": "Figures/SampleImages/Animation_Node_04.png",
+ "camera": {
+ "translation": [
+ 0.0,
+ 0.0,
+ 1.3
+ ]
+ }
+ },
+ {
+ "fileName": "Animation_Node_05.gltf",
+ "sampleImageName": "Figures/SampleImages/Animation_Node_05.png",
+ "camera": {
+ "translation": [
+ 0.0,
+ 0.0,
+ 1.3
+ ]
+ }
+ }
+ ]
+ },
{
"folder": "Buffer_Interleaved",
"models": [
diff --git a/Output/Material/README.md b/Output/Material/README.md
index aa70e589..bb4e51d4 100644
--- a/Output/Material/README.md
+++ b/Output/Material/README.md
@@ -12,12 +12,12 @@ The following table shows the properties that are set for a given model.
| | Sample Image | Normal Texture | Normal Texture Scale | Occlusion Texture | Occlusion Texture Strength | Emissive Texture | Emissive Factor |
| :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
-| [00](Material_00.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=2&model=0) | [](Figures/SampleImages/Material_00.png) | | | | | | |
-| [01](Material_01.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=2&model=1) | [](Figures/SampleImages/Material_01.png) | [](Textures/Normal_Plane.png) | | | | | |
-| [02](Material_02.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=2&model=2) | [](Figures/SampleImages/Material_02.png) | | | [](Textures/Occlusion_Plane.png) | | | |
-| [03](Material_03.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=2&model=3) | [](Figures/SampleImages/Material_03.png) | | | | | | [1.0, 1.0, 1.0] |
-| [04](Material_04.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=2&model=4) | [](Figures/SampleImages/Material_04.png) | [](Textures/Normal_Plane.png) | 10.0 | | | | |
-| [05](Material_05.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=2&model=5) | [](Figures/SampleImages/Material_05.png) | | | [](Textures/Occlusion_Plane.png) | 0.5 | | |
-| [06](Material_06.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=2&model=6) | [](Figures/SampleImages/Material_06.png) | | | | | [](Textures/Emissive_Plane.png) | [1.0, 1.0, 1.0] |
-| [07](Material_07.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=2&model=7) | [](Figures/SampleImages/Material_07.png) | [](Textures/Normal_Plane.png) | 10.0 | [](Textures/Occlusion_Plane.png) | 0.5 | [](Textures/Emissive_Plane.png) | [1.0, 1.0, 1.0] |
+| [00](Material_00.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=3&model=0) | [](Figures/SampleImages/Material_00.png) | | | | | | |
+| [01](Material_01.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=3&model=1) | [](Figures/SampleImages/Material_01.png) | [](Textures/Normal_Plane.png) | | | | | |
+| [02](Material_02.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=3&model=2) | [](Figures/SampleImages/Material_02.png) | | | [](Textures/Occlusion_Plane.png) | | | |
+| [03](Material_03.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=3&model=3) | [](Figures/SampleImages/Material_03.png) | | | | | | [1.0, 1.0, 1.0] |
+| [04](Material_04.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=3&model=4) | [](Figures/SampleImages/Material_04.png) | [](Textures/Normal_Plane.png) | 10.0 | | | | |
+| [05](Material_05.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=3&model=5) | [](Figures/SampleImages/Material_05.png) | | | [](Textures/Occlusion_Plane.png) | 0.5 | | |
+| [06](Material_06.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=3&model=6) | [](Figures/SampleImages/Material_06.png) | | | | | [](Textures/Emissive_Plane.png) | [1.0, 1.0, 1.0] |
+| [07](Material_07.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=3&model=7) | [](Figures/SampleImages/Material_07.png) | [](Textures/Normal_Plane.png) | 10.0 | [](Textures/Occlusion_Plane.png) | 0.5 | [](Textures/Emissive_Plane.png) | [1.0, 1.0, 1.0] |
diff --git a/Output/Material_AlphaBlend/README.md b/Output/Material_AlphaBlend/README.md
index 705a1ee7..e0ec498b 100644
--- a/Output/Material_AlphaBlend/README.md
+++ b/Output/Material_AlphaBlend/README.md
@@ -11,11 +11,11 @@ The following table shows the properties that are set for a given model.
| | Sample Image | Vertex Color | Base Color Texture | Base Color Factor |
| :---: | :---: | :---: | :---: | :---: |
-| [00](Material_AlphaBlend_00.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=3&model=0) | [](Figures/SampleImages/Material_AlphaBlend_00.png) | Vector4 Float | | |
-| [01](Material_AlphaBlend_01.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=3&model=1) | [](Figures/SampleImages/Material_AlphaBlend_01.png) | | [](Textures/BaseColor_Plane.png) | |
-| [02](Material_AlphaBlend_02.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=3&model=2) | [](Figures/SampleImages/Material_AlphaBlend_02.png) | | | [1.0, 1.0, 1.0, 0.7] |
-| [03](Material_AlphaBlend_03.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=3&model=3) | [](Figures/SampleImages/Material_AlphaBlend_03.png) | Vector4 Float | [](Textures/BaseColor_Plane.png) | |
-| [04](Material_AlphaBlend_04.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=3&model=4) | [](Figures/SampleImages/Material_AlphaBlend_04.png) | Vector4 Float | | [1.0, 1.0, 1.0, 0.7] |
-| [05](Material_AlphaBlend_05.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=3&model=5) | [](Figures/SampleImages/Material_AlphaBlend_05.png) | | [](Textures/BaseColor_Plane.png) | [1.0, 1.0, 1.0, 0.7] |
-| [06](Material_AlphaBlend_06.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=3&model=6) | [](Figures/SampleImages/Material_AlphaBlend_06.png) | Vector4 Float | [](Textures/BaseColor_Plane.png) | [1.0, 1.0, 1.0, 0.7] |
+| [00](Material_AlphaBlend_00.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=4&model=0) | [](Figures/SampleImages/Material_AlphaBlend_00.png) | Vector4 Float | | |
+| [01](Material_AlphaBlend_01.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=4&model=1) | [](Figures/SampleImages/Material_AlphaBlend_01.png) | | [](Textures/BaseColor_Plane.png) | |
+| [02](Material_AlphaBlend_02.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=4&model=2) | [](Figures/SampleImages/Material_AlphaBlend_02.png) | | | [1.0, 1.0, 1.0, 0.7] |
+| [03](Material_AlphaBlend_03.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=4&model=3) | [](Figures/SampleImages/Material_AlphaBlend_03.png) | Vector4 Float | [](Textures/BaseColor_Plane.png) | |
+| [04](Material_AlphaBlend_04.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=4&model=4) | [](Figures/SampleImages/Material_AlphaBlend_04.png) | Vector4 Float | | [1.0, 1.0, 1.0, 0.7] |
+| [05](Material_AlphaBlend_05.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=4&model=5) | [](Figures/SampleImages/Material_AlphaBlend_05.png) | | [](Textures/BaseColor_Plane.png) | [1.0, 1.0, 1.0, 0.7] |
+| [06](Material_AlphaBlend_06.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=4&model=6) | [](Figures/SampleImages/Material_AlphaBlend_06.png) | Vector4 Float | [](Textures/BaseColor_Plane.png) | [1.0, 1.0, 1.0, 0.7] |
diff --git a/Output/Material_AlphaMask/README.md b/Output/Material_AlphaMask/README.md
index 78ef8146..6527c10e 100644
--- a/Output/Material_AlphaMask/README.md
+++ b/Output/Material_AlphaMask/README.md
@@ -12,11 +12,11 @@ The following table shows the properties that are set for a given model.
| | Sample Image | Alpha Cutoff | Base Color Factor |
| :---: | :---: | :---: | :---: |
-| [00](Material_AlphaMask_00.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=4&model=0) | [](Figures/SampleImages/Material_AlphaMask_00.png) | | |
-| [01](Material_AlphaMask_01.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=4&model=1) | [](Figures/SampleImages/Material_AlphaMask_01.png) | 0.4 | |
-| [02](Material_AlphaMask_02.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=4&model=2) | [](Figures/SampleImages/Material_AlphaMask_02.png) | 0.7 | |
-| [03](Material_AlphaMask_03.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=4&model=3) | [](Figures/SampleImages/Material_AlphaMask_03.png) | 1.1 | |
-| [04](Material_AlphaMask_04.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=4&model=4) | [](Figures/SampleImages/Material_AlphaMask_04.png) | 0.0 | |
-| [05](Material_AlphaMask_05.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=4&model=5) | [](Figures/SampleImages/Material_AlphaMask_05.png) | 0.4 | [1.0, 1.0, 1.0, 0.7] |
-| [06](Material_AlphaMask_06.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=4&model=6) | [](Figures/SampleImages/Material_AlphaMask_06.png) | 0.6 | [1.0, 1.0, 1.0, 0.7] |
+| [00](Material_AlphaMask_00.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=5&model=0) | [](Figures/SampleImages/Material_AlphaMask_00.png) | | |
+| [01](Material_AlphaMask_01.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=5&model=1) | [](Figures/SampleImages/Material_AlphaMask_01.png) | 0.4 | |
+| [02](Material_AlphaMask_02.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=5&model=2) | [](Figures/SampleImages/Material_AlphaMask_02.png) | 0.7 | |
+| [03](Material_AlphaMask_03.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=5&model=3) | [](Figures/SampleImages/Material_AlphaMask_03.png) | 1.1 | |
+| [04](Material_AlphaMask_04.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=5&model=4) | [](Figures/SampleImages/Material_AlphaMask_04.png) | 0.0 | |
+| [05](Material_AlphaMask_05.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=5&model=5) | [](Figures/SampleImages/Material_AlphaMask_05.png) | 0.4 | [1.0, 1.0, 1.0, 0.7] |
+| [06](Material_AlphaMask_06.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=5&model=6) | [](Figures/SampleImages/Material_AlphaMask_06.png) | 0.6 | [1.0, 1.0, 1.0, 0.7] |
diff --git a/Output/Material_DoubleSided/README.md b/Output/Material_DoubleSided/README.md
index 407c1b45..fa3f9faa 100644
--- a/Output/Material_DoubleSided/README.md
+++ b/Output/Material_DoubleSided/README.md
@@ -12,8 +12,8 @@ The following table shows the properties that are set for a given model.
| | Sample Image | Vertex Normal | Vertex Tangent | Normal Texture |
| :---: | :---: | :---: | :---: | :---: |
-| [00](Material_DoubleSided_00.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=5&model=0) | [](Figures/SampleImages/Material_DoubleSided_00.png) | | | |
-| [01](Material_DoubleSided_01.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=5&model=1) | [](Figures/SampleImages/Material_DoubleSided_01.png) | :white_check_mark: | | |
-| [02](Material_DoubleSided_02.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=5&model=2) | [](Figures/SampleImages/Material_DoubleSided_02.png) | :white_check_mark: | | [](Textures/Normal_Plane.png) |
-| [03](Material_DoubleSided_03.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=5&model=3) | [](Figures/SampleImages/Material_DoubleSided_03.png) | :white_check_mark: | :white_check_mark: | [](Textures/Normal_Plane.png) |
+| [00](Material_DoubleSided_00.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=6&model=0) | [](Figures/SampleImages/Material_DoubleSided_00.png) | | | |
+| [01](Material_DoubleSided_01.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=6&model=1) | [](Figures/SampleImages/Material_DoubleSided_01.png) | :white_check_mark: | | |
+| [02](Material_DoubleSided_02.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=6&model=2) | [](Figures/SampleImages/Material_DoubleSided_02.png) | :white_check_mark: | | [](Textures/Normal_Plane.png) |
+| [03](Material_DoubleSided_03.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=6&model=3) | [](Figures/SampleImages/Material_DoubleSided_03.png) | :white_check_mark: | :white_check_mark: | [](Textures/Normal_Plane.png) |
diff --git a/Output/Material_MetallicRoughness/README.md b/Output/Material_MetallicRoughness/README.md
index b559f368..578cdcba 100644
--- a/Output/Material_MetallicRoughness/README.md
+++ b/Output/Material_MetallicRoughness/README.md
@@ -4,16 +4,16 @@ The following table shows the properties that are set for a given model.
| | Sample Image | Vertex Color | Base Color Texture | Base Color Factor | Metallic Roughness Texture | Metallic Factor | Roughness Factor |
| :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
-| [00](Material_MetallicRoughness_00.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=6&model=0) | [](Figures/SampleImages/Material_MetallicRoughness_00.png) | | | | | | |
-| [01](Material_MetallicRoughness_01.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=6&model=1) | [](Figures/SampleImages/Material_MetallicRoughness_01.png) | Vector3 Float | | | | | |
-| [02](Material_MetallicRoughness_02.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=6&model=2) | [](Figures/SampleImages/Material_MetallicRoughness_02.png) | | [](Textures/BaseColor_Plane.png) | | | | |
-| [03](Material_MetallicRoughness_03.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=6&model=3) | [](Figures/SampleImages/Material_MetallicRoughness_03.png) | | | [0.2, 0.2, 0.2, 0.8] | | | |
-| [04](Material_MetallicRoughness_04.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=6&model=4) | [](Figures/SampleImages/Material_MetallicRoughness_04.png) | | | | [](Textures/MetallicRoughness_Plane.png) | | |
-| [05](Material_MetallicRoughness_05.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=6&model=5) | [](Figures/SampleImages/Material_MetallicRoughness_05.png) | | | | | 0.0 | |
-| [06](Material_MetallicRoughness_06.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=6&model=6) | [](Figures/SampleImages/Material_MetallicRoughness_06.png) | | | | | | 0.0 |
-| [07](Material_MetallicRoughness_07.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=6&model=7) | [](Figures/SampleImages/Material_MetallicRoughness_07.png) | Vector3 Float | [](Textures/BaseColor_Plane.png) | | | | |
-| [08](Material_MetallicRoughness_08.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=6&model=8) | [](Figures/SampleImages/Material_MetallicRoughness_08.png) | | [](Textures/BaseColor_Plane.png) | [0.2, 0.2, 0.2, 0.8] | | | |
-| [09](Material_MetallicRoughness_09.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=6&model=9) | [](Figures/SampleImages/Material_MetallicRoughness_09.png) | | | | [](Textures/MetallicRoughness_Plane.png) | 0.0 | |
-| [10](Material_MetallicRoughness_10.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=6&model=10) | [](Figures/SampleImages/Material_MetallicRoughness_10.png) | | | | [](Textures/MetallicRoughness_Plane.png) | | 0.0 |
-| [11](Material_MetallicRoughness_11.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=6&model=11) | [](Figures/SampleImages/Material_MetallicRoughness_11.png) | Vector3 Float | [](Textures/BaseColor_Plane.png) | [0.2, 0.2, 0.2, 0.8] | [](Textures/MetallicRoughness_Plane.png) | 0.0 | 0.0 |
+| [00](Material_MetallicRoughness_00.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=7&model=0) | [](Figures/SampleImages/Material_MetallicRoughness_00.png) | | | | | | |
+| [01](Material_MetallicRoughness_01.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=7&model=1) | [](Figures/SampleImages/Material_MetallicRoughness_01.png) | Vector3 Float | | | | | |
+| [02](Material_MetallicRoughness_02.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=7&model=2) | [](Figures/SampleImages/Material_MetallicRoughness_02.png) | | [](Textures/BaseColor_Plane.png) | | | | |
+| [03](Material_MetallicRoughness_03.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=7&model=3) | [](Figures/SampleImages/Material_MetallicRoughness_03.png) | | | [0.2, 0.2, 0.2, 0.8] | | | |
+| [04](Material_MetallicRoughness_04.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=7&model=4) | [](Figures/SampleImages/Material_MetallicRoughness_04.png) | | | | [](Textures/MetallicRoughness_Plane.png) | | |
+| [05](Material_MetallicRoughness_05.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=7&model=5) | [](Figures/SampleImages/Material_MetallicRoughness_05.png) | | | | | 0.0 | |
+| [06](Material_MetallicRoughness_06.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=7&model=6) | [](Figures/SampleImages/Material_MetallicRoughness_06.png) | | | | | | 0.0 |
+| [07](Material_MetallicRoughness_07.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=7&model=7) | [](Figures/SampleImages/Material_MetallicRoughness_07.png) | Vector3 Float | [](Textures/BaseColor_Plane.png) | | | | |
+| [08](Material_MetallicRoughness_08.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=7&model=8) | [](Figures/SampleImages/Material_MetallicRoughness_08.png) | | [](Textures/BaseColor_Plane.png) | [0.2, 0.2, 0.2, 0.8] | | | |
+| [09](Material_MetallicRoughness_09.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=7&model=9) | [](Figures/SampleImages/Material_MetallicRoughness_09.png) | | | | [](Textures/MetallicRoughness_Plane.png) | 0.0 | |
+| [10](Material_MetallicRoughness_10.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=7&model=10) | [](Figures/SampleImages/Material_MetallicRoughness_10.png) | | | | [](Textures/MetallicRoughness_Plane.png) | | 0.0 |
+| [11](Material_MetallicRoughness_11.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=7&model=11) | [](Figures/SampleImages/Material_MetallicRoughness_11.png) | Vector3 Float | [](Textures/BaseColor_Plane.png) | [0.2, 0.2, 0.2, 0.8] | [](Textures/MetallicRoughness_Plane.png) | 0.0 | 0.0 |
diff --git a/Output/Material_Mixed/README.md b/Output/Material_Mixed/README.md
index 317f52d2..665033b0 100644
--- a/Output/Material_Mixed/README.md
+++ b/Output/Material_Mixed/README.md
@@ -17,7 +17,7 @@ The following table shows the properties that are set for a given model.
| | Sample Image | Specular Glossiness On Material 0 | Specular Glossiness On Material 1 |
| :---: | :---: | :---: | :---: |
-| [00](Material_Mixed_00.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=7&model=0) | [](Figures/SampleImages/Material_Mixed_00.png) | :white_check_mark: | :white_check_mark: |
-| [01](Material_Mixed_01.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=7&model=1) | [](Figures/SampleImages/Material_Mixed_01.png) | :x: | :x: |
-| [02](Material_Mixed_02.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=7&model=2) | [](Figures/SampleImages/Material_Mixed_02.png) | :white_check_mark: | :x: |
+| [00](Material_Mixed_00.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=8&model=0) | [](Figures/SampleImages/Material_Mixed_00.png) | :white_check_mark: | :white_check_mark: |
+| [01](Material_Mixed_01.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=8&model=1) | [](Figures/SampleImages/Material_Mixed_01.png) | :x: | :x: |
+| [02](Material_Mixed_02.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=8&model=2) | [](Figures/SampleImages/Material_Mixed_02.png) | :white_check_mark: | :x: |
diff --git a/Output/Material_SpecularGlossiness/README.md b/Output/Material_SpecularGlossiness/README.md
index 8aa063ac..5cfd948b 100644
--- a/Output/Material_SpecularGlossiness/README.md
+++ b/Output/Material_SpecularGlossiness/README.md
@@ -14,18 +14,18 @@ The following table shows the properties that are set for a given model.
| | Sample Image | Vertex Color | Diffuse Texture | Diffuse Factor | Specular Glossiness Texture | Specular Factor | Glossiness Factor |
| :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
-| [00](Material_SpecularGlossiness_00.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=8&model=0) | [](Figures/SampleImages/Material_SpecularGlossiness_00.png) | | | | | | |
-| [01](Material_SpecularGlossiness_01.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=8&model=1) | [](Figures/SampleImages/Material_SpecularGlossiness_01.png) | Vector3 Float | | | | [0.0, 0.0, 0.0] | |
-| [02](Material_SpecularGlossiness_02.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=8&model=2) | [](Figures/SampleImages/Material_SpecularGlossiness_02.png) | | [](Textures/Diffuse_Plane.png) | | | [0.0, 0.0, 0.0] | |
-| [03](Material_SpecularGlossiness_03.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=8&model=3) | [](Figures/SampleImages/Material_SpecularGlossiness_03.png) | | | [0.2, 0.2, 0.2, 0.8] | | [0.0, 0.0, 0.0] | |
-| [04](Material_SpecularGlossiness_04.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=8&model=4) | [](Figures/SampleImages/Material_SpecularGlossiness_04.png) | | | | [](Textures/SpecularGlossiness_Plane.png) | | |
-| [05](Material_SpecularGlossiness_05.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=8&model=5) | [](Figures/SampleImages/Material_SpecularGlossiness_05.png) | | | | | [0.4, 0.4, 0.4] | |
-| [06](Material_SpecularGlossiness_06.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=8&model=6) | [](Figures/SampleImages/Material_SpecularGlossiness_06.png) | | | | | | 0.3 |
-| [07](Material_SpecularGlossiness_07.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=8&model=7) | [](Figures/SampleImages/Material_SpecularGlossiness_07.png) | Vector3 Float | [](Textures/Diffuse_Plane.png) | | | [0.0, 0.0, 0.0] | |
-| [08](Material_SpecularGlossiness_08.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=8&model=8) | [](Figures/SampleImages/Material_SpecularGlossiness_08.png) | | [](Textures/Diffuse_Plane.png) | [0.2, 0.2, 0.2, 0.8] | | [0.0, 0.0, 0.0] | |
-| [09](Material_SpecularGlossiness_09.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=8&model=9) | [](Figures/SampleImages/Material_SpecularGlossiness_09.png) | | [](Textures/Diffuse_Plane.png) | | | | 0.3 |
-| [10](Material_SpecularGlossiness_10.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=8&model=10) | [](Figures/SampleImages/Material_SpecularGlossiness_10.png) | | | | [](Textures/SpecularGlossiness_Plane.png) | [0.4, 0.4, 0.4] | |
-| [11](Material_SpecularGlossiness_11.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=8&model=11) | [](Figures/SampleImages/Material_SpecularGlossiness_11.png) | | | | [](Textures/SpecularGlossiness_Plane.png) | | 0.3 |
-| [12](Material_SpecularGlossiness_12.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=8&model=12) | [](Figures/SampleImages/Material_SpecularGlossiness_12.png) | | [](Textures/Diffuse_Plane.png) | | | [0.4, 0.4, 0.4] | 0.3 |
-| [13](Material_SpecularGlossiness_13.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=8&model=13) | [](Figures/SampleImages/Material_SpecularGlossiness_13.png) | Vector3 Float | [](Textures/Diffuse_Plane.png) | [0.2, 0.2, 0.2, 0.8] | [](Textures/SpecularGlossiness_Plane.png) | [0.4, 0.4, 0.4] | 0.3 |
+| [00](Material_SpecularGlossiness_00.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=9&model=0) | [](Figures/SampleImages/Material_SpecularGlossiness_00.png) | | | | | | |
+| [01](Material_SpecularGlossiness_01.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=9&model=1) | [](Figures/SampleImages/Material_SpecularGlossiness_01.png) | Vector3 Float | | | | [0.0, 0.0, 0.0] | |
+| [02](Material_SpecularGlossiness_02.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=9&model=2) | [](Figures/SampleImages/Material_SpecularGlossiness_02.png) | | [](Textures/Diffuse_Plane.png) | | | [0.0, 0.0, 0.0] | |
+| [03](Material_SpecularGlossiness_03.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=9&model=3) | [](Figures/SampleImages/Material_SpecularGlossiness_03.png) | | | [0.2, 0.2, 0.2, 0.8] | | [0.0, 0.0, 0.0] | |
+| [04](Material_SpecularGlossiness_04.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=9&model=4) | [](Figures/SampleImages/Material_SpecularGlossiness_04.png) | | | | [](Textures/SpecularGlossiness_Plane.png) | | |
+| [05](Material_SpecularGlossiness_05.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=9&model=5) | [](Figures/SampleImages/Material_SpecularGlossiness_05.png) | | | | | [0.4, 0.4, 0.4] | |
+| [06](Material_SpecularGlossiness_06.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=9&model=6) | [](Figures/SampleImages/Material_SpecularGlossiness_06.png) | | | | | | 0.3 |
+| [07](Material_SpecularGlossiness_07.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=9&model=7) | [](Figures/SampleImages/Material_SpecularGlossiness_07.png) | Vector3 Float | [](Textures/Diffuse_Plane.png) | | | [0.0, 0.0, 0.0] | |
+| [08](Material_SpecularGlossiness_08.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=9&model=8) | [](Figures/SampleImages/Material_SpecularGlossiness_08.png) | | [](Textures/Diffuse_Plane.png) | [0.2, 0.2, 0.2, 0.8] | | [0.0, 0.0, 0.0] | |
+| [09](Material_SpecularGlossiness_09.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=9&model=9) | [](Figures/SampleImages/Material_SpecularGlossiness_09.png) | | [](Textures/Diffuse_Plane.png) | | | | 0.3 |
+| [10](Material_SpecularGlossiness_10.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=9&model=10) | [](Figures/SampleImages/Material_SpecularGlossiness_10.png) | | | | [](Textures/SpecularGlossiness_Plane.png) | [0.4, 0.4, 0.4] | |
+| [11](Material_SpecularGlossiness_11.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=9&model=11) | [](Figures/SampleImages/Material_SpecularGlossiness_11.png) | | | | [](Textures/SpecularGlossiness_Plane.png) | | 0.3 |
+| [12](Material_SpecularGlossiness_12.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=9&model=12) | [](Figures/SampleImages/Material_SpecularGlossiness_12.png) | | [](Textures/Diffuse_Plane.png) | | | [0.4, 0.4, 0.4] | 0.3 |
+| [13](Material_SpecularGlossiness_13.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=9&model=13) | [](Figures/SampleImages/Material_SpecularGlossiness_13.png) | Vector3 Float | [](Textures/Diffuse_Plane.png) | [0.2, 0.2, 0.2, 0.8] | [](Textures/SpecularGlossiness_Plane.png) | [0.4, 0.4, 0.4] | 0.3 |
diff --git a/Output/Mesh_PrimitiveAttribute/README.md b/Output/Mesh_PrimitiveAttribute/README.md
index 46ae7b57..b1d9b770 100644
--- a/Output/Mesh_PrimitiveAttribute/README.md
+++ b/Output/Mesh_PrimitiveAttribute/README.md
@@ -15,11 +15,11 @@ The following table shows the properties that are set for a given model.
| | Sample Image | Vertex UV 0 | Vertex Normal | Vertex Tangent | Normal Texture |
| :---: | :---: | :---: | :---: | :---: | :---: |
-| [00](Mesh_PrimitiveAttribute_00.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=9&model=0) | [](Figures/SampleImages/Mesh_PrimitiveAttribute_00.png) | Float | | | |
-| [01](Mesh_PrimitiveAttribute_01.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=9&model=1) | [](Figures/SampleImages/Mesh_PrimitiveAttribute_01.png) | Byte | | | |
-| [02](Mesh_PrimitiveAttribute_02.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=9&model=2) | [](Figures/SampleImages/Mesh_PrimitiveAttribute_02.png) | Short | | | |
-| [03](Mesh_PrimitiveAttribute_03.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=9&model=3) | [](Figures/SampleImages/Mesh_PrimitiveAttribute_03.png) | Float | :white_check_mark: | | |
-| [04](Mesh_PrimitiveAttribute_04.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=9&model=4) | [](Figures/SampleImages/Mesh_PrimitiveAttribute_04.png) | Float | | | [](Textures/Normal_Plane.png) |
-| [05](Mesh_PrimitiveAttribute_05.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=9&model=5) | [](Figures/SampleImages/Mesh_PrimitiveAttribute_05.png) | Float | :white_check_mark: | | [](Textures/Normal_Plane.png) |
-| [06](Mesh_PrimitiveAttribute_06.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=9&model=6) | [](Figures/SampleImages/Mesh_PrimitiveAttribute_06.png) | Float | :white_check_mark: | :white_check_mark: | [](Textures/Normal_Plane.png) |
+| [00](Mesh_PrimitiveAttribute_00.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=10&model=0) | [](Figures/SampleImages/Mesh_PrimitiveAttribute_00.png) | Float | | | |
+| [01](Mesh_PrimitiveAttribute_01.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=10&model=1) | [](Figures/SampleImages/Mesh_PrimitiveAttribute_01.png) | Byte | | | |
+| [02](Mesh_PrimitiveAttribute_02.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=10&model=2) | [](Figures/SampleImages/Mesh_PrimitiveAttribute_02.png) | Short | | | |
+| [03](Mesh_PrimitiveAttribute_03.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=10&model=3) | [](Figures/SampleImages/Mesh_PrimitiveAttribute_03.png) | Float | :white_check_mark: | | |
+| [04](Mesh_PrimitiveAttribute_04.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=10&model=4) | [](Figures/SampleImages/Mesh_PrimitiveAttribute_04.png) | Float | | | [](Textures/Normal_Plane.png) |
+| [05](Mesh_PrimitiveAttribute_05.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=10&model=5) | [](Figures/SampleImages/Mesh_PrimitiveAttribute_05.png) | Float | :white_check_mark: | | [](Textures/Normal_Plane.png) |
+| [06](Mesh_PrimitiveAttribute_06.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=10&model=6) | [](Figures/SampleImages/Mesh_PrimitiveAttribute_06.png) | Float | :white_check_mark: | :white_check_mark: | [](Textures/Normal_Plane.png) |
diff --git a/Output/Mesh_PrimitiveMode/README.md b/Output/Mesh_PrimitiveMode/README.md
index 0f08db37..f948f2e5 100644
--- a/Output/Mesh_PrimitiveMode/README.md
+++ b/Output/Mesh_PrimitiveMode/README.md
@@ -14,20 +14,20 @@ The following table shows the properties that are set for a given model.
| | Sample Image | Mode | Indices Values | Indices Component Type |
| :---: | :---: | :---: | :---: | :---: |
-| [00](Mesh_PrimitiveMode_00.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=10&model=0) | [](Figures/SampleImages/Mesh_PrimitiveMode_00.png) | Points | | |
-| [01](Mesh_PrimitiveMode_01.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=10&model=1) | [](Figures/SampleImages/Mesh_PrimitiveMode_01.png) | Lines | | |
-| [02](Mesh_PrimitiveMode_02.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=10&model=2) | [](Figures/SampleImages/Mesh_PrimitiveMode_02.png) | Line Loop | | |
-| [03](Mesh_PrimitiveMode_03.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=10&model=3) | [](Figures/SampleImages/Mesh_PrimitiveMode_03.png) | Line Strip | | |
-| [04](Mesh_PrimitiveMode_04.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=10&model=4) | [](Figures/SampleImages/Mesh_PrimitiveMode_04.png) | Triangle Strip | | |
-| [05](Mesh_PrimitiveMode_05.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=10&model=5) | [](Figures/SampleImages/Mesh_PrimitiveMode_05.png) | Triangle Fan | | |
-| [06](Mesh_PrimitiveMode_06.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=10&model=6) | [](Figures/SampleImages/Mesh_PrimitiveMode_06.png) | Triangles | | |
-| [07](Mesh_PrimitiveMode_07.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=10&model=7) | [](Figures/SampleImages/Mesh_PrimitiveMode_07.png) | Points | [0 - 1023] | Int |
-| [08](Mesh_PrimitiveMode_08.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=10&model=8) | [](Figures/SampleImages/Mesh_PrimitiveMode_08.png) | Lines | [0, 3, 3, 2, 2, 1, 1, 0] | Int |
-| [09](Mesh_PrimitiveMode_09.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=10&model=9) | [](Figures/SampleImages/Mesh_PrimitiveMode_09.png) | Line Loop | [0, 3, 2, 1] | Int |
-| [10](Mesh_PrimitiveMode_10.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=10&model=10) | [](Figures/SampleImages/Mesh_PrimitiveMode_10.png) | Line Strip | [0, 3, 2, 1, 0] | Int |
-| [11](Mesh_PrimitiveMode_11.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=10&model=11) | [](Figures/SampleImages/Mesh_PrimitiveMode_11.png) | Triangle Strip | [0, 3, 1, 2] | Int |
-| [12](Mesh_PrimitiveMode_12.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=10&model=12) | [](Figures/SampleImages/Mesh_PrimitiveMode_12.png) | Triangle Fan | [0, 3, 2, 1] | Int |
-| [13](Mesh_PrimitiveMode_13.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=10&model=13) | [](Figures/SampleImages/Mesh_PrimitiveMode_13.png) | Triangles | [1, 0, 3, 1, 3, 2] | Int |
-| [14](Mesh_PrimitiveMode_14.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=10&model=14) | [](Figures/SampleImages/Mesh_PrimitiveMode_14.png) | Triangles | [1, 0, 3, 1, 3, 2] | Byte |
-| [15](Mesh_PrimitiveMode_15.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=10&model=15) | [](Figures/SampleImages/Mesh_PrimitiveMode_15.png) | Triangles | [1, 0, 3, 1, 3, 2] | Short |
+| [00](Mesh_PrimitiveMode_00.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=11&model=0) | [](Figures/SampleImages/Mesh_PrimitiveMode_00.png) | Points | | |
+| [01](Mesh_PrimitiveMode_01.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=11&model=1) | [](Figures/SampleImages/Mesh_PrimitiveMode_01.png) | Lines | | |
+| [02](Mesh_PrimitiveMode_02.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=11&model=2) | [](Figures/SampleImages/Mesh_PrimitiveMode_02.png) | Line Loop | | |
+| [03](Mesh_PrimitiveMode_03.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=11&model=3) | [](Figures/SampleImages/Mesh_PrimitiveMode_03.png) | Line Strip | | |
+| [04](Mesh_PrimitiveMode_04.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=11&model=4) | [](Figures/SampleImages/Mesh_PrimitiveMode_04.png) | Triangle Strip | | |
+| [05](Mesh_PrimitiveMode_05.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=11&model=5) | [](Figures/SampleImages/Mesh_PrimitiveMode_05.png) | Triangle Fan | | |
+| [06](Mesh_PrimitiveMode_06.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=11&model=6) | [](Figures/SampleImages/Mesh_PrimitiveMode_06.png) | Triangles | | |
+| [07](Mesh_PrimitiveMode_07.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=11&model=7) | [](Figures/SampleImages/Mesh_PrimitiveMode_07.png) | Points | [0 - 1023] | Int |
+| [08](Mesh_PrimitiveMode_08.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=11&model=8) | [](Figures/SampleImages/Mesh_PrimitiveMode_08.png) | Lines | [0, 3, 3, 2, 2, 1, 1, 0] | Int |
+| [09](Mesh_PrimitiveMode_09.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=11&model=9) | [](Figures/SampleImages/Mesh_PrimitiveMode_09.png) | Line Loop | [0, 3, 2, 1] | Int |
+| [10](Mesh_PrimitiveMode_10.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=11&model=10) | [](Figures/SampleImages/Mesh_PrimitiveMode_10.png) | Line Strip | [0, 3, 2, 1, 0] | Int |
+| [11](Mesh_PrimitiveMode_11.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=11&model=11) | [](Figures/SampleImages/Mesh_PrimitiveMode_11.png) | Triangle Strip | [0, 3, 1, 2] | Int |
+| [12](Mesh_PrimitiveMode_12.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=11&model=12) | [](Figures/SampleImages/Mesh_PrimitiveMode_12.png) | Triangle Fan | [0, 3, 2, 1] | Int |
+| [13](Mesh_PrimitiveMode_13.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=11&model=13) | [](Figures/SampleImages/Mesh_PrimitiveMode_13.png) | Triangles | [1, 0, 3, 1, 3, 2] | Int |
+| [14](Mesh_PrimitiveMode_14.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=11&model=14) | [](Figures/SampleImages/Mesh_PrimitiveMode_14.png) | Triangles | [1, 0, 3, 1, 3, 2] | Byte |
+| [15](Mesh_PrimitiveMode_15.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=11&model=15) | [](Figures/SampleImages/Mesh_PrimitiveMode_15.png) | Triangles | [1, 0, 3, 1, 3, 2] | Short |
diff --git a/Output/Mesh_PrimitiveVertexColor/README.md b/Output/Mesh_PrimitiveVertexColor/README.md
index e7df5c91..f6edac81 100644
--- a/Output/Mesh_PrimitiveVertexColor/README.md
+++ b/Output/Mesh_PrimitiveVertexColor/README.md
@@ -6,10 +6,10 @@ The following table shows the properties that are set for a given model.
| | Sample Image | Vertex Color |
| :---: | :---: | :---: |
-| [00](Mesh_PrimitiveVertexColor_00.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=11&model=0) | [](Figures/SampleImages/Mesh_PrimitiveVertexColor_00.png) | Vector3 Float |
-| [01](Mesh_PrimitiveVertexColor_01.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=11&model=1) | [](Figures/SampleImages/Mesh_PrimitiveVertexColor_01.png) | Vector3 Byte |
-| [02](Mesh_PrimitiveVertexColor_02.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=11&model=2) | [](Figures/SampleImages/Mesh_PrimitiveVertexColor_02.png) | Vector3 Short |
-| [03](Mesh_PrimitiveVertexColor_03.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=11&model=3) | [](Figures/SampleImages/Mesh_PrimitiveVertexColor_03.png) | Vector4 Float |
-| [04](Mesh_PrimitiveVertexColor_04.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=11&model=4) | [](Figures/SampleImages/Mesh_PrimitiveVertexColor_04.png) | Vector4 Byte |
-| [05](Mesh_PrimitiveVertexColor_05.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=11&model=5) | [](Figures/SampleImages/Mesh_PrimitiveVertexColor_05.png) | Vector4 Short |
+| [00](Mesh_PrimitiveVertexColor_00.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=12&model=0) | [](Figures/SampleImages/Mesh_PrimitiveVertexColor_00.png) | Vector3 Float |
+| [01](Mesh_PrimitiveVertexColor_01.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=12&model=1) | [](Figures/SampleImages/Mesh_PrimitiveVertexColor_01.png) | Vector3 Byte |
+| [02](Mesh_PrimitiveVertexColor_02.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=12&model=2) | [](Figures/SampleImages/Mesh_PrimitiveVertexColor_02.png) | Vector3 Short |
+| [03](Mesh_PrimitiveVertexColor_03.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=12&model=3) | [](Figures/SampleImages/Mesh_PrimitiveVertexColor_03.png) | Vector4 Float |
+| [04](Mesh_PrimitiveVertexColor_04.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=12&model=4) | [](Figures/SampleImages/Mesh_PrimitiveVertexColor_04.png) | Vector4 Byte |
+| [05](Mesh_PrimitiveVertexColor_05.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=12&model=5) | [](Figures/SampleImages/Mesh_PrimitiveVertexColor_05.png) | Vector4 Short |
diff --git a/Output/Mesh_Primitives/README.md b/Output/Mesh_Primitives/README.md
index 7b7f726c..6225520b 100644
--- a/Output/Mesh_Primitives/README.md
+++ b/Output/Mesh_Primitives/README.md
@@ -25,5 +25,5 @@ The following table shows the properties that are set for a given model.
| | Sample Image | Primitive 0 | Primitive 1 |
| :---: | :---: | :---: | :---: |
-| [00](Mesh_Primitives_00.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=12&model=0) | [](Figures/SampleImages/Mesh_Primitives_00.png) | Material 0 | Material 1 |
+| [00](Mesh_Primitives_00.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=13&model=0) | [](Figures/SampleImages/Mesh_Primitives_00.png) | Material 0 | Material 1 |
diff --git a/Output/Mesh_PrimitivesUV/README.md b/Output/Mesh_PrimitivesUV/README.md
index 0d914f64..b8e171ab 100644
--- a/Output/Mesh_PrimitivesUV/README.md
+++ b/Output/Mesh_PrimitivesUV/README.md
@@ -33,13 +33,13 @@ The following table shows the properties that are set for a given model.
| | Sample Image | Primitive 0 Vertex UV 0 | Primitive 1 Vertex UV 0 | Primitive 0 Vertex UV 1 | Primitive 1 Vertex UV 1 |
| :---: | :---: | :---: | :---: | :---: | :---: |
-| [00](Mesh_PrimitivesUV_00.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=13&model=0) | [](Figures/SampleImages/Mesh_PrimitivesUV_00.png) | | | | |
-| [01](Mesh_PrimitivesUV_01.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=13&model=1) | [](Figures/SampleImages/Mesh_PrimitivesUV_01.png) | :white_check_mark: | | | |
-| [02](Mesh_PrimitivesUV_02.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=13&model=2) | [](Figures/SampleImages/Mesh_PrimitivesUV_02.png) | | :white_check_mark: | | |
-| [03](Mesh_PrimitivesUV_03.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=13&model=3) | [](Figures/SampleImages/Mesh_PrimitivesUV_03.png) | :white_check_mark: | :white_check_mark: | | |
-| [04](Mesh_PrimitivesUV_04.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=13&model=4) | [](Figures/SampleImages/Mesh_PrimitivesUV_04.png) | :white_check_mark: | | :white_check_mark: | |
-| [05](Mesh_PrimitivesUV_05.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=13&model=5) | [](Figures/SampleImages/Mesh_PrimitivesUV_05.png) | | :white_check_mark: | | :white_check_mark: |
-| [06](Mesh_PrimitivesUV_06.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=13&model=6) | [](Figures/SampleImages/Mesh_PrimitivesUV_06.png) | :white_check_mark: | :white_check_mark: | | :white_check_mark: |
-| [07](Mesh_PrimitivesUV_07.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=13&model=7) | [](Figures/SampleImages/Mesh_PrimitivesUV_07.png) | :white_check_mark: | :white_check_mark: | :white_check_mark: | |
-| [08](Mesh_PrimitivesUV_08.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=13&model=8) | [](Figures/SampleImages/Mesh_PrimitivesUV_08.png) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
+| [00](Mesh_PrimitivesUV_00.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=14&model=0) | [](Figures/SampleImages/Mesh_PrimitivesUV_00.png) | | | | |
+| [01](Mesh_PrimitivesUV_01.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=14&model=1) | [](Figures/SampleImages/Mesh_PrimitivesUV_01.png) | :white_check_mark: | | | |
+| [02](Mesh_PrimitivesUV_02.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=14&model=2) | [](Figures/SampleImages/Mesh_PrimitivesUV_02.png) | | :white_check_mark: | | |
+| [03](Mesh_PrimitivesUV_03.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=14&model=3) | [](Figures/SampleImages/Mesh_PrimitivesUV_03.png) | :white_check_mark: | :white_check_mark: | | |
+| [04](Mesh_PrimitivesUV_04.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=14&model=4) | [](Figures/SampleImages/Mesh_PrimitivesUV_04.png) | :white_check_mark: | | :white_check_mark: | |
+| [05](Mesh_PrimitivesUV_05.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=14&model=5) | [](Figures/SampleImages/Mesh_PrimitivesUV_05.png) | | :white_check_mark: | | :white_check_mark: |
+| [06](Mesh_PrimitivesUV_06.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=14&model=6) | [](Figures/SampleImages/Mesh_PrimitivesUV_06.png) | :white_check_mark: | :white_check_mark: | | :white_check_mark: |
+| [07](Mesh_PrimitivesUV_07.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=14&model=7) | [](Figures/SampleImages/Mesh_PrimitivesUV_07.png) | :white_check_mark: | :white_check_mark: | :white_check_mark: | |
+| [08](Mesh_PrimitivesUV_08.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=14&model=8) | [](Figures/SampleImages/Mesh_PrimitivesUV_08.png) | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
diff --git a/Output/Node_Attribute/README.md b/Output/Node_Attribute/README.md
index 0ff30b4d..06fd8924 100644
--- a/Output/Node_Attribute/README.md
+++ b/Output/Node_Attribute/README.md
@@ -7,13 +7,13 @@ The following table shows the properties that are set for a given model.
| | Sample Image | Matrix | Translation | Rotation | Scale |
| :---: | :---: | :---: | :---: | :---: | :---: |
-| [00](Node_Attribute_00.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=14&model=0) | [](Figures/SampleImages/Node_Attribute_00.png) | | | | |
-| [01](Node_Attribute_01.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=14&model=1) | [](Figures/SampleImages/Node_Attribute_01.png) | | [-2.0, 2.0, -2.0] | | |
-| [02](Node_Attribute_02.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=14&model=2) | [](Figures/SampleImages/Node_Attribute_02.png) | | [-2.0, 0.0, 0.0] | | |
-| [03](Node_Attribute_03.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=14&model=3) | [](Figures/SampleImages/Node_Attribute_03.png) | | [0.0, 2.0, 0.0] | | |
-| [04](Node_Attribute_04.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=14&model=4) | [](Figures/SampleImages/Node_Attribute_04.png) | | [0.0, 0.0, -2.0] | | |
-| [05](Node_Attribute_05.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=14&model=5) | [](Figures/SampleImages/Node_Attribute_05.png) | | | [0.0, 1.0, 0.0, 0.0] | |
-| [06](Node_Attribute_06.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=14&model=6) | [](Figures/SampleImages/Node_Attribute_06.png) | | | | [1.2, 1.2, 1.2] |
-| [07](Node_Attribute_07.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=14&model=7) | [](Figures/SampleImages/Node_Attribute_07.png) | | [-2.0, 2.0, -2.0] | [0.0, 1.0, 0.0, 0.0] | [1.2, 1.2, 1.2] |
-| [08](Node_Attribute_08.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=14&model=8) | [](Figures/SampleImages/Node_Attribute_08.png) | [-1.2, 0.0, 0.0, 0.0]
[0.0, 1.2, 0.0, 0.0]
[0.0, 0.0, -1.2, 0.0]
[-2.0, 2.0, -2.0, 1.0]
| | | |
+| [00](Node_Attribute_00.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=15&model=0) | [](Figures/SampleImages/Node_Attribute_00.png) | | | | |
+| [01](Node_Attribute_01.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=15&model=1) | [](Figures/SampleImages/Node_Attribute_01.png) | | [-2.0, 2.0, -2.0] | | |
+| [02](Node_Attribute_02.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=15&model=2) | [](Figures/SampleImages/Node_Attribute_02.png) | | [-2.0, 0.0, 0.0] | | |
+| [03](Node_Attribute_03.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=15&model=3) | [](Figures/SampleImages/Node_Attribute_03.png) | | [0.0, 2.0, 0.0] | | |
+| [04](Node_Attribute_04.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=15&model=4) | [](Figures/SampleImages/Node_Attribute_04.png) | | [0.0, 0.0, -2.0] | | |
+| [05](Node_Attribute_05.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=15&model=5) | [](Figures/SampleImages/Node_Attribute_05.png) | | | [0.0, 1.0, 0.0, 0.0] | |
+| [06](Node_Attribute_06.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=15&model=6) | [](Figures/SampleImages/Node_Attribute_06.png) | | | | [1.2, 1.2, 1.2] |
+| [07](Node_Attribute_07.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=15&model=7) | [](Figures/SampleImages/Node_Attribute_07.png) | | [-2.0, 2.0, -2.0] | [0.0, 1.0, 0.0, 0.0] | [1.2, 1.2, 1.2] |
+| [08](Node_Attribute_08.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=15&model=8) | [](Figures/SampleImages/Node_Attribute_08.png) | [-1.2, 0.0, 0.0, 0.0]
[0.0, 1.2, 0.0, 0.0]
[0.0, 0.0, -1.2, 0.0]
[-2.0, 2.0, -2.0, 1.0]
| | | |
diff --git a/Output/Node_NegativeScale/README.md b/Output/Node_NegativeScale/README.md
index a902a291..bd930a10 100644
--- a/Output/Node_NegativeScale/README.md
+++ b/Output/Node_NegativeScale/README.md
@@ -18,17 +18,17 @@ The following table shows the properties that are set for a given model.
| | Sample Image | Vertex Normal | Vertex Tangent | Matrix | Scale |
| :---: | :---: | :---: | :---: | :---: | :---: |
-| [00](Node_NegativeScale_00.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=15&model=0) | [](Figures/SampleImages/Node_NegativeScale_00.png) | | | | |
-| [01](Node_NegativeScale_01.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=15&model=1) | [](Figures/SampleImages/Node_NegativeScale_01.png) | | | [-1.0, 0.0, 0.0, 0.0]
[0.0, 1.0, 0.0, 0.0]
[0.0, 0.0, 1.0, 0.0]
[0.0, 2.0, 0.0, 1.0]
| |
-| [02](Node_NegativeScale_02.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=15&model=2) | [](Figures/SampleImages/Node_NegativeScale_02.png) | | | [-1.0, 0.0, 0.0, 0.0]
[0.0, -1.0, 0.0, 0.0]
[0.0, 0.0, 1.0, 0.0]
[0.0, 2.0, 0.0, 1.0]
| |
-| [03](Node_NegativeScale_03.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=15&model=3) | [](Figures/SampleImages/Node_NegativeScale_03.png) | | | [-1.0, 0.0, 0.0, 0.0]
[0.0, -1.0, 0.0, 0.0]
[0.0, 0.0, -1.0, 0.0]
[0.0, 2.0, 0.0, 1.0]
| |
-| [04](Node_NegativeScale_04.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=15&model=4) | [](Figures/SampleImages/Node_NegativeScale_04.png) | | | | [-1.0, 1.0, 1.0] |
-| [05](Node_NegativeScale_05.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=15&model=5) | [](Figures/SampleImages/Node_NegativeScale_05.png) | | | | [-1.0, -1.0, 1.0] |
-| [06](Node_NegativeScale_06.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=15&model=6) | [](Figures/SampleImages/Node_NegativeScale_06.png) | | | | [-1.0, -1.0, -1.0] |
-| [07](Node_NegativeScale_07.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=15&model=7) | [](Figures/SampleImages/Node_NegativeScale_07.png) | :white_check_mark: | | | [-1.0, 1.0, 1.0] |
-| [08](Node_NegativeScale_08.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=15&model=8) | [](Figures/SampleImages/Node_NegativeScale_08.png) | :white_check_mark: | | | [-1.0, -1.0, 1.0] |
-| [09](Node_NegativeScale_09.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=15&model=9) | [](Figures/SampleImages/Node_NegativeScale_09.png) | :white_check_mark: | | | [-1.0, -1.0, -1.0] |
-| [10](Node_NegativeScale_10.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=15&model=10) | [](Figures/SampleImages/Node_NegativeScale_10.png) | :white_check_mark: | :white_check_mark: | | [-1.0, 1.0, 1.0] |
-| [11](Node_NegativeScale_11.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=15&model=11) | [](Figures/SampleImages/Node_NegativeScale_11.png) | :white_check_mark: | :white_check_mark: | | [-1.0, -1.0, 1.0] |
-| [12](Node_NegativeScale_12.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=15&model=12) | [](Figures/SampleImages/Node_NegativeScale_12.png) | :white_check_mark: | :white_check_mark: | | [-1.0, -1.0, -1.0] |
+| [00](Node_NegativeScale_00.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=16&model=0) | [](Figures/SampleImages/Node_NegativeScale_00.png) | | | | |
+| [01](Node_NegativeScale_01.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=16&model=1) | [](Figures/SampleImages/Node_NegativeScale_01.png) | | | [-1.0, 0.0, 0.0, 0.0]
[0.0, 1.0, 0.0, 0.0]
[0.0, 0.0, 1.0, 0.0]
[0.0, 2.0, 0.0, 1.0]
| |
+| [02](Node_NegativeScale_02.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=16&model=2) | [](Figures/SampleImages/Node_NegativeScale_02.png) | | | [-1.0, 0.0, 0.0, 0.0]
[0.0, -1.0, 0.0, 0.0]
[0.0, 0.0, 1.0, 0.0]
[0.0, 2.0, 0.0, 1.0]
| |
+| [03](Node_NegativeScale_03.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=16&model=3) | [](Figures/SampleImages/Node_NegativeScale_03.png) | | | [-1.0, 0.0, 0.0, 0.0]
[0.0, -1.0, 0.0, 0.0]
[0.0, 0.0, -1.0, 0.0]
[0.0, 2.0, 0.0, 1.0]
| |
+| [04](Node_NegativeScale_04.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=16&model=4) | [](Figures/SampleImages/Node_NegativeScale_04.png) | | | | [-1.0, 1.0, 1.0] |
+| [05](Node_NegativeScale_05.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=16&model=5) | [](Figures/SampleImages/Node_NegativeScale_05.png) | | | | [-1.0, -1.0, 1.0] |
+| [06](Node_NegativeScale_06.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=16&model=6) | [](Figures/SampleImages/Node_NegativeScale_06.png) | | | | [-1.0, -1.0, -1.0] |
+| [07](Node_NegativeScale_07.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=16&model=7) | [](Figures/SampleImages/Node_NegativeScale_07.png) | :white_check_mark: | | | [-1.0, 1.0, 1.0] |
+| [08](Node_NegativeScale_08.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=16&model=8) | [](Figures/SampleImages/Node_NegativeScale_08.png) | :white_check_mark: | | | [-1.0, -1.0, 1.0] |
+| [09](Node_NegativeScale_09.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=16&model=9) | [](Figures/SampleImages/Node_NegativeScale_09.png) | :white_check_mark: | | | [-1.0, -1.0, -1.0] |
+| [10](Node_NegativeScale_10.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=16&model=10) | [](Figures/SampleImages/Node_NegativeScale_10.png) | :white_check_mark: | :white_check_mark: | | [-1.0, 1.0, 1.0] |
+| [11](Node_NegativeScale_11.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=16&model=11) | [](Figures/SampleImages/Node_NegativeScale_11.png) | :white_check_mark: | :white_check_mark: | | [-1.0, -1.0, 1.0] |
+| [12](Node_NegativeScale_12.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=16&model=12) | [](Figures/SampleImages/Node_NegativeScale_12.png) | :white_check_mark: | :white_check_mark: | | [-1.0, -1.0, -1.0] |
diff --git a/Output/Texture_Sampler/README.md b/Output/Texture_Sampler/README.md
index 832409b1..6fb0e745 100644
--- a/Output/Texture_Sampler/README.md
+++ b/Output/Texture_Sampler/README.md
@@ -11,18 +11,18 @@ The following table shows the properties that are set for a given model.
| | Sample Image | Wrap T | Wrap S | Mag Filter | Min Filter |
| :---: | :---: | :---: | :---: | :---: | :---: |
-| [00](Texture_Sampler_00.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=16&model=0) | [](Figures/SampleImages/Texture_Sampler_00.png) | | | | |
-| [01](Texture_Sampler_01.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=16&model=1) | [](Figures/SampleImages/Texture_Sampler_01.png) | Clamp To Edge | | | |
-| [02](Texture_Sampler_02.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=16&model=2) | [](Figures/SampleImages/Texture_Sampler_02.png) | Mirrored Repeat | | | |
-| [03](Texture_Sampler_03.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=16&model=3) | [](Figures/SampleImages/Texture_Sampler_03.png) | | Clamp To Edge | | |
-| [04](Texture_Sampler_04.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=16&model=4) | [](Figures/SampleImages/Texture_Sampler_04.png) | | Mirrored Repeat | | |
-| [05](Texture_Sampler_05.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=16&model=5) | [](Figures/SampleImages/Texture_Sampler_05.png) | | | Nearest | |
-| [06](Texture_Sampler_06.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=16&model=6) | [](Figures/SampleImages/Texture_Sampler_06.png) | | | Linear | |
-| [07](Texture_Sampler_07.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=16&model=7) | [](Figures/SampleImages/Texture_Sampler_07.png) | | | | Nearest |
-| [08](Texture_Sampler_08.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=16&model=8) | [](Figures/SampleImages/Texture_Sampler_08.png) | | | | Linear |
-| [09](Texture_Sampler_09.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=16&model=9) | [](Figures/SampleImages/Texture_Sampler_09.png) | | | | Nearest Mipmap Nearest |
-| [10](Texture_Sampler_10.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=16&model=10) | [](Figures/SampleImages/Texture_Sampler_10.png) | | | | Linear Mipmap Nearest |
-| [11](Texture_Sampler_11.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=16&model=11) | [](Figures/SampleImages/Texture_Sampler_11.png) | | | | Nearest Mipmap Linear |
-| [12](Texture_Sampler_12.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=16&model=12) | [](Figures/SampleImages/Texture_Sampler_12.png) | | | | Linear Mipmap Linear |
-| [13](Texture_Sampler_13.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=16&model=13) | [](Figures/SampleImages/Texture_Sampler_13.png) | Clamp To Edge | Clamp To Edge | Nearest | Nearest |
+| [00](Texture_Sampler_00.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=17&model=0) | [](Figures/SampleImages/Texture_Sampler_00.png) | | | | |
+| [01](Texture_Sampler_01.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=17&model=1) | [](Figures/SampleImages/Texture_Sampler_01.png) | Clamp To Edge | | | |
+| [02](Texture_Sampler_02.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=17&model=2) | [](Figures/SampleImages/Texture_Sampler_02.png) | Mirrored Repeat | | | |
+| [03](Texture_Sampler_03.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=17&model=3) | [](Figures/SampleImages/Texture_Sampler_03.png) | | Clamp To Edge | | |
+| [04](Texture_Sampler_04.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=17&model=4) | [](Figures/SampleImages/Texture_Sampler_04.png) | | Mirrored Repeat | | |
+| [05](Texture_Sampler_05.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=17&model=5) | [](Figures/SampleImages/Texture_Sampler_05.png) | | | Nearest | |
+| [06](Texture_Sampler_06.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=17&model=6) | [](Figures/SampleImages/Texture_Sampler_06.png) | | | Linear | |
+| [07](Texture_Sampler_07.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=17&model=7) | [](Figures/SampleImages/Texture_Sampler_07.png) | | | | Nearest |
+| [08](Texture_Sampler_08.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=17&model=8) | [](Figures/SampleImages/Texture_Sampler_08.png) | | | | Linear |
+| [09](Texture_Sampler_09.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=17&model=9) | [](Figures/SampleImages/Texture_Sampler_09.png) | | | | Nearest Mipmap Nearest |
+| [10](Texture_Sampler_10.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=17&model=10) | [](Figures/SampleImages/Texture_Sampler_10.png) | | | | Linear Mipmap Nearest |
+| [11](Texture_Sampler_11.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=17&model=11) | [](Figures/SampleImages/Texture_Sampler_11.png) | | | | Nearest Mipmap Linear |
+| [12](Texture_Sampler_12.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=17&model=12) | [](Figures/SampleImages/Texture_Sampler_12.png) | | | | Linear Mipmap Linear |
+| [13](Texture_Sampler_13.gltf)
[View](https://bghgary.github.io/glTF-Assets-Viewer/?folder=17&model=13) | [](Figures/SampleImages/Texture_Sampler_13.png) | Clamp To Edge | Clamp To Edge | Nearest | Nearest |
diff --git a/README.md b/README.md
index 600e8bcb..464e5164 100644
--- a/README.md
+++ b/README.md
@@ -6,6 +6,7 @@ In order to help ensure that glTF 2.0 importers meet the [glTF 2.0 Specification
## What does it currently cover?
So far, this project covers these requirements, with more to come:
+- [Animation Node](Output/Animation_Node/README.md)
- [Buffer Interleaved](Output/Buffer_Interleaved/README.md)
- [Compatibility](Output/Compatibility/README.md)
- [Material](Output/Material/README.md)
diff --git a/Source/AssetGenerator.csproj b/Source/AssetGenerator.csproj
index 3cea12fb..6c6558dd 100644
--- a/Source/AssetGenerator.csproj
+++ b/Source/AssetGenerator.csproj
@@ -19,6 +19,7 @@
+
@@ -52,6 +53,7 @@
+
@@ -88,6 +90,9 @@
PreserveNewest
+
+ PreserveNewest
+
PreserveNewest
@@ -190,6 +195,9 @@
PreserveNewest
+
+ PreserveNewest
+
PreserveNewest
diff --git a/Source/ModelGroup.cs b/Source/ModelGroup.cs
index 493137a2..0d6c91a7 100644
--- a/Source/ModelGroup.cs
+++ b/Source/ModelGroup.cs
@@ -64,7 +64,7 @@ protected static Runtime.GLTF CreateGLTF(Func createScene, List()
+ {
+ // Right
+ new Vector3(-0.3f, -0.3f, -0.3f),
+ new Vector3(-0.3f, -0.3f, 0.3f),
+ new Vector3(-0.3f, 0.3f, 0.3f),
+ new Vector3(-0.3f, 0.3f, -0.3f),
+
+ // Front
+ new Vector3(-0.3f, -0.3f, 0.3f),
+ new Vector3( 0.3f, -0.3f, 0.3f),
+ new Vector3( 0.3f, 0.3f, 0.3f),
+ new Vector3(-0.3f, 0.3f, 0.3f),
+
+ // Left
+ new Vector3( 0.3f, -0.3f, 0.3f),
+ new Vector3( 0.3f, -0.3f, -0.3f),
+ new Vector3( 0.3f, 0.3f, -0.3f),
+ new Vector3( 0.3f, 0.3f, 0.3f),
+
+ // Top
+ new Vector3(-0.3f, 0.3f, 0.3f),
+ new Vector3( 0.3f, 0.3f, 0.3f),
+ new Vector3( 0.3f, 0.3f, -0.3f),
+ new Vector3(-0.3f, 0.3f, -0.3f),
+
+ // Back
+ new Vector3(-0.3f, 0.3f, -0.3f),
+ new Vector3( 0.3f, 0.3f, -0.3f),
+ new Vector3( 0.3f, -0.3f, -0.3f),
+ new Vector3(-0.3f, -0.3f, -0.3f),
+
+ // Bottom
+ new Vector3(-0.3f, -0.3f, -0.3f),
+ new Vector3( 0.3f, -0.3f, -0.3f),
+ new Vector3( 0.3f, -0.3f, 0.3f),
+ new Vector3(-0.3f, -0.3f, 0.3f)
+ },
+ Normals = new List()
+ {
+ new Vector3( 0.0f, 0.0f, 1.0f),
+ new Vector3( 0.0f, 0.0f, 1.0f),
+ new Vector3( 0.0f, 0.0f, 1.0f),
+ new Vector3( 0.0f, 0.0f, 1.0f),
+ new Vector3( 0.0f, 0.0f, 1.0f),
+ new Vector3( 0.0f, 0.0f, 1.0f),
+ new Vector3( 0.0f, 0.0f, 1.0f),
+ new Vector3( 0.0f, 0.0f, 1.0f),
+ new Vector3( 1.0f, 0.0f, 0.0f),
+ new Vector3( 1.0f, 0.0f, 0.0f),
+ new Vector3( 1.0f, 0.0f, 0.0f),
+ new Vector3( 1.0f, 0.0f, 0.0f),
+ new Vector3( 0.0f, 1.0f, 0.0f),
+ new Vector3( 0.0f, 1.0f, 0.0f),
+ new Vector3( 0.0f, 1.0f, 0.0f),
+ new Vector3( 0.0f, 1.0f, 0.0f),
+ new Vector3( 0.0f, 0.0f, -1.0f),
+ new Vector3( 0.0f, 0.0f, -1.0f),
+ new Vector3( 0.0f, 0.0f, -1.0f),
+ new Vector3( 0.0f, 0.0f, -1.0f),
+ new Vector3( 0.0f, -1.0f, 0.0f),
+ new Vector3( 0.0f, -1.0f, 0.0f),
+ new Vector3( 0.0f, -1.0f, 0.0f),
+ new Vector3( 0.0f, -1.0f, 0.0f)
+ },
+ TextureCoordSets = new List>
+ {
+ new List
+ {
+ // Right
+ new Vector2(0.00f, 0.75f),
+ new Vector2(0.25f, 0.75f),
+ new Vector2(0.25f, 0.50f),
+ new Vector2(0.00f, 0.50f),
+
+ // Front
+ new Vector2(0.25f, 0.75f),
+ new Vector2(0.50f, 0.75f),
+ new Vector2(0.50f, 0.50f),
+ new Vector2(0.25f, 0.50f),
+
+ // Left
+ new Vector2(0.50f, 0.75f),
+ new Vector2(0.75f, 0.75f),
+ new Vector2(0.75f, 0.50f),
+ new Vector2(0.50f, 0.50f),
+
+ // Top
+ new Vector2(0.25f, 0.50f),
+ new Vector2(0.50f, 0.50f),
+ new Vector2(0.50f, 0.25f),
+ new Vector2(0.25f, 0.25f),
+
+ // Back
+ new Vector2(0.25f, 0.25f),
+ new Vector2(0.50f, 0.25f),
+ new Vector2(0.50f, 0.00f),
+ new Vector2(0.25f, 0.00f),
+
+ // Bottom
+ new Vector2(0.25f, 1.00f),
+ new Vector2(0.50f, 1.00f),
+ new Vector2(0.50f, 0.75f),
+ new Vector2(0.25f, 0.75f),
+ }
+ },
+ Indices = new List
+ {
+ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, 8, 9, 10, 8, 10, 11, 12, 13, 14, 12, 14, 15, 16, 17, 18, 16, 18, 19, 20, 21, 22, 20, 22, 23
+ },
+ };
+ }
+ }
+ }
+}
+
diff --git a/Source/ModelGroup_MultiNode.cs b/Source/ModelGroup_MultiNode.cs
index 73a3ad51..04b498b5 100644
--- a/Source/ModelGroup_MultiNode.cs
+++ b/Source/ModelGroup_MultiNode.cs
@@ -5,7 +5,7 @@ namespace AssetGenerator
{
internal abstract partial class ModelGroup
{
- protected static class Gltf
+ protected static partial class Gltf
{
public static Runtime.GLTF CreateMultiNode()
{
diff --git a/Source/ModelGroups/Animation_Node.cs b/Source/ModelGroups/Animation_Node.cs
new file mode 100644
index 00000000..4b9f4c3f
--- /dev/null
+++ b/Source/ModelGroups/Animation_Node.cs
@@ -0,0 +1,358 @@
+using System;
+using System.Collections.Generic;
+using System.Numerics;
+using System.Text;
+
+namespace AssetGenerator
+{
+ internal class Animation_Node : ModelGroup
+ {
+ public override ModelGroupId Id => ModelGroupId.Animation_Node;
+
+ public Animation_Node(List imageList)
+ {
+ var baseColorTextureImage = UseTexture(imageList, "BaseColor_Cube");
+
+ // There are no common properties in this model group that are reported in the readme.
+
+ Model CreateModel(Action, List, Runtime.Node> setProperties)
+ {
+ var properties = new List();
+ var cubeMeshPrimitive = MeshPrimitive.CreateCube();
+
+ // Apply the common properties to the gltf.
+ cubeMeshPrimitive.Material = new Runtime.Material()
+ {
+ MetallicRoughnessMaterial = new Runtime.PbrMetallicRoughness()
+ {
+ BaseColorTexture = new Runtime.Texture() { Source = baseColorTextureImage },
+ },
+ };
+ var channels = new List()
+ {
+ new Runtime.AnimationChannel()
+ };
+ var node = new Runtime.Node();
+
+ // Apply the properties that are specific to this gltf.
+ setProperties(properties, channels, node);
+
+ // Create the gltf object
+ node.Mesh = new Runtime.Mesh
+ {
+ MeshPrimitives = new List
+ {
+ cubeMeshPrimitive
+ }
+ };
+ Runtime.GLTF gltf = CreateGLTF(() => new Runtime.Scene()
+ {
+ Nodes = new List
+ {
+ node
+ },
+ });
+ gltf.Animations = new List
+ {
+ new Runtime.Animation
+ {
+ Channels = channels
+ }
+ };
+ return new Model
+ {
+ Properties = properties,
+ GLTF = gltf
+ };
+ }
+
+ void SetTranslationChannelTarget(List properties, Runtime.AnimationChannel channel, Runtime.Node node)
+ {
+ channel.Target = new Runtime.AnimationChannelTarget
+ {
+ Node = node,
+ Path = Runtime.AnimationChannelTarget.PathEnum.TRANSLATION,
+ };
+ properties.Add(new Property(PropertyName.Target, "Translation"));
+ }
+
+ void SetRotationChannelTarget(List properties, Runtime.AnimationChannel channel, Runtime.Node node)
+ {
+ channel.Target = new Runtime.AnimationChannelTarget
+ {
+ Node = node,
+ Path = Runtime.AnimationChannelTarget.PathEnum.ROTATION,
+ };
+ properties.Add(new Property(PropertyName.Target, "Rotation"));
+ }
+
+ void SetScaleChannelTarget(List properties, Runtime.AnimationChannel channel, Runtime.Node node)
+ {
+ channel.Target = new Runtime.AnimationChannelTarget
+ {
+ Node = node,
+ Path = Runtime.AnimationChannelTarget.PathEnum.SCALE,
+ };
+ properties.Add(new Property(PropertyName.Target, "Scale"));
+ }
+
+ void SetLinearSamplerForTranslation(List properties, Runtime.AnimationChannel channel)
+ {
+ channel.Sampler = new Runtime.LinearAnimationSampler(
+ new List
+ {
+ 0.0f,
+ 1.0f,
+ 2.0f,
+ },
+ new List
+ {
+ new Vector3(-0.1f, 0.0f, 0.0f),
+ new Vector3(0.1f, 0.0f, 0.0f),
+ new Vector3(-0.1f, 0.0f, 0.0f),
+ });
+
+ properties.Add(new Property(PropertyName.Interpolation, "Linear"));
+ }
+
+ void SetLinearSamplerForScale(List properties, Runtime.AnimationChannel channel)
+ {
+ channel.Sampler = new Runtime.LinearAnimationSampler(
+ new List
+ {
+ 0.0f,
+ 1.0f,
+ 2.0f,
+ },
+ new List
+ {
+ new Vector3(0.8f, 0.8f, 0.8f),
+ new Vector3(1.2f, 1.2f, 1.2f),
+ new Vector3(0.8f, 0.8f, 0.8f),
+ });
+
+ properties.Add(new Property(PropertyName.Interpolation, "Linear"));
+ }
+
+ void SetLinearSamplerForRotation(List properties, Runtime.AnimationChannel channel)
+ {
+ var quarterTurn = (float)(Math.PI / 2);
+ channel.Sampler = new Runtime.LinearAnimationSampler(
+ new List
+ {
+ 0.0f,
+ 1.0f,
+ 2.0f,
+ 3.0f,
+ 4.0f,
+ },
+ new List
+ {
+ Quaternion.CreateFromYawPitchRoll(quarterTurn, 0, 0),
+ Quaternion.Identity,
+ Quaternion.CreateFromYawPitchRoll(-quarterTurn, 0, 0),
+ Quaternion.Identity,
+ Quaternion.CreateFromYawPitchRoll(quarterTurn, 0, 0),
+ });
+
+ properties.Add(new Property(PropertyName.Interpolation, "Linear"));
+ }
+
+ void SetStepSamplerForTranslation(List properties, Runtime.AnimationChannel channel)
+ {
+ channel.Sampler = new Runtime.StepAnimationSampler(
+ new List
+ {
+ 0.0f,
+ 1.0f,
+ 2.0f,
+ 3.0f,
+ 4.0f,
+ },
+ new List
+ {
+ new Vector3(-0.1f, 0.0f, 0.0f),
+ new Vector3(0.0f, 0.0f, 0.0f),
+ new Vector3(0.1f, 0.0f, 0.0f),
+ new Vector3(0.0f, 0.0f, 0.0f),
+ new Vector3(-0.1f, 0.0f, 0.0f),
+ });
+
+ properties.Add(new Property(PropertyName.Interpolation, "Step"));
+ }
+
+ void SetCubicSplineSamplerForTranslation(List properties, Runtime.AnimationChannel channel)
+ {
+ channel.Sampler = new Runtime.CubicSplineAnimationSampler(
+ new List
+ {
+ 0.0f,
+ 1.0f,
+ 2.0f,
+ },
+ new List.Key>
+ {
+ new Runtime.CubicSplineAnimationSampler.Key
+ {
+ InTangent = new Vector3(0, 0, 0),
+ Value = new Vector3(-0.1f, 0, 0),
+ OutTangent = new Vector3(0, 0, 0)
+ },
+ new Runtime.CubicSplineAnimationSampler.Key
+ {
+ InTangent = new Vector3(0, 0, 0),
+ Value = new Vector3(0.1f, 0, 0),
+ OutTangent = new Vector3(0, 0, 0)
+ },
+ new Runtime.CubicSplineAnimationSampler.Key
+ {
+ InTangent = new Vector3(0, 0, 0),
+ Value = new Vector3(-0.1f, 0, 0),
+ OutTangent = new Vector3(0, 0, 0)
+ }
+ });
+
+ properties.Add(new Property(PropertyName.Interpolation, "Cubic Spline"));
+ }
+
+ void CreateSamplerStartsAboveZero(List properties, Runtime.AnimationChannel channel)
+ {
+ var quarterTurn = (float)(Math.PI / 2);
+ channel.Sampler = new Runtime.LinearAnimationSampler(
+ new List
+ {
+ 1.0f,
+ 2.0f,
+ 3.0f,
+ 4.0f,
+ 5.0f,
+ },
+ new List
+ {
+ Quaternion.CreateFromYawPitchRoll(quarterTurn, 0, 0),
+ new Quaternion(0, 0, 0, 0),
+ Quaternion.CreateFromYawPitchRoll(quarterTurn*(-1), 0, 0),
+ new Quaternion(0, 0, 0, 0),
+ Quaternion.CreateFromYawPitchRoll(quarterTurn, 0, 0),
+ });
+
+ properties.Add(new Property(PropertyName.Interpolation, "Linear"));
+ }
+
+ void CreateCubicSplineSamplerForRotation(List properties, Runtime.AnimationChannel channel)
+ {
+ var quarterTurn = (float)(Math.PI / 2);
+ channel.Sampler = new Runtime.CubicSplineAnimationSampler(
+ new List
+ {
+ 0.0f,
+ 1.0f,
+ 2.0f,
+ 3.0f,
+ 4.0f,
+ },
+ new List.Key>
+ {
+ new Runtime.CubicSplineAnimationSampler.Key
+ {
+ InTangent = new Quaternion(0, 0, 0, 0),
+ Value = Quaternion.CreateFromYawPitchRoll(quarterTurn, 0, 0),
+ OutTangent = new Quaternion(0, 0, 0, 0)
+ },
+ new Runtime.CubicSplineAnimationSampler.Key
+ {
+ InTangent = new Quaternion(0, 0, 0, 0),
+ Value = Quaternion.Identity,
+ OutTangent = new Quaternion(0, 0, 0, 0)
+ },
+ new Runtime.CubicSplineAnimationSampler.Key
+ {
+ InTangent = new Quaternion(0, 0, 0, 0),
+ Value = Quaternion.CreateFromYawPitchRoll(-quarterTurn, 0, 0),
+ OutTangent = new Quaternion(0, 0, 0, 0)
+ },
+ new Runtime.CubicSplineAnimationSampler.Key
+ {
+ InTangent = new Quaternion(0, 0, 0, 0),
+ Value = Quaternion.Identity,
+ OutTangent = new Quaternion(0, 0, 0, 0)
+ },
+ new Runtime.CubicSplineAnimationSampler.Key
+ {
+ InTangent = new Quaternion(0, 0, 0, 0),
+ Value = Quaternion.CreateFromYawPitchRoll(quarterTurn, 0, 0),
+ OutTangent = new Quaternion(0, 0, 0, 0)
+ },
+ });
+ properties.Add(new Property(PropertyName.Interpolation, "Cubic Spline"));
+ }
+
+ void CreateMultipleChannelsWithUniqueTargets(List properties, List channels, Runtime.Node node)
+ {
+ // The first channel is already added as a common property.
+ channels.Add(new Runtime.AnimationChannel());
+ channels.Add(new Runtime.AnimationChannel());
+
+ var targetPropertiesList = new List();
+ SetTranslationChannelTarget(targetPropertiesList, channels[0], node);
+ SetRotationChannelTarget(targetPropertiesList, channels[1], node);
+ SetScaleChannelTarget(targetPropertiesList, channels[2], node);
+
+ var samplerPropertiesList = new List();
+ SetLinearSamplerForTranslation(samplerPropertiesList, channels[0]);
+ SetLinearSamplerForRotation(samplerPropertiesList, channels[1]);
+ SetLinearSamplerForScale(samplerPropertiesList, channels[2]);
+
+ // Takes the properties created by the animation target helper functions and condenses them into a single property, then adds that property to the list of used properties.
+ var targetReadmeValue = new StringBuilder();
+ var samplerReadmeValue = new StringBuilder();
+ for (int x = 0; x < targetPropertiesList.Count; x++)
+ {
+ targetReadmeValue.Append($"{targetPropertiesList[x].ReadmeValue}
");
+ samplerReadmeValue.Append($"{samplerPropertiesList[x].ReadmeValue}
");
+ }
+ properties.Add(new Property(PropertyName.Target, targetReadmeValue.ToString()));
+ properties.Add(new Property(PropertyName.Interpolation, samplerReadmeValue.ToString()));
+ }
+
+ this.Models = new List
+ {
+ CreateModel((properties, channels, node) => {
+ SetTranslationChannelTarget(properties, channels[0], node);
+ SetLinearSamplerForTranslation(properties, channels[0]);
+ }),
+ CreateModel((properties, channels, node) => {
+ SetRotationChannelTarget(properties, channels[0], node);
+ SetLinearSamplerForRotation(properties, channels[0]);
+ }),
+ CreateModel((properties, channels, node) => {
+ SetScaleChannelTarget(properties, channels[0], node);
+ SetLinearSamplerForScale(properties, channels[0]);
+ }),
+ CreateModel((properties, channels, node) => {
+ SetTranslationChannelTarget(properties, channels[0], node);
+ SetStepSamplerForTranslation(properties, channels[0]);
+ }),
+ CreateModel((properties, channels, node) => {
+ SetTranslationChannelTarget(properties, channels[0], node);
+ SetCubicSplineSamplerForTranslation(properties, channels[0]);
+ }),
+ CreateModel((properties, channels, node) => {
+ SetRotationChannelTarget(properties, channels[0], node);
+ CreateCubicSplineSamplerForRotation(properties, channels[0]);
+ }),
+ // To be moved to another model group later
+ //CreateModel((properties, channels, node) => {
+ // CreateMultipleChannelsWithUniqueTargets(properties, channels, node);
+ //}),
+ //CreateModel((properties, channels, node) => {
+ // // Curve that doesn't start at zero
+ // SetRotationChannelTarget(properties, channels[0], node);
+ // CreateSamplerStartsAboveZero(properties, channels[0]);
+ //}),
+ };
+
+ GenerateUsedPropertiesList();
+ }
+ }
+}
diff --git a/Source/Program.cs b/Source/Program.cs
index 982d3b65..aa713cf6 100644
--- a/Source/Program.cs
+++ b/Source/Program.cs
@@ -29,6 +29,7 @@ private static void Main(string[] args)
// Create a list containing each model group and their initial values
List allModelGroups = new List()
{
+ new Animation_Node(imageList),
new Buffer_Interleaved(imageList),
new Compatibility(imageList),
new Material(imageList),
diff --git a/Source/Property.cs b/Source/Property.cs
index fcfc8609..ae85260b 100644
--- a/Source/Property.cs
+++ b/Source/Property.cs
@@ -142,6 +142,8 @@ internal enum PropertyName
Translation,
Rotation,
Scale,
+ Target,
+ Interpolation,
WrapT,
WrapS,
MagFilter,
diff --git a/Source/ReadmeTemplates/Animation_Node.md b/Source/ReadmeTemplates/Animation_Node.md
new file mode 100644
index 00000000..4bcc7d38
--- /dev/null
+++ b/Source/ReadmeTemplates/Animation_Node.md
@@ -0,0 +1,5 @@
+These models are intended to test the basic attributes of animation on a node.
+
+The following table shows the properties that are set for a given model.
+
+~~Table~~
diff --git a/Source/Resources/Figures/Thumbnails/BaseColor_Cube.png b/Source/Resources/Figures/Thumbnails/BaseColor_Cube.png
new file mode 100644
index 00000000..4dd78402
Binary files /dev/null and b/Source/Resources/Figures/Thumbnails/BaseColor_Cube.png differ
diff --git a/Source/Resources/Textures/BaseColor_Cube.png b/Source/Resources/Textures/BaseColor_Cube.png
new file mode 100644
index 00000000..fd169ab3
Binary files /dev/null and b/Source/Resources/Textures/BaseColor_Cube.png differ
diff --git a/Source/Runtime/Animation.cs b/Source/Runtime/Animation.cs
index ef2d30ca..a4ff28dd 100644
--- a/Source/Runtime/Animation.cs
+++ b/Source/Runtime/Animation.cs
@@ -4,9 +4,9 @@
namespace AssetGenerator.Runtime
{
- internal struct Animation
+ internal class Animation
{
public String Name { get; set; }
- public List AnimationChannels { get; set; }
+ public List Channels { get; set; }
}
}
diff --git a/Source/Runtime/AnimationChannel.cs b/Source/Runtime/AnimationChannel.cs
index 873b75ef..bd686681 100644
--- a/Source/Runtime/AnimationChannel.cs
+++ b/Source/Runtime/AnimationChannel.cs
@@ -1,9 +1,8 @@
namespace AssetGenerator.Runtime
{
- internal struct AnimationChannel
+ internal class AnimationChannel
{
- public AnimationSampler Sampler { get; set; }
-
- public AnimationChannelTarget AnimationTarget { get; set; }
+ public AnimationSampler Sampler;
+ public AnimationChannelTarget Target;
}
}
diff --git a/Source/Runtime/AnimationChannelTarget.cs b/Source/Runtime/AnimationChannelTarget.cs
index dd810c55..f0050351 100644
--- a/Source/Runtime/AnimationChannelTarget.cs
+++ b/Source/Runtime/AnimationChannelTarget.cs
@@ -1,6 +1,6 @@
namespace AssetGenerator.Runtime
{
- internal struct AnimationChannelTarget
+ internal class AnimationChannelTarget
{
public Node Node { get; set; }
diff --git a/Source/Runtime/GLTFConverter.cs b/Source/Runtime/GLTFConverter.cs
index 288f92b7..04eec2fe 100644
--- a/Source/Runtime/GLTFConverter.cs
+++ b/Source/Runtime/GLTFConverter.cs
@@ -1123,22 +1123,16 @@ private int WriteColors(MeshPrimitive meshPrimitive, int min, int max, Data geom
///
/// Converts runtime animation to schema.
///
- ///
- ///
- ///
- ///
- ///
- ///
private glTFLoader.Schema.Animation ConvertAnimationToSchema(Animation runtimeAnimation, GLTF gltf, Data geometryData, int bufferIndex)
{
var animation = CreateInstance();
var animationChannels = new List();
var animationSamplers = new List();
- foreach (var runtimeAnimationChannel in runtimeAnimation.AnimationChannels)
+ foreach (var runtimeAnimationChannel in runtimeAnimation.Channels)
{
var animationChannel = new glTFLoader.Schema.AnimationChannel();
- var targetNode = runtimeAnimationChannel.AnimationTarget.Node;
+ var targetNode = runtimeAnimationChannel.Target.Node;
var sceneIndex = 0;
if (gltf.MainScene.HasValue)
{
@@ -1168,7 +1162,7 @@ private glTFLoader.Schema.Animation ConvertAnimationToSchema(Animation runtimeAn
Node = targetNodeIndex
};
- switch (runtimeAnimationChannel.AnimationTarget.Path)
+ switch (runtimeAnimationChannel.Target.Path)
{
case AnimationChannelTarget.PathEnum.TRANSLATION:
animationChannel.Target.Path = glTFLoader.Schema.AnimationChannelTarget.PathEnum.translation;
@@ -1183,7 +1177,7 @@ private glTFLoader.Schema.Animation ConvertAnimationToSchema(Animation runtimeAn
animationChannel.Target.Path = glTFLoader.Schema.AnimationChannelTarget.PathEnum.weights;
break;
default:
- throw new NotSupportedException($"Animation target path {runtimeAnimationChannel.AnimationTarget.Path} not supported!");
+ throw new NotSupportedException($"Animation target path {runtimeAnimationChannel.Target.Path} not supported!");
}
// Write the output key frame data
@@ -1301,6 +1295,9 @@ private glTFLoader.Schema.Animation ConvertAnimationToSchema(Animation runtimeAn
animationChannels.Add(animationChannel);
animationSamplers.Add(animationSampler);
+
+ // This needs to be improved to support instancing
+ animationChannel.Sampler = animationSamplers.Count() - 1;
}
animation.Channels = animationChannels.ToArray();