aboutsummaryrefslogtreecommitdiff
path: root/scenefiles/illuminate
diff options
context:
space:
mode:
authorsotech117 <michael_foiani@brown.edu>2023-12-07 16:23:20 -0500
committersotech117 <michael_foiani@brown.edu>2023-12-07 16:23:20 -0500
commitcaa765bff49d54217b75aaf0e7acf4e5392a11e4 (patch)
tree9b92914dfb88b99599e8e60e4512e9e9ea9a25db /scenefiles/illuminate
parenta9274459443f1d560d7580a162deb581549980cb (diff)
upload base code
Diffstat (limited to 'scenefiles/illuminate')
-rw-r--r--scenefiles/illuminate/extra_credit/depth_of_field.json211
-rw-r--r--scenefiles/illuminate/extra_credit/refract1.json114
-rw-r--r--scenefiles/illuminate/extra_credit/refract2.json110
-rw-r--r--scenefiles/illuminate/extra_credit_outputs/depth_of_field.pngbin0 -> 467193 bytes
-rw-r--r--scenefiles/illuminate/extra_credit_outputs/refract1.pngbin0 -> 1072008 bytes
-rw-r--r--scenefiles/illuminate/extra_credit_outputs/refract2.pngbin0 -> 887256 bytes
-rw-r--r--scenefiles/illuminate/optional/fun/chess.json4407
-rw-r--r--scenefiles/illuminate/optional/recursive_spheres/recursive_sphere_2.json139
-rw-r--r--scenefiles/illuminate/optional/recursive_spheres/recursive_sphere_3.json206
-rw-r--r--scenefiles/illuminate/optional/recursive_spheres/recursive_sphere_4.json270
-rw-r--r--scenefiles/illuminate/optional/reflection/test_reflectiveness.json77
-rw-r--r--scenefiles/illuminate/optional/texture_tests/directional_light_textured.json122
-rw-r--r--scenefiles/illuminate/optional/texture_tests/texture_cyl3.json67
-rw-r--r--scenefiles/illuminate/optional/textures/andyVanDam.jpgbin0 -> 25810 bytes
-rw-r--r--scenefiles/illuminate/optional/textures/bark.pngbin0 -> 808741 bytes
-rw-r--r--scenefiles/illuminate/optional/textures/board.pngbin0 -> 2026 bytes
-rw-r--r--scenefiles/illuminate/optional/textures/breakfast.gifbin0 -> 78910 bytes
-rw-r--r--scenefiles/illuminate/optional/textures/check.pngbin0 -> 1286916 bytes
-rw-r--r--scenefiles/illuminate/optional/textures/cheese.pngbin0 -> 97649 bytes
-rw-r--r--scenefiles/illuminate/optional/textures/earth.pngbin0 -> 2617047 bytes
-rw-r--r--scenefiles/illuminate/optional/textures/liqmtl.pngbin0 -> 356094 bytes
-rw-r--r--scenefiles/illuminate/optional/textures/mandril.pngbin0 -> 164047 bytes
-rw-r--r--scenefiles/illuminate/optional/textures/marsTexture.pngbin0 -> 211510 bytes
-rw-r--r--scenefiles/illuminate/optional/textures/topleft.pngbin0 -> 46021 bytes
-rw-r--r--scenefiles/illuminate/optional_outputs/fun/chess.pngbin0 -> 34681 bytes
-rw-r--r--scenefiles/illuminate/optional_outputs/recursive_spheres/recursive_sphere_2.pngbin0 -> 199621 bytes
-rw-r--r--scenefiles/illuminate/optional_outputs/recursive_spheres/recursive_sphere_3.pngbin0 -> 329930 bytes
-rw-r--r--scenefiles/illuminate/optional_outputs/recursive_spheres/recursive_sphere_4.pngbin0 -> 461548 bytes
-rw-r--r--scenefiles/illuminate/optional_outputs/reflection/test_reflectiveness.pngbin0 -> 14020 bytes
-rw-r--r--scenefiles/illuminate/optional_outputs/required_without_shadows/point_light_1_no-shadows.pngbin0 -> 43175 bytes
-rw-r--r--scenefiles/illuminate/optional_outputs/required_without_shadows/point_light_2_no-shadows.pngbin0 -> 83032 bytes
-rw-r--r--scenefiles/illuminate/optional_outputs/required_without_shadows/reflections_basic_no-shadows.pngbin0 -> 14686 bytes
-rw-r--r--scenefiles/illuminate/optional_outputs/required_without_shadows/spot_light_1_no-shadows.pngbin0 -> 57752 bytes
-rw-r--r--scenefiles/illuminate/optional_outputs/required_without_shadows/spot_light_2_no-shadows.pngbin0 -> 77233 bytes
-rw-r--r--scenefiles/illuminate/optional_outputs/texture_tests/directional_light_textured.pngbin0 -> 1024471 bytes
-rw-r--r--scenefiles/illuminate/optional_outputs/texture_tests/texture_cyl3.pngbin0 -> 187114 bytes
-rw-r--r--scenefiles/illuminate/required/point_light/point_light_1.json85
-rw-r--r--scenefiles/illuminate/required/point_light/point_light_2.json105
-rw-r--r--scenefiles/illuminate/required/reflection/reflections_basic.json77
-rw-r--r--scenefiles/illuminate/required/reflection/reflections_complex.json119
-rw-r--r--scenefiles/illuminate/required/shadow/shadow_special_case.json49
-rw-r--r--scenefiles/illuminate/required/shadow/shadow_test.json147
-rw-r--r--scenefiles/illuminate/required/shadow/simple_shadow.json85
-rw-r--r--scenefiles/illuminate/required/spot_light/spot_light_1.json88
-rw-r--r--scenefiles/illuminate/required/spot_light/spot_light_2.json114
-rw-r--r--scenefiles/illuminate/required/texture_tests/texture_cone.json77
-rw-r--r--scenefiles/illuminate/required/texture_tests/texture_cone2.json127
-rw-r--r--scenefiles/illuminate/required/texture_tests/texture_cube.json67
-rw-r--r--scenefiles/illuminate/required/texture_tests/texture_cube2.json127
-rw-r--r--scenefiles/illuminate/required/texture_tests/texture_cyl.json67
-rw-r--r--scenefiles/illuminate/required/texture_tests/texture_cyl2.json127
-rw-r--r--scenefiles/illuminate/required/texture_tests/texture_sphere.json59
-rw-r--r--scenefiles/illuminate/required/texture_tests/texture_sphere2.json127
-rw-r--r--scenefiles/illuminate/required/textures/andyVanDam.jpgbin0 -> 25810 bytes
-rw-r--r--scenefiles/illuminate/required/textures/bark.pngbin0 -> 808741 bytes
-rw-r--r--scenefiles/illuminate/required/textures/board.pngbin0 -> 2026 bytes
-rw-r--r--scenefiles/illuminate/required/textures/breakfast.gifbin0 -> 78910 bytes
-rw-r--r--scenefiles/illuminate/required/textures/check.pngbin0 -> 1286916 bytes
-rw-r--r--scenefiles/illuminate/required/textures/cheese.pngbin0 -> 97649 bytes
-rw-r--r--scenefiles/illuminate/required/textures/earth.pngbin0 -> 2617047 bytes
-rw-r--r--scenefiles/illuminate/required/textures/liqmtl.pngbin0 -> 356094 bytes
-rw-r--r--scenefiles/illuminate/required/textures/mandril.pngbin0 -> 164047 bytes
-rw-r--r--scenefiles/illuminate/required/textures/marsTexture.pngbin0 -> 211510 bytes
-rw-r--r--scenefiles/illuminate/required/textures/topleft.pngbin0 -> 46021 bytes
-rw-r--r--scenefiles/illuminate/required_outputs/point_light/point_light_1.pngbin0 -> 42947 bytes
-rw-r--r--scenefiles/illuminate/required_outputs/point_light/point_light_2.pngbin0 -> 84798 bytes
-rw-r--r--scenefiles/illuminate/required_outputs/reflection/reflections_basic.pngbin0 -> 15123 bytes
-rw-r--r--scenefiles/illuminate/required_outputs/reflection/reflections_complex.pngbin0 -> 79204 bytes
-rw-r--r--scenefiles/illuminate/required_outputs/shadow/shadow_special_case.pngbin0 -> 5073 bytes
-rw-r--r--scenefiles/illuminate/required_outputs/shadow/shadow_test.pngbin0 -> 326393 bytes
-rw-r--r--scenefiles/illuminate/required_outputs/shadow/simple_shadow.pngbin0 -> 34656 bytes
-rw-r--r--scenefiles/illuminate/required_outputs/spot_light/spot_light_1.pngbin0 -> 55559 bytes
-rw-r--r--scenefiles/illuminate/required_outputs/spot_light/spot_light_2.pngbin0 -> 71714 bytes
-rw-r--r--scenefiles/illuminate/required_outputs/texture_tests/texture_cone.pngbin0 -> 26519 bytes
-rw-r--r--scenefiles/illuminate/required_outputs/texture_tests/texture_cone2.pngbin0 -> 178840 bytes
-rw-r--r--scenefiles/illuminate/required_outputs/texture_tests/texture_cube.pngbin0 -> 17744 bytes
-rw-r--r--scenefiles/illuminate/required_outputs/texture_tests/texture_cube2.pngbin0 -> 302503 bytes
-rw-r--r--scenefiles/illuminate/required_outputs/texture_tests/texture_cyl.pngbin0 -> 23613 bytes
-rw-r--r--scenefiles/illuminate/required_outputs/texture_tests/texture_cyl2.pngbin0 -> 261503 bytes
-rw-r--r--scenefiles/illuminate/required_outputs/texture_tests/texture_sphere.pngbin0 -> 21330 bytes
-rw-r--r--scenefiles/illuminate/required_outputs/texture_tests/texture_sphere2.pngbin0 -> 202627 bytes
-rw-r--r--scenefiles/illuminate/textures/andyVanDam.jpgbin0 -> 25810 bytes
-rw-r--r--scenefiles/illuminate/textures/bark.pngbin0 -> 808741 bytes
-rw-r--r--scenefiles/illuminate/textures/breakfast.gifbin0 -> 78910 bytes
-rw-r--r--scenefiles/illuminate/textures/check.pngbin0 -> 1286916 bytes
-rw-r--r--scenefiles/illuminate/textures/earth.pngbin0 -> 2617047 bytes
-rw-r--r--scenefiles/illuminate/textures/marsTexture.pngbin0 -> 211510 bytes
87 files changed, 7370 insertions, 0 deletions
diff --git a/scenefiles/illuminate/extra_credit/depth_of_field.json b/scenefiles/illuminate/extra_credit/depth_of_field.json
new file mode 100644
index 0000000..39a1620
--- /dev/null
+++ b/scenefiles/illuminate/extra_credit/depth_of_field.json
@@ -0,0 +1,211 @@
+{
+ "name": "root",
+ "globalData": {
+ "ambientCoeff": 0.5,
+ "diffuseCoeff": 0.7,
+ "specularCoeff": 0.54,
+ "transparentCoeff": 0
+ },
+ "cameraData": {
+ "position": [0.0, 0.0, 16.0],
+ "up": [0.0, 1.0, 0.0],
+ "heightAngle": 49.5,
+ "look": [0.0, 0.0, -1.0],
+ "aperture": 0.008,
+ "focalLength": 3.0
+ },
+ "groups": [
+ {
+ "translate": [10.0, 10.0, 10.0],
+ "lights": [
+ {
+ "type": "point",
+ "color": [1.0, 1.0, 1.0],
+ "attenuationCoeff": [1.5, 0.0, 0.0]
+ }
+ ]
+ },
+ {
+ "lights": [
+ {
+ "type": "directional",
+ "color": [1.0, 1.0, 1.0],
+ "direction": [0.25, 1.0, -1.0]
+ }
+ ]
+ },
+ {
+ "lights": [
+ {
+ "type": "directional",
+ "color": [1.0, 1.0, 1.0],
+ "direction": [1.0, -1.8, -2.0]
+ }
+ ]
+ },
+ {
+ "groups": [
+ {
+ "translate": [-1.0, 0.0, 15.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.75, 1.0, 0.75],
+ "specular": [1.0, 1.0, 1.0],
+ "shininess": 21.1968,
+ "reflective": [0.75, 1.0, 0.75],
+ "blend": 0.75,
+ "textureFile": "textures/marsTexture.png",
+ "textureU": 1.0,
+ "textureV": 1.0
+ }
+ ]
+ },
+ {
+ "translate": [1.0, 0.0, 15.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.75, 1.0, 0.75],
+ "specular": [1.0, 1.0, 1.0],
+ "shininess": 21.1968,
+ "reflective": [0.75, 1.0, 0.75],
+ "blend": 0.75,
+ "textureFile": "textures/marsTexture.png",
+ "textureU": 1.0,
+ "textureV": 1.0
+ }
+ ]
+ },
+ {
+ "translate": [-1.0, 0.0, 12.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.75, 1.0, 0.75],
+ "specular": [1.0, 1.0, 1.0],
+ "shininess": 21.1968,
+ "reflective": [0.75, 1.0, 0.75],
+ "blend": 0.75,
+ "textureFile": "textures/marsTexture.png",
+ "textureU": 1.0,
+ "textureV": 1.0
+ }
+ ]
+ },
+ {
+ "translate": [1.0, 0.0, 12.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.75, 1.0, 0.75],
+ "specular": [1.0, 1.0, 1.0],
+ "shininess": 21.1968,
+ "reflective": [0.75, 1.0, 0.75],
+ "blend": 0.75,
+ "textureFile": "textures/marsTexture.png",
+ "textureU": 1.0,
+ "textureV": 1.0
+ }
+ ]
+ },
+ {
+ "translate": [-1.0, 0.0, 9.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.75, 1.0, 0.75],
+ "specular": [1.0, 1.0, 1.0],
+ "shininess": 21.1968,
+ "reflective": [0.75, 1.0, 0.75],
+ "blend": 0.75,
+ "textureFile": "textures/marsTexture.png",
+ "textureU": 1.0,
+ "textureV": 1.0
+ }
+ ]
+ },
+ {
+ "translate": [1.0, 0.0, 9.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.75, 1.0, 0.75],
+ "specular": [1.0, 1.0, 1.0],
+ "shininess": 21.1968,
+ "reflective": [0.75, 1.0, 0.75],
+ "blend": 0.75,
+ "textureFile": "textures/marsTexture.png",
+ "textureU": 1.0,
+ "textureV": 1.0
+ }
+ ]
+ },
+ {
+ "translate": [-1.0, 0.0, 6.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.75, 1.0, 0.75],
+ "specular": [1.0, 1.0, 1.0],
+ "shininess": 21.1968,
+ "reflective": [0.75, 1.0, 0.75],
+ "blend": 0.75,
+ "textureFile": "textures/marsTexture.png",
+ "textureU": 1.0,
+ "textureV": 1.0
+ }
+ ]
+ },
+ {
+ "translate": [1.0, 0.0, 6.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.75, 1.0, 0.75],
+ "specular": [1.0, 1.0, 1.0],
+ "shininess": 21.1968,
+ "reflective": [0.75, 1.0, 0.75],
+ "blend": 0.75,
+ "textureFile": "textures/marsTexture.png",
+ "textureU": 1.0,
+ "textureV": 1.0
+ }
+ ]
+ },
+ {
+ "translate": [-1.0, 0.0, 3.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.75, 1.0, 0.75],
+ "specular": [1.0, 1.0, 1.0],
+ "shininess": 21.1968,
+ "reflective": [0.75, 1.0, 0.75],
+ "blend": 0.75,
+ "textureFile": "textures/marsTexture.png",
+ "textureU": 1.0,
+ "textureV": 1.0
+ }
+ ]
+ },
+ {
+ "translate": [1.0, 0.0, 3.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.75, 1.0, 0.75],
+ "specular": [1.0, 1.0, 1.0],
+ "shininess": 21.1968,
+ "reflective": [0.75, 1.0, 0.75],
+ "blend": 0.75,
+ "textureFile": "textures/marsTexture.png",
+ "textureU": 1.0,
+ "textureV": 1.0
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/scenefiles/illuminate/extra_credit/refract1.json b/scenefiles/illuminate/extra_credit/refract1.json
new file mode 100644
index 0000000..ce40422
--- /dev/null
+++ b/scenefiles/illuminate/extra_credit/refract1.json
@@ -0,0 +1,114 @@
+{
+ "name": "root",
+ "globalData": {
+ "ambientCoeff": 0.5,
+ "diffuseCoeff": 0.5,
+ "specularCoeff": 0.5,
+ "transparentCoeff": 0.5
+ },
+ "cameraData": {
+ "position": [-6.0, 4.0, 4.0],
+ "up": [0.0, 1.0, 0.0],
+ "heightAngle": 30.0,
+ "focus": [0.0, 0.0, 0.0]
+ },
+ "groups": [
+ {
+ "lights": [
+ {
+ "type": "directional",
+ "color": [0.8, 0.8, 0.8],
+ "direction": [0.0, -1.0, -1.0]
+ }
+ ]
+ },
+ {
+ "lights": [
+ {
+ "type": "directional",
+ "color": [0.4, 0.4, 0.4],
+ "direction": [1.0, -1.0, 0.0]
+ }
+ ]
+ },
+ {
+ "groups": [
+ {
+ "translate": [-0.65, 0.0, 0.65],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [0.2, 0.15, 0.15],
+ "specular": [1.0, 1.0, 1.0],
+ "shininess": 25.0,
+ "reflective": [0.4, 0.2, 0.2],
+ "transparent": [0.8, 0.6, 0.6],
+ "ior": 1.01
+ }
+ ]
+ },
+ {
+ "translate": [-0.65, 0.0, -0.65],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [0.0, 0.0, 0.0],
+ "specular": [1.0, 1.0, 1.0],
+ "shininess": 25.0,
+ "reflective": [0.2, 0.2, 0.4],
+ "transparent": [0.6, 0.6, 0.8],
+ "blend": 0.3,
+ "textureFile": "textures/earth.png",
+ "textureU": 1.0,
+ "textureV": 1.0,
+ "ior": 1.01
+ }
+ ]
+ },
+ {
+ "translate": [0.65, 0.0, -0.65],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [0.15, 0.2, 0.15],
+ "specular": [1.0, 1.0, 1.0],
+ "shininess": 25.0,
+ "reflective": [0.2, 0.4, 0.2],
+ "transparent": [0.6, 0.8, 0.6],
+ "ior": 1.01
+ }
+ ]
+ },
+ {
+ "translate": [0.65, 0.0, 0.65],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [0.17, 0.17, 0.17],
+ "specular": [1.0, 1.0, 1.0],
+ "shininess": 25.0,
+ "reflective": [0.3, 0.3, 0.3],
+ "transparent": [0.7, 0.7, 0.7],
+ "ior": 1.01
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -0.6, 0.0],
+ "scale": [6.0, 0.1, 6.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.0, 1.0, 1.0],
+ "reflective": [0.3, 0.3, 0.3],
+ "blend": 0.9,
+ "textureFile": "textures/bark.png",
+ "textureU": 1.0,
+ "textureV": 5.0
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/scenefiles/illuminate/extra_credit/refract2.json b/scenefiles/illuminate/extra_credit/refract2.json
new file mode 100644
index 0000000..3fd3bbd
--- /dev/null
+++ b/scenefiles/illuminate/extra_credit/refract2.json
@@ -0,0 +1,110 @@
+{
+ "name": "root",
+ "globalData": {
+ "ambientCoeff": 0.5,
+ "diffuseCoeff": 0.5,
+ "specularCoeff": 0.5,
+ "transparentCoeff": 0.5
+ },
+ "cameraData": {
+ "position": [-6.0, 4.0, 2.0],
+ "up": [0.0, 1.0, 0.0],
+ "heightAngle": 30.0,
+ "focus": [0.0, 0.0, 0.0]
+ },
+ "groups": [
+ {
+ "lights": [
+ {
+ "type": "directional",
+ "color": [0.8, 0.8, 0.8],
+ "direction": [0.0, -1.0, -1.0]
+ }
+ ]
+ },
+ {
+ "lights": [
+ {
+ "type": "directional",
+ "color": [0.4, 0.4, 0.4],
+ "direction": [1.0, -1.0, 0.0]
+ }
+ ]
+ },
+ {
+ "groups": [
+ {
+ "translate": [-0.65, 0.0, 0.65],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [1.0, 1.0, 1.0],
+ "specular": [1.0, 1.0, 1.0],
+ "shininess": 15.0,
+ "reflective": [0.2, 0.2, 0.2],
+ "transparent": [0.8, 0.8, 0.8],
+ "ior": 1.6
+ }
+ ]
+ },
+ {
+ "translate": [-0.65, 0.0, -0.65],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [0.6, 0.6, 0.8],
+ "specular": [1.0, 1.0, 1.0],
+ "shininess": 15.0,
+ "reflective": [0.6, 0.6, 0.8],
+ "transparent": [1.0, 1.0, 1.0],
+ "ior": 1.08
+ }
+ ]
+ },
+ {
+ "translate": [0.65, 0.0, -0.65],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [0.6, 0.8, 0.6],
+ "specular": [1.0, 1.0, 1.0],
+ "shininess": 15.0,
+ "reflective": [0.6, 0.8, 0.6],
+ "transparent": [1.0, 1.0, 1.0],
+ "ior": 1.08
+ }
+ ]
+ },
+ {
+ "translate": [0.65, 0.0, 0.65],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [0.7, 0.7, 0.7],
+ "specular": [1.0, 1.0, 1.0],
+ "shininess": 15.0,
+ "reflective": [0.6, 0.6, 0.6],
+ "transparent": [1.0, 1.0, 1.0],
+ "ior": 1.08
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -0.6, 0.0],
+ "scale": [6.0, 0.1, 6.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.0, 1.0, 1.0],
+ "reflective": [0.3, 0.3, 0.3],
+ "blend": 0.9,
+ "textureFile": "textures/check.png",
+ "textureU": 3.0,
+ "textureV": 3.0
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/scenefiles/illuminate/extra_credit_outputs/depth_of_field.png b/scenefiles/illuminate/extra_credit_outputs/depth_of_field.png
new file mode 100644
index 0000000..a1ec4bd
--- /dev/null
+++ b/scenefiles/illuminate/extra_credit_outputs/depth_of_field.png
Binary files differ
diff --git a/scenefiles/illuminate/extra_credit_outputs/refract1.png b/scenefiles/illuminate/extra_credit_outputs/refract1.png
new file mode 100644
index 0000000..deee8ca
--- /dev/null
+++ b/scenefiles/illuminate/extra_credit_outputs/refract1.png
Binary files differ
diff --git a/scenefiles/illuminate/extra_credit_outputs/refract2.png b/scenefiles/illuminate/extra_credit_outputs/refract2.png
new file mode 100644
index 0000000..e2a03be
--- /dev/null
+++ b/scenefiles/illuminate/extra_credit_outputs/refract2.png
Binary files differ
diff --git a/scenefiles/illuminate/optional/fun/chess.json b/scenefiles/illuminate/optional/fun/chess.json
new file mode 100644
index 0000000..ae957d7
--- /dev/null
+++ b/scenefiles/illuminate/optional/fun/chess.json
@@ -0,0 +1,4407 @@
+{
+ "name": "root",
+ "globalData": {
+ "ambientCoeff": 0.5,
+ "diffuseCoeff": 0.5,
+ "specularCoeff": 0.5,
+ "transparentCoeff": 0
+ },
+ "cameraData": {
+ "position": [12.0, 6.0, 6.0],
+ "up": [0.0, 1.0, 0.0],
+ "heightAngle": 60.0,
+ "focus": [4.0, 0.0, 3.0]
+ },
+ "groups": [
+ {
+ "translate": [8.5, 2.0, 8.5],
+ "lights": [
+ {
+ "type": "point",
+ "color": [1.0, 1.0, 1.0],
+ "attenuationCoeff": [0.1, 1.0, 0.0]
+ }
+ ]
+ },
+ {
+ "translate": [3.0, 3.0, 3.0],
+ "lights": [
+ {
+ "type": "point",
+ "color": [1.0, 1.0, 1.0],
+ "attenuationCoeff": [0.1, 1.0, 0.0]
+ }
+ ]
+ },
+ {
+ "translate": [-3.0, 4.0, -3.0],
+ "lights": [
+ {
+ "type": "point",
+ "color": [1.0, 1.0, 1.0],
+ "attenuationCoeff": [0.1, 1.0, 0.0]
+ }
+ ]
+ },
+ {
+ "translate": [-3.0, 2.0, 3.0],
+ "lights": [
+ {
+ "type": "point",
+ "color": [1.0, 1.0, 1.0],
+ "attenuationCoeff": [0.1, 1.0, 0.0]
+ }
+ ]
+ },
+ {
+ "translate": [8.0, 3.0, 1.0],
+ "lights": [
+ {
+ "type": "point",
+ "color": [1.0, 1.0, 1.0],
+ "attenuationCoeff": [0.1, 1.0, 0.0]
+ }
+ ]
+ },
+ {
+ "translate": [6.0, 2.0, 6.0],
+ "lights": [
+ {
+ "type": "point",
+ "color": [1.0, 1.0, 1.0],
+ "attenuationCoeff": [0.1, 1.0, 0.0]
+ }
+ ]
+ },
+ {
+ "groups": [
+ {
+ "groups": [
+ {
+ "translate": [4.0, 0.0, 4.0],
+ "scale": [8.0, 0.1, 8.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.05, 0.05, 0.05]
+ }
+ ]
+ },
+ {
+ "translate": [0.5, 0.01, 0.5],
+ "scale": [1.0, 0.1, 1.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [2.5, 0.01, 0.5],
+ "scale": [1.0, 0.1, 1.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [4.5, 0.01, 0.5],
+ "scale": [1.0, 0.1, 1.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [6.5, 0.01, 0.5],
+ "scale": [1.0, 0.1, 1.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [1.5, 0.01, 1.5],
+ "scale": [1.0, 0.1, 1.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [3.5, 0.01, 1.5],
+ "scale": [1.0, 0.1, 1.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [5.5, 0.01, 1.5],
+ "scale": [1.0, 0.1, 1.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [7.5, 0.01, 1.5],
+ "scale": [1.0, 0.1, 1.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.5, 0.01, 2.5],
+ "scale": [1.0, 0.1, 1.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [2.5, 0.01, 2.5],
+ "scale": [1.0, 0.1, 1.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [4.5, 0.01, 2.5],
+ "scale": [1.0, 0.1, 1.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [6.5, 0.01, 2.5],
+ "scale": [1.0, 0.1, 1.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [1.5, 0.01, 3.5],
+ "scale": [1.0, 0.1, 1.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [3.5, 0.01, 3.5],
+ "scale": [1.0, 0.1, 1.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [5.5, 0.01, 3.5],
+ "scale": [1.0, 0.1, 1.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [7.5, 0.01, 3.5],
+ "scale": [1.0, 0.1, 1.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.5, 0.01, 4.5],
+ "scale": [1.0, 0.1, 1.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [2.5, 0.01, 4.5],
+ "scale": [1.0, 0.1, 1.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [4.5, 0.01, 4.5],
+ "scale": [1.0, 0.1, 1.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [6.5, 0.01, 4.5],
+ "scale": [1.0, 0.1, 1.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [1.5, 0.01, 5.5],
+ "scale": [1.0, 0.1, 1.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [3.5, 0.01, 5.5],
+ "scale": [1.0, 0.1, 1.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [5.5, 0.01, 5.5],
+ "scale": [1.0, 0.1, 1.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [7.5, 0.01, 5.5],
+ "scale": [1.0, 0.1, 1.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.5, 0.01, 6.5],
+ "scale": [1.0, 0.1, 1.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [2.5, 0.01, 6.5],
+ "scale": [1.0, 0.1, 1.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [4.5, 0.01, 6.5],
+ "scale": [1.0, 0.1, 1.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [6.5, 0.01, 6.5],
+ "scale": [1.0, 0.1, 1.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [1.5, 0.01, 7.5],
+ "scale": [1.0, 0.1, 1.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [3.5, 0.01, 7.5],
+ "scale": [1.0, 0.1, 1.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [5.5, 0.01, 7.5],
+ "scale": [1.0, 0.1, 1.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [7.5, 0.01, 7.5],
+ "scale": [1.0, 0.1, 1.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 0.9, -0.5],
+ "scale": [0.4, 0.5, 0.4],
+ "groups": [
+ {
+ "translate": [0.0, -1.6, 0.0],
+ "scale": [1.3, 0.1, 1.3],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -1.5, 0.0],
+ "scale": [1.1, 0.1, 1.1],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -1.0, 0.0],
+ "scale": [1.0, 0.8, 1.0],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -1.0, 0.0],
+ "scale": [0.6, 0.05, 0.6],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -0.4, 0.0],
+ "scale": [0.3, 1.0, 0.3],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.1, 0.0],
+ "scale": [0.6, 0.05, 0.6],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.15, 0.0],
+ "scale": [0.4, 0.03, 0.4],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.25, 0.0],
+ "scale": [0.7, -0.7, 0.7],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.6, 0.0],
+ "scale": [0.7, 0.2, 0.7],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.7, 0.0],
+ "scale": [0.3, 0.05, 0.3],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.725, 0.0],
+ "scale": [0.15, 0.15, 0.15],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 0.9, -0.5],
+ "scale": [0.4, 0.5, 0.4],
+ "rotate": [0.0, 1.0, 0.0, 90.0],
+ "groups": [
+ {
+ "translate": [0.0, -1.6, 0.0],
+ "scale": [1.3, 0.1, 1.3],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -1.5, 0.0],
+ "scale": [1.1, 0.1, 1.1],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -1.0, 0.0],
+ "scale": [1.0, 0.8, 1.0],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -1.0, 0.0],
+ "scale": [0.6, 0.05, 0.6],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -0.4, 0.0],
+ "scale": [0.3, 1.0, 0.3],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.1, 0.0],
+ "scale": [0.6, 0.05, 0.6],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.15, 0.0],
+ "scale": [0.4, 0.03, 0.4],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.25, 0.0],
+ "scale": [0.7, -0.7, 0.7],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.6, 0.0],
+ "scale": [0.7, 0.2, 0.7],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.7, 0.0],
+ "scale": [0.3, 0.05, 0.3],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.85, 0.0],
+ "scale": [0.1, 0.5, 0.05],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.95, 0.0],
+ "scale": [0.3, 0.1, 0.05],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 0.65, -0.5],
+ "scale": [0.3, 0.4, 0.3],
+ "groups": [
+ {
+ "translate": [0.0, -1.4, 0.0],
+ "scale": [1.2, 0.2, 1.2],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -1.3, 0.0],
+ "scale": [1.1, 0.2, 1.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -0.2, 0.0],
+ "scale": [1.0, 2.2, 1.0],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 1.1, 0.0],
+ "scale": [1.1, 0.2, 1.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.5, 1.2, 0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.25, 1.2, 0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 1.2, 0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 1.2, 0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [-0.25, 1.2, 0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 1.2, 0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.5, 1.2, -0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.25, 1.2, -0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 1.2, -0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 1.2, -0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [-0.25, 1.2, -0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 1.2, -0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.5, 1.2, 0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.5, 1.2, 0.25],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.5, 1.2, 0.0],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.5, 1.2, -0.25],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.5, 1.2, -0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 1.2, 0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 1.2, 0.25],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 1.2, 0.0],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 1.2, -0.25],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 1.2, -0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 0.65, -0.5],
+ "scale": [0.3, 0.4, 0.3],
+ "groups": [
+ {
+ "translate": [0.0, -1.4, 0.0],
+ "scale": [1.2, 0.2, 1.2],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -1.3, 0.0],
+ "scale": [1.1, 0.2, 1.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -0.2, 0.0],
+ "scale": [1.0, 2.2, 1.0],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 1.1, 0.0],
+ "scale": [1.1, 0.2, 1.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.5, 1.2, 0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.25, 1.2, 0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 1.2, 0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 1.2, 0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [-0.25, 1.2, 0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 1.2, 0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.5, 1.2, -0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.25, 1.2, -0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 1.2, -0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 1.2, -0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [-0.25, 1.2, -0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 1.2, -0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.5, 1.2, 0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.5, 1.2, 0.25],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.5, 1.2, 0.0],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.5, 1.2, -0.25],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.5, 1.2, -0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 1.2, 0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 1.2, 0.25],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 1.2, 0.0],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 1.2, -0.25],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 1.2, -0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 0.4, -0.5],
+ "scale": [0.4, 0.6, 0.4],
+ "rotate": [0.0, 1.0, 0.0, 180.0],
+ "groups": [
+ {
+ "scale": [1.0, 0.7, 1.0],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.2, 0.3, 0.0],
+ "rotate": [1.0, 0.0, 0.0, 90.0],
+ "scale": [0.6, 0.2, 1.4],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [-0.1, 0.7, 0.0],
+ "rotate": [1.0, 0.0, 0.0, 90.0],
+ "scale": [1.0, 0.2, 0.4],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.05, 1.05, 0.05],
+ "rotate": [0.0, 0.0, 1.0, -20.0],
+ "scale": [0.15, 0.2, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.15, 1.05, 0.05],
+ "rotate": [0.0, 0.0, 1.0, -45.0],
+ "scale": [0.35, 0.15, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.05, 1.05, -0.05],
+ "rotate": [0.0, 0.0, 1.0, -20.0],
+ "scale": [0.15, 0.2, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.15, 1.05, -0.05],
+ "rotate": [0.0, 0.0, 1.0, -45.0],
+ "scale": [0.35, 0.15, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.9, 0.025],
+ "scale": [0.2, 0.2, 0.15],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [-0.3, 0.72, 0.03],
+ "rotate": [0.0, 0.0, 1.0, 35.0],
+ "scale": [0.6, 0.25, 0.12],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [-0.3, 0.72, -0.03],
+ "rotate": [0.0, 0.0, 1.0, 35.0],
+ "scale": [0.6, 0.25, 0.12],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [-0.1, 0.5, 0.0],
+ "rotate": [1.0, 0.0, 0.0, 90.0],
+ "scale": [0.4, 0.2, 0.4],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 0.6, 0.0],
+ "scale": [0.2, 0.2, 0.2],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -0.4, 0.0],
+ "scale": [1.1, 0.1, 1.1],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -0.45, 0.0],
+ "scale": [1.2, 0.1, 1.2],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 0.4, -0.5],
+ "scale": [0.4, 0.6, 0.4],
+ "rotate": [0.0, 1.0, 0.0, 180.0],
+ "groups": [
+ {
+ "scale": [1.0, 0.7, 1.0],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.2, 0.3, 0.0],
+ "rotate": [1.0, 0.0, 0.0, 90.0],
+ "scale": [0.6, 0.2, 1.4],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [-0.1, 0.7, 0.0],
+ "rotate": [1.0, 0.0, 0.0, 90.0],
+ "scale": [1.0, 0.2, 0.4],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.05, 1.05, 0.05],
+ "rotate": [0.0, 0.0, 1.0, -20.0],
+ "scale": [0.15, 0.2, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.15, 1.05, 0.05],
+ "rotate": [0.0, 0.0, 1.0, -45.0],
+ "scale": [0.35, 0.15, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.05, 1.05, -0.05],
+ "rotate": [0.0, 0.0, 1.0, -20.0],
+ "scale": [0.15, 0.2, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.15, 1.05, -0.05],
+ "rotate": [0.0, 0.0, 1.0, -45.0],
+ "scale": [0.35, 0.15, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.9, 0.025],
+ "scale": [0.2, 0.2, 0.15],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [-0.3, 0.72, 0.03],
+ "rotate": [0.0, 0.0, 1.0, 35.0],
+ "scale": [0.6, 0.25, 0.12],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [-0.3, 0.72, -0.03],
+ "rotate": [0.0, 0.0, 1.0, 35.0],
+ "scale": [0.6, 0.25, 0.12],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [-0.1, 0.5, 0.0],
+ "rotate": [1.0, 0.0, 0.0, 90.0],
+ "scale": [0.4, 0.2, 0.4],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 0.6, 0.0],
+ "scale": [0.2, 0.2, 0.2],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -0.4, 0.0],
+ "scale": [1.1, 0.1, 1.1],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -0.45, 0.0],
+ "scale": [1.2, 0.1, 1.2],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 0.25, -0.5],
+ "scale": [0.4, 0.3, 0.4],
+ "groups": [
+ {
+ "translate": [0.0, -0.4, 0.0],
+ "scale": [1.2, 0.2, 1.2],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -0.3, 0.0],
+ "scale": [1.1, 0.2, 1.1],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.2, 0.0],
+ "scale": [0.8, 0.15, 0.8],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.7, 0.0],
+ "scale": [0.85, 1.8, 0.85],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.5, 0.0],
+ "scale": [0.5, 2.0, 0.5],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 1.5, 0.0],
+ "scale": [0.5, 0.5, 0.5],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 1.4, 0.0],
+ "scale": [0.7, 0.15, 0.7],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 1.5, 0.0],
+ "scale": [0.6, 0.15, 0.6],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 1.9, 0.0],
+ "scale": [0.7, 0.7, 0.7],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 2.3, 0.0],
+ "scale": [0.7, 0.6, 0.7],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 2.6, 0.0],
+ "scale": [0.2, 0.2, 0.2],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 0.25, -0.5],
+ "scale": [0.4, 0.3, 0.4],
+ "groups": [
+ {
+ "translate": [0.0, -0.4, 0.0],
+ "scale": [1.2, 0.2, 1.2],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -0.3, 0.0],
+ "scale": [1.1, 0.2, 1.1],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.2, 0.0],
+ "scale": [0.8, 0.15, 0.8],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.7, 0.0],
+ "scale": [0.85, 1.8, 0.85],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.5, 0.0],
+ "scale": [0.5, 2.0, 0.5],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 1.5, 0.0],
+ "scale": [0.5, 0.5, 0.5],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 1.4, 0.0],
+ "scale": [0.7, 0.15, 0.7],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 1.5, 0.0],
+ "scale": [0.6, 0.15, 0.6],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 1.9, 0.0],
+ "scale": [0.7, 0.7, 0.7],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 2.3, 0.0],
+ "scale": [0.7, 0.6, 0.7],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 2.6, 0.0],
+ "scale": [0.2, 0.2, 0.2],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 0.35, -0.5],
+ "scale": [0.7, 0.7, 0.7],
+ "groups": [
+ {
+ "translate": [0.0, -0.25, 0.0],
+ "scale": [0.5, 0.07, 0.5],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -0.3, 0.0],
+ "scale": [0.6, 0.1, 0.6],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "scale": [0.4, 0.4, 0.4],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.2, 0.0],
+ "scale": [0.2, 0.6, 0.2],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.25, 0.0],
+ "scale": [0.25, 0.03, 0.25],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.45, 0.0],
+ "scale": [0.35, -0.1, 0.35],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.55, 0.0],
+ "scale": [0.35, 0.1, 0.35],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.65, 0.0],
+ "scale": [0.35, 0.35, 0.35],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 0.35, -0.5],
+ "scale": [0.7, 0.7, 0.7],
+ "groups": [
+ {
+ "translate": [0.0, -0.25, 0.0],
+ "scale": [0.5, 0.07, 0.5],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -0.3, 0.0],
+ "scale": [0.6, 0.1, 0.6],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "scale": [0.4, 0.4, 0.4],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.2, 0.0],
+ "scale": [0.2, 0.6, 0.2],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.25, 0.0],
+ "scale": [0.25, 0.03, 0.25],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.45, 0.0],
+ "scale": [0.35, -0.1, 0.35],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.55, 0.0],
+ "scale": [0.35, 0.1, 0.35],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.65, 0.0],
+ "scale": [0.35, 0.35, 0.35],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 0.35, -0.5],
+ "scale": [0.7, 0.7, 0.7],
+ "groups": [
+ {
+ "translate": [0.0, -0.25, 0.0],
+ "scale": [0.5, 0.07, 0.5],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -0.3, 0.0],
+ "scale": [0.6, 0.1, 0.6],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "scale": [0.4, 0.4, 0.4],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.2, 0.0],
+ "scale": [0.2, 0.6, 0.2],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.25, 0.0],
+ "scale": [0.25, 0.03, 0.25],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.45, 0.0],
+ "scale": [0.35, -0.1, 0.35],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.55, 0.0],
+ "scale": [0.35, 0.1, 0.35],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.65, 0.0],
+ "scale": [0.35, 0.35, 0.35],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 0.35, -0.5],
+ "scale": [0.7, 0.7, 0.7],
+ "groups": [
+ {
+ "translate": [0.0, -0.25, 0.0],
+ "scale": [0.5, 0.07, 0.5],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -0.3, 0.0],
+ "scale": [0.6, 0.1, 0.6],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "scale": [0.4, 0.4, 0.4],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.2, 0.0],
+ "scale": [0.2, 0.6, 0.2],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.25, 0.0],
+ "scale": [0.25, 0.03, 0.25],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.45, 0.0],
+ "scale": [0.35, -0.1, 0.35],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.55, 0.0],
+ "scale": [0.35, 0.1, 0.35],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.65, 0.0],
+ "scale": [0.35, 0.35, 0.35],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 0.35, -0.5],
+ "scale": [0.7, 0.7, 0.7],
+ "groups": [
+ {
+ "translate": [0.0, -0.25, 0.0],
+ "scale": [0.5, 0.07, 0.5],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -0.3, 0.0],
+ "scale": [0.6, 0.1, 0.6],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "scale": [0.4, 0.4, 0.4],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.2, 0.0],
+ "scale": [0.2, 0.6, 0.2],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.25, 0.0],
+ "scale": [0.25, 0.03, 0.25],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.45, 0.0],
+ "scale": [0.35, -0.1, 0.35],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.55, 0.0],
+ "scale": [0.35, 0.1, 0.35],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.65, 0.0],
+ "scale": [0.35, 0.35, 0.35],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 0.35, -0.5],
+ "scale": [0.7, 0.7, 0.7],
+ "groups": [
+ {
+ "translate": [0.0, -0.25, 0.0],
+ "scale": [0.5, 0.07, 0.5],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -0.3, 0.0],
+ "scale": [0.6, 0.1, 0.6],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "scale": [0.4, 0.4, 0.4],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.2, 0.0],
+ "scale": [0.2, 0.6, 0.2],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.25, 0.0],
+ "scale": [0.25, 0.03, 0.25],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.45, 0.0],
+ "scale": [0.35, -0.1, 0.35],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.55, 0.0],
+ "scale": [0.35, 0.1, 0.35],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.65, 0.0],
+ "scale": [0.35, 0.35, 0.35],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 0.35, -0.5],
+ "scale": [0.7, 0.7, 0.7],
+ "groups": [
+ {
+ "translate": [0.0, -0.25, 0.0],
+ "scale": [0.5, 0.07, 0.5],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -0.3, 0.0],
+ "scale": [0.6, 0.1, 0.6],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "scale": [0.4, 0.4, 0.4],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.2, 0.0],
+ "scale": [0.2, 0.6, 0.2],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.25, 0.0],
+ "scale": [0.25, 0.03, 0.25],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.45, 0.0],
+ "scale": [0.35, -0.1, 0.35],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.55, 0.0],
+ "scale": [0.35, 0.1, 0.35],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.65, 0.0],
+ "scale": [0.35, 0.35, 0.35],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 0.35, -0.5],
+ "scale": [0.7, 0.7, 0.7],
+ "groups": [
+ {
+ "translate": [0.0, -0.25, 0.0],
+ "scale": [0.5, 0.07, 0.5],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -0.3, 0.0],
+ "scale": [0.6, 0.1, 0.6],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "scale": [0.4, 0.4, 0.4],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.2, 0.0],
+ "scale": [0.2, 0.6, 0.2],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.25, 0.0],
+ "scale": [0.25, 0.03, 0.25],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.45, 0.0],
+ "scale": [0.35, -0.1, 0.35],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.55, 0.0],
+ "scale": [0.35, 0.1, 0.35],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.65, 0.0],
+ "scale": [0.35, 0.35, 0.35],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 0.9, -0.5],
+ "scale": [0.4, 0.5, 0.4],
+ "groups": [
+ {
+ "translate": [0.0, -1.6, 0.0],
+ "scale": [1.3, 0.1, 1.3],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -1.5, 0.0],
+ "scale": [1.1, 0.1, 1.1],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -1.0, 0.0],
+ "scale": [1.0, 0.8, 1.0],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -1.0, 0.0],
+ "scale": [0.6, 0.05, 0.6],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -0.4, 0.0],
+ "scale": [0.3, 1.0, 0.3],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.1, 0.0],
+ "scale": [0.6, 0.05, 0.6],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.15, 0.0],
+ "scale": [0.4, 0.03, 0.4],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.25, 0.0],
+ "scale": [0.7, -0.7, 0.7],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.6, 0.0],
+ "scale": [0.7, 0.2, 0.7],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.7, 0.0],
+ "scale": [0.3, 0.05, 0.3],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.725, 0.0],
+ "scale": [0.15, 0.15, 0.15],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 0.9, -0.5],
+ "scale": [0.4, 0.5, 0.4],
+ "rotate": [0.0, 1.0, 0.0, 90.0],
+ "groups": [
+ {
+ "translate": [0.0, -1.6, 0.0],
+ "scale": [1.3, 0.1, 1.3],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -1.5, 0.0],
+ "scale": [1.1, 0.1, 1.1],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -1.0, 0.0],
+ "scale": [1.0, 0.8, 1.0],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -1.0, 0.0],
+ "scale": [0.6, 0.05, 0.6],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -0.4, 0.0],
+ "scale": [0.3, 1.0, 0.3],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.1, 0.0],
+ "scale": [0.6, 0.05, 0.6],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.15, 0.0],
+ "scale": [0.4, 0.03, 0.4],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.25, 0.0],
+ "scale": [0.7, -0.7, 0.7],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.6, 0.0],
+ "scale": [0.7, 0.2, 0.7],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.7, 0.0],
+ "scale": [0.3, 0.05, 0.3],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.85, 0.0],
+ "scale": [0.1, 0.5, 0.05],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.95, 0.0],
+ "scale": [0.3, 0.1, 0.05],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 0.65, -0.5],
+ "scale": [0.3, 0.4, 0.3],
+ "groups": [
+ {
+ "translate": [0.0, -1.4, 0.0],
+ "scale": [1.2, 0.2, 1.2],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -1.3, 0.0],
+ "scale": [1.1, 0.2, 1.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -0.2, 0.0],
+ "scale": [1.0, 2.2, 1.0],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 1.1, 0.0],
+ "scale": [1.1, 0.2, 1.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.5, 1.2, 0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.25, 1.2, 0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 1.2, 0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 1.2, 0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [-0.25, 1.2, 0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 1.2, 0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.5, 1.2, -0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.25, 1.2, -0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 1.2, -0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 1.2, -0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [-0.25, 1.2, -0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 1.2, -0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.5, 1.2, 0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.5, 1.2, 0.25],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.5, 1.2, 0.0],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.5, 1.2, -0.25],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.5, 1.2, -0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 1.2, 0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 1.2, 0.25],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 1.2, 0.0],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 1.2, -0.25],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 1.2, -0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 0.65, -0.5],
+ "scale": [0.3, 0.4, 0.3],
+ "groups": [
+ {
+ "translate": [0.0, -1.4, 0.0],
+ "scale": [1.2, 0.2, 1.2],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -1.3, 0.0],
+ "scale": [1.1, 0.2, 1.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -0.2, 0.0],
+ "scale": [1.0, 2.2, 1.0],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 1.1, 0.0],
+ "scale": [1.1, 0.2, 1.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.5, 1.2, 0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.25, 1.2, 0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 1.2, 0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 1.2, 0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [-0.25, 1.2, 0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 1.2, 0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.5, 1.2, -0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.25, 1.2, -0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 1.2, -0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 1.2, -0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [-0.25, 1.2, -0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 1.2, -0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.5, 1.2, 0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.5, 1.2, 0.25],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.5, 1.2, 0.0],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.5, 1.2, -0.25],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.5, 1.2, -0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 1.2, 0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 1.2, 0.25],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 1.2, 0.0],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 1.2, -0.25],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 1.2, -0.5],
+ "scale": [0.1, 0.1, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 0.4, -0.5],
+ "scale": [0.4, 0.6, 0.4],
+ "groups": [
+ {
+ "scale": [1.0, 0.7, 1.0],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.2, 0.3, 0.0],
+ "rotate": [1.0, 0.0, 0.0, 90.0],
+ "scale": [0.6, 0.2, 1.4],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [-0.1, 0.7, 0.0],
+ "rotate": [1.0, 0.0, 0.0, 90.0],
+ "scale": [1.0, 0.2, 0.4],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.05, 1.05, 0.05],
+ "rotate": [0.0, 0.0, 1.0, -20.0],
+ "scale": [0.15, 0.2, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.15, 1.05, 0.05],
+ "rotate": [0.0, 0.0, 1.0, -45.0],
+ "scale": [0.35, 0.15, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.05, 1.05, -0.05],
+ "rotate": [0.0, 0.0, 1.0, -20.0],
+ "scale": [0.15, 0.2, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.15, 1.05, -0.05],
+ "rotate": [0.0, 0.0, 1.0, -45.0],
+ "scale": [0.35, 0.15, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.9, 0.025],
+ "scale": [0.2, 0.2, 0.15],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [-0.3, 0.72, 0.03],
+ "rotate": [0.0, 0.0, 1.0, 35.0],
+ "scale": [0.6, 0.25, 0.12],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [-0.3, 0.72, -0.03],
+ "rotate": [0.0, 0.0, 1.0, 35.0],
+ "scale": [0.6, 0.25, 0.12],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [-0.1, 0.5, 0.0],
+ "rotate": [1.0, 0.0, 0.0, 90.0],
+ "scale": [0.4, 0.2, 0.4],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 0.6, 0.0],
+ "scale": [0.2, 0.2, 0.2],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -0.4, 0.0],
+ "scale": [1.1, 0.1, 1.1],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -0.45, 0.0],
+ "scale": [1.2, 0.1, 1.2],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 0.4, -0.5],
+ "scale": [0.4, 0.6, 0.4],
+ "groups": [
+ {
+ "scale": [1.0, 0.7, 1.0],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.2, 0.3, 0.0],
+ "rotate": [1.0, 0.0, 0.0, 90.0],
+ "scale": [0.6, 0.2, 1.4],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [-0.1, 0.7, 0.0],
+ "rotate": [1.0, 0.0, 0.0, 90.0],
+ "scale": [1.0, 0.2, 0.4],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.05, 1.05, 0.05],
+ "rotate": [0.0, 0.0, 1.0, -20.0],
+ "scale": [0.15, 0.2, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.15, 1.05, 0.05],
+ "rotate": [0.0, 0.0, 1.0, -45.0],
+ "scale": [0.35, 0.15, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.05, 1.05, -0.05],
+ "rotate": [0.0, 0.0, 1.0, -20.0],
+ "scale": [0.15, 0.2, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.15, 1.05, -0.05],
+ "rotate": [0.0, 0.0, 1.0, -45.0],
+ "scale": [0.35, 0.15, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.9, 0.025],
+ "scale": [0.2, 0.2, 0.15],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [-0.3, 0.72, 0.03],
+ "rotate": [0.0, 0.0, 1.0, 35.0],
+ "scale": [0.6, 0.25, 0.12],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [-0.3, 0.72, -0.03],
+ "rotate": [0.0, 0.0, 1.0, 35.0],
+ "scale": [0.6, 0.25, 0.12],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [-0.1, 0.5, 0.0],
+ "rotate": [1.0, 0.0, 0.0, 90.0],
+ "scale": [0.4, 0.2, 0.4],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 0.6, 0.0],
+ "scale": [0.2, 0.2, 0.2],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -0.4, 0.0],
+ "scale": [1.1, 0.1, 1.1],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -0.45, 0.0],
+ "scale": [1.2, 0.1, 1.2],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 0.25, -0.5],
+ "scale": [0.4, 0.3, 0.4],
+ "groups": [
+ {
+ "translate": [0.0, -0.4, 0.0],
+ "scale": [1.2, 0.2, 1.2],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -0.3, 0.0],
+ "scale": [1.1, 0.2, 1.1],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.2, 0.0],
+ "scale": [0.8, 0.15, 0.8],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.7, 0.0],
+ "scale": [0.85, 1.8, 0.85],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.5, 0.0],
+ "scale": [0.5, 2.0, 0.5],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 1.5, 0.0],
+ "scale": [0.5, 0.5, 0.5],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 1.4, 0.0],
+ "scale": [0.7, 0.15, 0.7],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 1.5, 0.0],
+ "scale": [0.6, 0.15, 0.6],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 1.9, 0.0],
+ "scale": [0.7, 0.7, 0.7],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 2.3, 0.0],
+ "scale": [0.7, 0.6, 0.7],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 2.6, 0.0],
+ "scale": [0.2, 0.2, 0.2],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 0.25, -0.5],
+ "scale": [0.4, 0.3, 0.4],
+ "groups": [
+ {
+ "translate": [0.0, -0.4, 0.0],
+ "scale": [1.2, 0.2, 1.2],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -0.3, 0.0],
+ "scale": [1.1, 0.2, 1.1],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.2, 0.0],
+ "scale": [0.8, 0.15, 0.8],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.7, 0.0],
+ "scale": [0.85, 1.8, 0.85],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.5, 0.0],
+ "scale": [0.5, 2.0, 0.5],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 1.5, 0.0],
+ "scale": [0.5, 0.5, 0.5],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 1.4, 0.0],
+ "scale": [0.7, 0.15, 0.7],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 1.5, 0.0],
+ "scale": [0.6, 0.15, 0.6],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 1.9, 0.0],
+ "scale": [0.7, 0.7, 0.7],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 2.3, 0.0],
+ "scale": [0.7, 0.6, 0.7],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 2.6, 0.0],
+ "scale": [0.2, 0.2, 0.2],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 0.35, -0.5],
+ "scale": [0.7, 0.7, 0.7],
+ "groups": [
+ {
+ "translate": [0.0, -0.25, 0.0],
+ "scale": [0.5, 0.07, 0.5],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -0.3, 0.0],
+ "scale": [0.6, 0.1, 0.6],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "scale": [0.4, 0.4, 0.4],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.2, 0.0],
+ "scale": [0.2, 0.6, 0.2],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.25, 0.0],
+ "scale": [0.25, 0.03, 0.25],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.45, 0.0],
+ "scale": [0.35, -0.1, 0.35],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.55, 0.0],
+ "scale": [0.35, 0.1, 0.35],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.65, 0.0],
+ "scale": [0.35, 0.35, 0.35],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 0.35, -0.5],
+ "scale": [0.7, 0.7, 0.7],
+ "groups": [
+ {
+ "translate": [0.0, -0.25, 0.0],
+ "scale": [0.5, 0.07, 0.5],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -0.3, 0.0],
+ "scale": [0.6, 0.1, 0.6],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "scale": [0.4, 0.4, 0.4],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.2, 0.0],
+ "scale": [0.2, 0.6, 0.2],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.25, 0.0],
+ "scale": [0.25, 0.03, 0.25],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.45, 0.0],
+ "scale": [0.35, -0.1, 0.35],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.55, 0.0],
+ "scale": [0.35, 0.1, 0.35],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.65, 0.0],
+ "scale": [0.35, 0.35, 0.35],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 0.35, -0.5],
+ "scale": [0.7, 0.7, 0.7],
+ "groups": [
+ {
+ "translate": [0.0, -0.25, 0.0],
+ "scale": [0.5, 0.07, 0.5],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -0.3, 0.0],
+ "scale": [0.6, 0.1, 0.6],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "scale": [0.4, 0.4, 0.4],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.2, 0.0],
+ "scale": [0.2, 0.6, 0.2],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.25, 0.0],
+ "scale": [0.25, 0.03, 0.25],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.45, 0.0],
+ "scale": [0.35, -0.1, 0.35],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.55, 0.0],
+ "scale": [0.35, 0.1, 0.35],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.65, 0.0],
+ "scale": [0.35, 0.35, 0.35],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 0.35, -0.5],
+ "scale": [0.7, 0.7, 0.7],
+ "groups": [
+ {
+ "translate": [0.0, -0.25, 0.0],
+ "scale": [0.5, 0.07, 0.5],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -0.3, 0.0],
+ "scale": [0.6, 0.1, 0.6],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "scale": [0.4, 0.4, 0.4],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.2, 0.0],
+ "scale": [0.2, 0.6, 0.2],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.25, 0.0],
+ "scale": [0.25, 0.03, 0.25],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.45, 0.0],
+ "scale": [0.35, -0.1, 0.35],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.55, 0.0],
+ "scale": [0.35, 0.1, 0.35],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.65, 0.0],
+ "scale": [0.35, 0.35, 0.35],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 0.35, -0.5],
+ "scale": [0.7, 0.7, 0.7],
+ "groups": [
+ {
+ "translate": [0.0, -0.25, 0.0],
+ "scale": [0.5, 0.07, 0.5],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -0.3, 0.0],
+ "scale": [0.6, 0.1, 0.6],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "scale": [0.4, 0.4, 0.4],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.2, 0.0],
+ "scale": [0.2, 0.6, 0.2],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.25, 0.0],
+ "scale": [0.25, 0.03, 0.25],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.45, 0.0],
+ "scale": [0.35, -0.1, 0.35],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.55, 0.0],
+ "scale": [0.35, 0.1, 0.35],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.65, 0.0],
+ "scale": [0.35, 0.35, 0.35],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 0.35, -0.5],
+ "scale": [0.7, 0.7, 0.7],
+ "groups": [
+ {
+ "translate": [0.0, -0.25, 0.0],
+ "scale": [0.5, 0.07, 0.5],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -0.3, 0.0],
+ "scale": [0.6, 0.1, 0.6],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "scale": [0.4, 0.4, 0.4],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.2, 0.0],
+ "scale": [0.2, 0.6, 0.2],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.25, 0.0],
+ "scale": [0.25, 0.03, 0.25],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.45, 0.0],
+ "scale": [0.35, -0.1, 0.35],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.55, 0.0],
+ "scale": [0.35, 0.1, 0.35],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.65, 0.0],
+ "scale": [0.35, 0.35, 0.35],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 0.35, -0.5],
+ "scale": [0.7, 0.7, 0.7],
+ "groups": [
+ {
+ "translate": [0.0, -0.25, 0.0],
+ "scale": [0.5, 0.07, 0.5],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -0.3, 0.0],
+ "scale": [0.6, 0.1, 0.6],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "scale": [0.4, 0.4, 0.4],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.2, 0.0],
+ "scale": [0.2, 0.6, 0.2],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.25, 0.0],
+ "scale": [0.25, 0.03, 0.25],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.45, 0.0],
+ "scale": [0.35, -0.1, 0.35],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.55, 0.0],
+ "scale": [0.35, 0.1, 0.35],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.65, 0.0],
+ "scale": [0.35, 0.35, 0.35],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "translate": [-0.5, 0.35, -0.5],
+ "scale": [0.7, 0.7, 0.7],
+ "groups": [
+ {
+ "translate": [0.0, -0.25, 0.0],
+ "scale": [0.5, 0.07, 0.5],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -0.3, 0.0],
+ "scale": [0.6, 0.1, 0.6],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "scale": [0.4, 0.4, 0.4],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.2, 0.0],
+ "scale": [0.2, 0.6, 0.2],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.25, 0.0],
+ "scale": [0.25, 0.03, 0.25],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.45, 0.0],
+ "scale": [0.35, -0.1, 0.35],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.55, 0.0],
+ "scale": [0.35, 0.1, 0.35],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.65, 0.0],
+ "scale": [0.35, 0.35, 0.35],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [0.1, 0.1, 0.1]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/scenefiles/illuminate/optional/recursive_spheres/recursive_sphere_2.json b/scenefiles/illuminate/optional/recursive_spheres/recursive_sphere_2.json
new file mode 100644
index 0000000..08f9557
--- /dev/null
+++ b/scenefiles/illuminate/optional/recursive_spheres/recursive_sphere_2.json
@@ -0,0 +1,139 @@
+{
+ "name": "root",
+ "globalData": {
+ "ambientCoeff": 0.5,
+ "diffuseCoeff": 0.7,
+ "specularCoeff": 0.54,
+ "transparentCoeff": 0
+ },
+ "cameraData": {
+ "position": [10, 4.1, 16],
+ "up": [0, 1, 0],
+ "heightAngle": 49.5,
+ "look": [-9, -3.2, -16]
+ },
+ "templateGroups": [
+ {
+ "name": "level 1",
+ "groups": [
+ {
+ "translate": [0, 0, 0],
+ "scale": [3, 3, 3],
+ "primitives": [
+ {
+ "type": "sphere",
+ "reflective": [0.75, 1, 0.75],
+ "diffuse": [0.75, 1, 0.75],
+ "shininess": 25,
+ "specular": [1, 1, 1],
+ "textureFile": "file:src/../../../image_source/marsTexture.png",
+ "textureU": 1,
+ "textureV": 1,
+ "blend": 0.75
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "groups": [
+ {
+ "name": "Directional Lights",
+ "lights": [
+ {
+ "type": "directional",
+ "color": [1, 1, 1],
+ "direction": [0.25, 1, -1]
+ },
+ {
+ "type": "directional",
+ "color": [1, 1, 1],
+ "direction": [1, -1.8, -2]
+ }
+ ]
+ },
+ {
+ "name": "Point Light",
+ "translate": [10, 10, 10],
+ "lights": [
+ {
+ "type": "point",
+ "color": [1, 1, 1],
+ "attenuationCoeff": [1.5, 0, 0]
+ }
+ ]
+ },
+ {
+ "name": "level 0",
+ "translate": [0, 0, 0],
+ "scale": [6, 6, 6],
+ "primitives": [
+ {
+ "type": "sphere",
+ "reflective": [1, 0.75, 0.75],
+ "diffuse": [1, 0.75, 0.75],
+ "shininess": 25,
+ "specular": [1, 1, 1],
+ "textureFile": "file:src/../../../image_source/marsTexture.png",
+ "textureU": 1,
+ "textureV": 1,
+ "blend": 0.75
+ }
+ ]
+ },
+ {
+ "translate": [-4.5, 0, 0],
+ "rotate": [0, 0, 1, 90],
+ "groups": [
+ {
+ "name": "level 1"
+ }
+ ]
+ },
+ {
+ "translate": [4.5, 0, 0],
+ "rotate": [0, 0, 1, -90],
+ "groups": [
+ {
+ "name": "level 1"
+ }
+ ]
+ },
+ {
+ "translate": [0, 4.5, 0],
+ "rotate": [1, 0, 0, 0],
+ "groups": [
+ {
+ "name": "level 1"
+ }
+ ]
+ },
+ {
+ "translate": [0, -4.5, 0],
+ "rotate": [0, 0, 1, 180],
+ "groups": [
+ {
+ "name": "level 1"
+ }
+ ]
+ },
+ {
+ "translate": [0, 0, -4.5],
+ "rotate": [1, 0, 0, -90],
+ "groups": [
+ {
+ "name": "level 1"
+ }
+ ]
+ },
+ {
+ "translate": [0, 0, 4.5],
+ "rotate": [1, 0, 0, 90],
+ "groups": [
+ {
+ "name": "level 1"
+ }
+ ]
+ }
+ ]
+}
diff --git a/scenefiles/illuminate/optional/recursive_spheres/recursive_sphere_3.json b/scenefiles/illuminate/optional/recursive_spheres/recursive_sphere_3.json
new file mode 100644
index 0000000..95cb825
--- /dev/null
+++ b/scenefiles/illuminate/optional/recursive_spheres/recursive_sphere_3.json
@@ -0,0 +1,206 @@
+{
+ "name": "root",
+ "globalData": {
+ "ambientCoeff": 0.5,
+ "diffuseCoeff": 0.7,
+ "specularCoeff": 0.54,
+ "transparentCoeff": 0
+ },
+ "cameraData": {
+ "position": [10, 4.1, 16],
+ "up": [0, 1, 0],
+ "heightAngle": 49.5,
+ "look": [-9, -3.2, -16]
+ },
+ "templateGroups": [
+ {
+ "name": "level 2",
+ "groups": [
+ {
+ "translate": [0, 0, 0],
+ "scale": [1.5, 1.5, 1.5],
+ "primitives": [
+ {
+ "type": "sphere",
+ "reflective": [0.75, 0.75, 1],
+ "diffuse": [0.75, 0.75, 1],
+ "shininess": 25,
+ "specular": [1, 1, 1],
+ "textureFile": "file:src/../../../image_source/marsTexture.png",
+ "textureU": 1,
+ "textureV": 1,
+ "blend": 0.75
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name": "level 1",
+ "groups": [
+ {
+ "translate": [0, 0, 0],
+ "scale": [3, 3, 3],
+ "primitives": [
+ {
+ "type": "sphere",
+ "reflective": [0.75, 1, 0.75],
+ "diffuse": [0.75, 1, 0.75],
+ "shininess": 25,
+ "specular": [1, 1, 1],
+ "textureFile": "file:src/../../../image_source/marsTexture.png",
+ "textureU": 1,
+ "textureV": 1,
+ "blend": 0.75
+ }
+ ]
+ },
+ {
+ "translate": [-2.25, 0, 0],
+ "rotate": [0, 0, 1, 90],
+ "groups": [
+ {
+ "name": "level 2"
+ }
+ ]
+ },
+ {
+ "translate": [2.25, 0, 0],
+ "rotate": [0, 0, 1, -90],
+ "groups": [
+ {
+ "name": "level 2"
+ }
+ ]
+ },
+ {
+ "translate": [0, 2.25, 0],
+ "rotate": [1, 0, 0, 0],
+ "groups": [
+ {
+ "name": "level 2"
+ }
+ ]
+ },
+ {
+ "translate": [0, 0, -2.25],
+ "rotate": [1, 0, 0, -90],
+ "groups": [
+ {
+ "name": "level 2"
+ }
+ ]
+ },
+ {
+ "translate": [0, 0, 2.25],
+ "rotate": [1, 0, 0, 90],
+ "groups": [
+ {
+ "name": "level 2"
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "groups": [
+ {
+ "name": "Directional Lights",
+ "lights": [
+ {
+ "type": "directional",
+ "color": [1, 1, 1],
+ "direction": [0.25, 1, -1]
+ },
+ {
+ "type": "directional",
+ "color": [1, 1, 1],
+ "direction": [1, -1.8, -2]
+ }
+ ]
+ },
+ {
+ "name": "Point Light",
+ "translate": [10, 10, 10],
+ "lights": [
+ {
+ "type": "point",
+ "color": [1, 1, 1],
+ "attenuationCoeff": [1.5, 0, 0]
+ }
+ ]
+ },
+ {
+ "name": "level 0",
+ "translate": [0, 0, 0],
+ "scale": [6, 6, 6],
+ "primitives": [
+ {
+ "type": "sphere",
+ "reflective": [1, 0.75, 0.75],
+ "diffuse": [1, 0.75, 0.75],
+ "shininess": 25,
+ "specular": [1, 1, 1],
+ "textureFile": "file:src/../../../image_source/marsTexture.png",
+ "textureU": 1,
+ "textureV": 1,
+ "blend": 0.75
+ }
+ ]
+ },
+ {
+ "translate": [-4.5, 0, 0],
+ "rotate": [0, 0, 1, 90],
+ "groups": [
+ {
+ "name": "level 1"
+ }
+ ]
+ },
+ {
+ "translate": [4.5, 0, 0],
+ "rotate": [0, 0, 1, -90],
+ "groups": [
+ {
+ "name": "level 1"
+ }
+ ]
+ },
+ {
+ "translate": [0, 4.5, 0],
+ "rotate": [1, 0, 0, 0],
+ "groups": [
+ {
+ "name": "level 1"
+ }
+ ]
+ },
+ {
+ "translate": [0, -4.5, 0],
+ "rotate": [0, 0, 1, 180],
+ "groups": [
+ {
+ "name": "level 1"
+ }
+ ]
+ },
+ {
+ "translate": [0, 0, -4.5],
+ "rotate": [1, 0, 0, -90],
+ "groups": [
+ {
+ "name": "level 1"
+ }
+ ]
+ },
+ {
+ "translate": [0, 0, 4.5],
+ "rotate": [1, 0, 0, 90],
+ "groups": [
+ {
+ "name": "level 1"
+ }
+ ]
+ }
+ ]
+}
diff --git a/scenefiles/illuminate/optional/recursive_spheres/recursive_sphere_4.json b/scenefiles/illuminate/optional/recursive_spheres/recursive_sphere_4.json
new file mode 100644
index 0000000..782af5e
--- /dev/null
+++ b/scenefiles/illuminate/optional/recursive_spheres/recursive_sphere_4.json
@@ -0,0 +1,270 @@
+{
+ "name": "root",
+ "globalData": {
+ "ambientCoeff": 0.5,
+ "diffuseCoeff": 0.7,
+ "specularCoeff": 0.54,
+ "transparentCoeff": 0
+ },
+ "cameraData": {
+ "position": [10, 4.1, 16],
+ "up": [0, 1, 0],
+ "heightAngle": 49.5,
+ "look": [-9, -3.2, -16]
+ },
+ "templateGroups": [
+ {
+ "name": "level 3",
+ "translate": [0, 0, 0],
+ "scale": [0.75, 0.75, 0.75],
+ "primitives": [
+ {
+ "type": "sphere",
+ "reflective": [1, 0.75, 0.75],
+ "diffuse": [1, 0.75, 0.75],
+ "shininess": 25,
+ "specular": [1, 1, 1],
+ "textureFile": "file:src/../../../image_source/marsTexture.png",
+ "textureU": 1,
+ "textureV": 1,
+ "blend": 0.75
+ }
+ ]
+ },
+
+ {
+ "name": "level 2",
+ "groups": [
+ {
+ "translate": [0, 0, 0],
+ "scale": [1.5, 1.5, 1.5],
+ "primitives": [
+ {
+ "type": "sphere",
+ "reflective": [0.75, 0.75, 1],
+ "diffuse": [0.75, 0.75, 1],
+ "shininess": 25,
+ "specular": [1, 1, 1],
+ "textureFile": "file:src/../../../image_source/marsTexture.png",
+ "textureU": 1,
+ "textureV": 1,
+ "blend": 0.75
+ }
+ ]
+ },
+ {
+ "translate": [-1.125, 0, 0],
+ "rotate": [0, 0, 1, 90],
+ "groups": [
+ {
+ "name": "level 3"
+ }
+ ]
+ },
+ {
+ "translate": [1.125, 0, 0],
+ "rotate": [0, 0, 1, -90],
+ "groups": [
+ {
+ "name": "level 3"
+ }
+ ]
+ },
+ {
+ "translate": [0, 1.125, 0],
+ "rotate": [1, 0, 0, 0],
+ "groups": [
+ {
+ "name": "level 3"
+ }
+ ]
+ },
+ {
+ "translate": [0, 0, -1.125],
+ "rotate": [1, 0, 0, -90],
+ "groups": [
+ {
+ "name": "level 3"
+ }
+ ]
+ },
+ {
+ "translate": [0, 0, 1.125],
+ "rotate": [1, 0, 0, 90],
+ "groups": [
+ {
+ "name": "level 3"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name": "level 1",
+ "groups": [
+ {
+ "translate": [0, 0, 0],
+ "scale": [3, 3, 3],
+ "primitives": [
+ {
+ "type": "sphere",
+ "reflective": [0.75, 1, 0.75],
+ "diffuse": [0.75, 1, 0.75],
+ "shininess": 25,
+ "specular": [1, 1, 1],
+ "textureFile": "file:src/../../../image_source/marsTexture.png",
+ "textureU": 1,
+ "textureV": 1,
+ "blend": 0.75
+ }
+ ]
+ },
+ {
+ "translate": [-2.25, 0, 0],
+ "rotate": [0, 0, 1, 90],
+ "groups": [
+ {
+ "name": "level 2"
+ }
+ ]
+ },
+ {
+ "translate": [2.25, 0, 0],
+ "rotate": [0, 0, 1, -90],
+ "groups": [
+ {
+ "name": "level 2"
+ }
+ ]
+ },
+ {
+ "translate": [0, 2.25, 0],
+ "rotate": [1, 0, 0, 0],
+ "groups": [
+ {
+ "name": "level 2"
+ }
+ ]
+ },
+ {
+ "translate": [0, 0, -2.25],
+ "rotate": [1, 0, 0, -90],
+ "groups": [
+ {
+ "name": "level 2"
+ }
+ ]
+ },
+ {
+ "translate": [0, 0, 2.25],
+ "rotate": [1, 0, 0, 90],
+ "groups": [
+ {
+ "name": "level 2"
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "groups": [
+ {
+ "name": "Directional Lights",
+ "lights": [
+ {
+ "type": "directional",
+ "color": [1, 1, 1],
+ "direction": [0.25, 1, -1]
+ },
+ {
+ "type": "directional",
+ "color": [1, 1, 1],
+ "direction": [1, -1.8, -2]
+ }
+ ]
+ },
+ {
+ "name": "Point Light",
+ "translate": [10, 10, 10],
+ "lights": [
+ {
+ "type": "point",
+ "color": [1, 1, 1],
+ "attenuationCoeff": [1.5, 0, 0]
+ }
+ ]
+ },
+ {
+ "name": "level 0",
+ "translate": [0, 0, 0],
+ "scale": [6, 6, 6],
+ "primitives": [
+ {
+ "type": "sphere",
+ "reflective": [1, 0.75, 0.75],
+ "diffuse": [1, 0.75, 0.75],
+ "shininess": 25,
+ "specular": [1, 1, 1],
+ "textureFile": "file:src/../../../image_source/marsTexture.png",
+ "textureU": 1,
+ "textureV": 1,
+ "blend": 0.75
+ }
+ ]
+ },
+ {
+ "translate": [-4.5, 0, 0],
+ "rotate": [0, 0, 1, 90],
+ "groups": [
+ {
+ "name": "level 1"
+ }
+ ]
+ },
+ {
+ "translate": [4.5, 0, 0],
+ "rotate": [0, 0, 1, -90],
+ "groups": [
+ {
+ "name": "level 1"
+ }
+ ]
+ },
+ {
+ "translate": [0, 4.5, 0],
+ "rotate": [1, 0, 0, 0],
+ "groups": [
+ {
+ "name": "level 1"
+ }
+ ]
+ },
+ {
+ "translate": [0, -4.5, 0],
+ "rotate": [0, 0, 1, 180],
+ "groups": [
+ {
+ "name": "level 1"
+ }
+ ]
+ },
+ {
+ "translate": [0, 0, -4.5],
+ "rotate": [1, 0, 0, -90],
+ "groups": [
+ {
+ "name": "level 1"
+ }
+ ]
+ },
+ {
+ "translate": [0, 0, 4.5],
+ "rotate": [1, 0, 0, 90],
+ "groups": [
+ {
+ "name": "level 1"
+ }
+ ]
+ }
+ ]
+}
diff --git a/scenefiles/illuminate/optional/reflection/test_reflectiveness.json b/scenefiles/illuminate/optional/reflection/test_reflectiveness.json
new file mode 100644
index 0000000..358d50a
--- /dev/null
+++ b/scenefiles/illuminate/optional/reflection/test_reflectiveness.json
@@ -0,0 +1,77 @@
+{
+ "globalData": {
+ "ambientCoeff": 0.5,
+ "diffuseCoeff": 0.5,
+ "specularCoeff": 0.5,
+ "transparentCoeff": 1
+ },
+ "cameraData": {
+ "position": [5, 1, 5],
+ "up": [0, 1, 0],
+ "heightAngle": 30,
+ "look": [-1, 0, -1]
+ },
+ "groups": [
+ {
+ "name": "Lights",
+ "lights": [
+ {
+ "color": [1, 0, 0],
+ "type": "directional",
+ "direction": [0, -0.2, -1]
+ },
+ {
+ "color": [0, 1, 0],
+ "type": "directional",
+ "direction": [0, -0.2, 1]
+ },
+ {
+ "color": [0, 0, 1],
+ "type": "directional",
+ "direction": [-1, -0.2, 0]
+ },
+ {
+ "color": [0, 0, 1],
+ "type": "directional",
+ "direction": [1, -0.2, 0]
+ }
+ ]
+ },
+ {
+ "name": "Mirror",
+ "scale": [0.1, 3, 4],
+ "primitives": [
+ {
+ "type": "cube",
+ "reflective": [0.2, 0.2, 0.2],
+ "ambient": [0.68, 0.85, 0.9],
+ "diffuse": [0.8, 0.8, 0.8]
+ }
+ ]
+ },
+ {
+ "name": "Sphere",
+ "translate": [1.5, 0, -1.5],
+ "primitives": [
+ {
+ "type": "sphere",
+ "ambient": [1, 0, 0],
+ "diffuse": [0, 0, 0],
+ "shininess": 30,
+ "specular": [1, 1, 1]
+ }
+ ]
+ },
+ {
+ "name": "Table",
+ "translate": [0, -0.75, 0],
+ "scale": [10, 0.5, 10],
+ "primitives": [
+ {
+ "type": "cube",
+ "ambient": [0, 0.2, 0.13]
+ }
+ ]
+ }
+ ]
+}
diff --git a/scenefiles/illuminate/optional/texture_tests/directional_light_textured.json b/scenefiles/illuminate/optional/texture_tests/directional_light_textured.json
new file mode 100644
index 0000000..385dece
--- /dev/null
+++ b/scenefiles/illuminate/optional/texture_tests/directional_light_textured.json
@@ -0,0 +1,122 @@
+{
+ "name": "root",
+ "globalData": {
+ "ambientCoeff": 0.5,
+ "diffuseCoeff": 0.5,
+ "specularCoeff": 0.5,
+ "transparentCoeff": 0
+ },
+ "cameraData": {
+ "position": [-6.0, 4.0, 4.0],
+ "up": [0.0, 1.0, 0.0],
+ "focus": [0, 0, 0],
+ "heightAngle": 30.0
+ },
+ "groups": [
+ {
+ "lights": [
+ {
+ "type": "directional",
+ "color": [0.5, 0.5, 0.5],
+ "direction": [0.0, -1.0, 0.0]
+ }
+ ]
+ },
+ {
+ "lights": [
+ {
+ "type": "directional",
+ "color": [0.5, 0.5, 0.5],
+ "direction": [0.0, -1.0, -1.0]
+ }
+ ]
+ },
+ {
+ "lights": [
+ {
+ "type": "directional",
+ "color": [0.5, 0.5, 0.5],
+ "direction": [0.0, -1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "groups": [
+ {
+ "translate": [-0.65, 0.0, 0.65],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.8, 0.6, 0.6],
+ "specular": [1.0, 1.0, 1.0],
+ "shininess": 15.0,
+ "blend": 1.0,
+ "textureFile": "textures/breakfast.gif",
+ "textureU": 2.0,
+ "textureV": 2.0
+ }
+ ]
+ },
+ {
+ "translate": [-0.65, 0.0, -0.65],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [0.6, 0.6, 0.8],
+ "specular": [1.0, 1.0, 1.0],
+ "shininess": 15.0,
+ "blend": 1.0,
+ "textureFile": "textures/mandril.png",
+ "textureU": 2.0,
+ "textureV": 2.0
+ }
+ ]
+ },
+ {
+ "translate": [0.65, 0.0, -0.65],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [0.6, 0.8, 0.6],
+ "specular": [1.0, 1.0, 1.0],
+ "shininess": 15.0,
+ "blend": 1.0,
+ "textureFile": "textures/earth.png",
+ "textureU": 2.0,
+ "textureV": 2.0
+ }
+ ]
+ },
+ {
+ "translate": [0.65, 0.0, 0.65],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.7, 0.7, 0.7],
+ "specular": [1.0, 1.0, 1.0],
+ "shininess": 15.0,
+ "blend": 1.0,
+ "textureFile": "textures/cheese.png",
+ "textureU": 2.0,
+ "textureV": 2.0
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -0.6, 0.0],
+ "scale": [6.0, 0.1, 6.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.4, 0.8],
+ "blend": 1.0,
+ "textureFile": "textures/bark.png",
+ "textureU": 2.0,
+ "textureV": 2.0
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/scenefiles/illuminate/optional/texture_tests/texture_cyl3.json b/scenefiles/illuminate/optional/texture_tests/texture_cyl3.json
new file mode 100644
index 0000000..9361f37
--- /dev/null
+++ b/scenefiles/illuminate/optional/texture_tests/texture_cyl3.json
@@ -0,0 +1,67 @@
+{
+ "name": "root",
+ "globalData": {
+ "ambientCoeff": 0.5,
+ "diffuseCoeff": 0.5,
+ "specularCoeff": 0.5,
+ "transparentCoeff": 1
+ },
+ "cameraData": {
+ "position": [-4.0, 3.0, 3.0],
+ "up": [0.0, 1.0, 0.0],
+ "look": [4.0, -3.0, -3.0],
+ "heightAngle": 30.0
+ },
+ "groups": [
+ {
+ "lights": [
+ {
+ "type": "point",
+ "color": [0.5, 0.5, 0.5],
+ "attenuationCoeff": [1, 0, 0]
+ }
+ ],
+ "translate": [10, 10, 10]
+ },
+ {
+ "lights": [
+ {
+ "type": "point",
+ "color": [0.8, 0.4, 0.8],
+ "attenuationCoeff": [1, 0, 0]
+ }
+ ],
+ "translate": [-2, -2, 2]
+ },
+ {
+ "lights": [
+ {
+ "type": "point",
+ "color": [0.8, 0.4, 0.8],
+ "attenuationCoeff": [1, 0, 0]
+ }
+ ],
+ "translate": [4, 4, 4]
+ },
+ {
+ "groups": [
+ {
+ "translate": [0.0, 0.0, 0.0],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0],
+ "specular": [1.0, 1.0, 1.0],
+ "shininess": 30.0,
+ "reflective": [1.0, 1.0, 1.0],
+ "blend": 1.0,
+ "textureFile": "textures/mandril.png",
+ "textureU": 2.0,
+ "textureV": 2.0
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/scenefiles/illuminate/optional/textures/andyVanDam.jpg b/scenefiles/illuminate/optional/textures/andyVanDam.jpg
new file mode 100644
index 0000000..4bb0ebd
--- /dev/null
+++ b/scenefiles/illuminate/optional/textures/andyVanDam.jpg
Binary files differ
diff --git a/scenefiles/illuminate/optional/textures/bark.png b/scenefiles/illuminate/optional/textures/bark.png
new file mode 100644
index 0000000..d771e0f
--- /dev/null
+++ b/scenefiles/illuminate/optional/textures/bark.png
Binary files differ
diff --git a/scenefiles/illuminate/optional/textures/board.png b/scenefiles/illuminate/optional/textures/board.png
new file mode 100644
index 0000000..27278dc
--- /dev/null
+++ b/scenefiles/illuminate/optional/textures/board.png
Binary files differ
diff --git a/scenefiles/illuminate/optional/textures/breakfast.gif b/scenefiles/illuminate/optional/textures/breakfast.gif
new file mode 100644
index 0000000..880724d
--- /dev/null
+++ b/scenefiles/illuminate/optional/textures/breakfast.gif
Binary files differ
diff --git a/scenefiles/illuminate/optional/textures/check.png b/scenefiles/illuminate/optional/textures/check.png
new file mode 100644
index 0000000..96b2d3a
--- /dev/null
+++ b/scenefiles/illuminate/optional/textures/check.png
Binary files differ
diff --git a/scenefiles/illuminate/optional/textures/cheese.png b/scenefiles/illuminate/optional/textures/cheese.png
new file mode 100644
index 0000000..84d78f5
--- /dev/null
+++ b/scenefiles/illuminate/optional/textures/cheese.png
Binary files differ
diff --git a/scenefiles/illuminate/optional/textures/earth.png b/scenefiles/illuminate/optional/textures/earth.png
new file mode 100644
index 0000000..3300378
--- /dev/null
+++ b/scenefiles/illuminate/optional/textures/earth.png
Binary files differ
diff --git a/scenefiles/illuminate/optional/textures/liqmtl.png b/scenefiles/illuminate/optional/textures/liqmtl.png
new file mode 100644
index 0000000..ea27109
--- /dev/null
+++ b/scenefiles/illuminate/optional/textures/liqmtl.png
Binary files differ
diff --git a/scenefiles/illuminate/optional/textures/mandril.png b/scenefiles/illuminate/optional/textures/mandril.png
new file mode 100644
index 0000000..3fbe573
--- /dev/null
+++ b/scenefiles/illuminate/optional/textures/mandril.png
Binary files differ
diff --git a/scenefiles/illuminate/optional/textures/marsTexture.png b/scenefiles/illuminate/optional/textures/marsTexture.png
new file mode 100644
index 0000000..35f842a
--- /dev/null
+++ b/scenefiles/illuminate/optional/textures/marsTexture.png
Binary files differ
diff --git a/scenefiles/illuminate/optional/textures/topleft.png b/scenefiles/illuminate/optional/textures/topleft.png
new file mode 100644
index 0000000..6e46914
--- /dev/null
+++ b/scenefiles/illuminate/optional/textures/topleft.png
Binary files differ
diff --git a/scenefiles/illuminate/optional_outputs/fun/chess.png b/scenefiles/illuminate/optional_outputs/fun/chess.png
new file mode 100644
index 0000000..e34e255
--- /dev/null
+++ b/scenefiles/illuminate/optional_outputs/fun/chess.png
Binary files differ
diff --git a/scenefiles/illuminate/optional_outputs/recursive_spheres/recursive_sphere_2.png b/scenefiles/illuminate/optional_outputs/recursive_spheres/recursive_sphere_2.png
new file mode 100644
index 0000000..07b8126
--- /dev/null
+++ b/scenefiles/illuminate/optional_outputs/recursive_spheres/recursive_sphere_2.png
Binary files differ
diff --git a/scenefiles/illuminate/optional_outputs/recursive_spheres/recursive_sphere_3.png b/scenefiles/illuminate/optional_outputs/recursive_spheres/recursive_sphere_3.png
new file mode 100644
index 0000000..258eb00
--- /dev/null
+++ b/scenefiles/illuminate/optional_outputs/recursive_spheres/recursive_sphere_3.png
Binary files differ
diff --git a/scenefiles/illuminate/optional_outputs/recursive_spheres/recursive_sphere_4.png b/scenefiles/illuminate/optional_outputs/recursive_spheres/recursive_sphere_4.png
new file mode 100644
index 0000000..96679fe
--- /dev/null
+++ b/scenefiles/illuminate/optional_outputs/recursive_spheres/recursive_sphere_4.png
Binary files differ
diff --git a/scenefiles/illuminate/optional_outputs/reflection/test_reflectiveness.png b/scenefiles/illuminate/optional_outputs/reflection/test_reflectiveness.png
new file mode 100644
index 0000000..9871c18
--- /dev/null
+++ b/scenefiles/illuminate/optional_outputs/reflection/test_reflectiveness.png
Binary files differ
diff --git a/scenefiles/illuminate/optional_outputs/required_without_shadows/point_light_1_no-shadows.png b/scenefiles/illuminate/optional_outputs/required_without_shadows/point_light_1_no-shadows.png
new file mode 100644
index 0000000..fe0b917
--- /dev/null
+++ b/scenefiles/illuminate/optional_outputs/required_without_shadows/point_light_1_no-shadows.png
Binary files differ
diff --git a/scenefiles/illuminate/optional_outputs/required_without_shadows/point_light_2_no-shadows.png b/scenefiles/illuminate/optional_outputs/required_without_shadows/point_light_2_no-shadows.png
new file mode 100644
index 0000000..29f25db
--- /dev/null
+++ b/scenefiles/illuminate/optional_outputs/required_without_shadows/point_light_2_no-shadows.png
Binary files differ
diff --git a/scenefiles/illuminate/optional_outputs/required_without_shadows/reflections_basic_no-shadows.png b/scenefiles/illuminate/optional_outputs/required_without_shadows/reflections_basic_no-shadows.png
new file mode 100644
index 0000000..d97e587
--- /dev/null
+++ b/scenefiles/illuminate/optional_outputs/required_without_shadows/reflections_basic_no-shadows.png
Binary files differ
diff --git a/scenefiles/illuminate/optional_outputs/required_without_shadows/spot_light_1_no-shadows.png b/scenefiles/illuminate/optional_outputs/required_without_shadows/spot_light_1_no-shadows.png
new file mode 100644
index 0000000..53ae1bb
--- /dev/null
+++ b/scenefiles/illuminate/optional_outputs/required_without_shadows/spot_light_1_no-shadows.png
Binary files differ
diff --git a/scenefiles/illuminate/optional_outputs/required_without_shadows/spot_light_2_no-shadows.png b/scenefiles/illuminate/optional_outputs/required_without_shadows/spot_light_2_no-shadows.png
new file mode 100644
index 0000000..38c8338
--- /dev/null
+++ b/scenefiles/illuminate/optional_outputs/required_without_shadows/spot_light_2_no-shadows.png
Binary files differ
diff --git a/scenefiles/illuminate/optional_outputs/texture_tests/directional_light_textured.png b/scenefiles/illuminate/optional_outputs/texture_tests/directional_light_textured.png
new file mode 100644
index 0000000..2b6f92e
--- /dev/null
+++ b/scenefiles/illuminate/optional_outputs/texture_tests/directional_light_textured.png
Binary files differ
diff --git a/scenefiles/illuminate/optional_outputs/texture_tests/texture_cyl3.png b/scenefiles/illuminate/optional_outputs/texture_tests/texture_cyl3.png
new file mode 100644
index 0000000..40b1742
--- /dev/null
+++ b/scenefiles/illuminate/optional_outputs/texture_tests/texture_cyl3.png
Binary files differ
diff --git a/scenefiles/illuminate/required/point_light/point_light_1.json b/scenefiles/illuminate/required/point_light/point_light_1.json
new file mode 100644
index 0000000..f700509
--- /dev/null
+++ b/scenefiles/illuminate/required/point_light/point_light_1.json
@@ -0,0 +1,85 @@
+{
+ "name": "root",
+ "globalData": {
+ "ambientCoeff": 0.5,
+ "diffuseCoeff": 0.5,
+ "specularCoeff": 0.5,
+ "transparentCoeff": 0
+ },
+ "cameraData": {
+ "position": [-6.0, 4.0, 4.0],
+ "up": [0.0, 1.0, 0.0],
+ "focus": [0, 0, 0],
+ "heightAngle": 30.0
+ },
+ "groups": [
+ {
+ "translate": [0, 3, 0],
+ "lights": [
+ {
+ "type": "point",
+ "color": [1.0, 1.0, 1.0],
+ "attenuationCoeff": [0.8, 0.2, 0.0]
+ }
+ ]
+ },
+ {
+ "groups": [
+ {
+ "translate": [-0.65, 0.0, 0.65],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.8, 0.6, 0.6],
+ "specular": [1.0, 1.0, 1.0],
+ "shininess": 15.0
+ }
+ ]
+ },
+ {
+ "translate": [-0.65, 0.0, -0.65],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [0.6, 0.6, 0.8],
+ "specular": [1.0, 1.0, 1.0],
+ "shininess": 15.0
+ }
+ ]
+ },
+ {
+ "translate": [0.65, 0.0, -0.65],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [0.6, 0.8, 0.6],
+ "specular": [1.0, 1.0, 1.0],
+ "shininess": 15.0
+ }
+ ]
+ },
+ {
+ "translate": [0.65, 0.0, 0.65],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.7, 0.7, 0.7],
+ "specular": [1.0, 1.0, 1.0],
+ "shininess": 15.0
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -0.6, 0.0],
+ "scale": [6.0, 0.1, 6.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.4, 0.8]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/scenefiles/illuminate/required/point_light/point_light_2.json b/scenefiles/illuminate/required/point_light/point_light_2.json
new file mode 100644
index 0000000..03d6327
--- /dev/null
+++ b/scenefiles/illuminate/required/point_light/point_light_2.json
@@ -0,0 +1,105 @@
+{
+ "name": "root",
+ "globalData": {
+ "ambientCoeff": 0.5,
+ "diffuseCoeff": 0.5,
+ "specularCoeff": 0.5,
+ "transparentCoeff": 0
+ },
+ "cameraData": {
+ "position": [-6.0, 4.0, 4.0],
+ "up": [0.0, 1.0, 0.0],
+ "focus": [0, 0, 0],
+ "heightAngle": 30.0
+ },
+ "groups": [
+ {
+ "translate": [0.0, 3.0, 0.0],
+ "lights": [
+ {
+ "type": "point",
+ "color": [0.9, 0.2, 0.2],
+ "attenuationCoeff": [0.8, 0.2, 0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 2.0, 1.0],
+ "lights": [
+ {
+ "type": "point",
+ "color": [0.2, 0.9, 0.2],
+ "attenuationCoeff": [1, 0, 0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 2.0, -1.0],
+ "lights": [
+ {
+ "type": "point",
+ "color": [0.2, 0.2, 0.9],
+ "attenuationCoeff": [1, 0, 0]
+ }
+ ]
+ },
+ {
+ "groups": [
+ {
+ "translate": [-0.65, 0.0, 0.65],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.8, 0.6, 0.6],
+ "specular": [1.0, 1.0, 1.0],
+ "shininess": 15.0
+ }
+ ]
+ },
+ {
+ "translate": [-0.65, 0.0, -0.65],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [0.6, 0.6, 0.8],
+ "specular": [1.0, 1.0, 1.0],
+ "shininess": 15.0
+ }
+ ]
+ },
+ {
+ "translate": [0.65, 0.0, -0.65],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [0.6, 0.8, 0.6],
+ "specular": [1.0, 1.0, 1.0],
+ "shininess": 15.0
+ }
+ ]
+ },
+ {
+ "translate": [0.65, 0.0, 0.65],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.7, 0.7, 0.7],
+ "specular": [1.0, 1.0, 1.0],
+ "shininess": 15.0
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -0.6, 0.0],
+ "scale": [6.0, 0.1, 6.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.4, 0.8]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/scenefiles/illuminate/required/reflection/reflections_basic.json b/scenefiles/illuminate/required/reflection/reflections_basic.json
new file mode 100644
index 0000000..e789e3b
--- /dev/null
+++ b/scenefiles/illuminate/required/reflection/reflections_basic.json
@@ -0,0 +1,77 @@
+{
+ "globalData": {
+ "ambientCoeff": 0.5,
+ "diffuseCoeff": 0.5,
+ "specularCoeff": 0.5,
+ "transparentCoeff": 1
+ },
+ "cameraData": {
+ "position": [5, 1, 5],
+ "up": [0, 1, 0],
+ "heightAngle": 30,
+ "look": [-1, 0, -1]
+ },
+ "groups": [
+ {
+ "name": "Lights",
+ "lights": [
+ {
+ "color": [1, 0, 0],
+ "type": "directional",
+ "direction": [0, -0.2, -1]
+ },
+ {
+ "color": [0, 1, 0],
+ "type": "directional",
+ "direction": [0, -0.2, 1]
+ },
+ {
+ "color": [0, 0, 1],
+ "type": "directional",
+ "direction": [-1, -0.2, 0]
+ },
+ {
+ "color": [0, 0, 1],
+ "type": "directional",
+ "direction": [1, -0.2, 0]
+ }
+ ]
+ },
+ {
+ "name": "Mirror",
+ "scale": [0.1, 3, 4],
+ "primitives": [
+ {
+ "type": "cube",
+ "reflective": [0.9, 0.9, 0.9],
+ "ambient": [0.68, 0.85, 0.9],
+ "diffuse": [0.8, 0.8, 0.8]
+ }
+ ]
+ },
+ {
+ "name": "Sphere",
+ "translate": [1.5, 0, -1.5],
+ "primitives": [
+ {
+ "type": "sphere",
+ "ambient": [1, 0, 0],
+ "diffuse": [0, 0, 0],
+ "shininess": 30,
+ "specular": [1, 1, 1]
+ }
+ ]
+ },
+ {
+ "name": "Table",
+ "translate": [0, -0.75, 0],
+ "scale": [10, 0.5, 10],
+ "primitives": [
+ {
+ "type": "cube",
+ "ambient": [0, 0.2, 0.13]
+ }
+ ]
+ }
+ ]
+}
diff --git a/scenefiles/illuminate/required/reflection/reflections_complex.json b/scenefiles/illuminate/required/reflection/reflections_complex.json
new file mode 100644
index 0000000..d63563c
--- /dev/null
+++ b/scenefiles/illuminate/required/reflection/reflections_complex.json
@@ -0,0 +1,119 @@
+{
+ "globalData": {
+ "ambientCoeff": 0.5,
+ "diffuseCoeff": 0.5,
+ "specularCoeff": 0.5,
+ "transparentCoeff": 1
+ },
+ "cameraData": {
+ "position": [5, 1, 5],
+ "up": [0, 1, 0],
+ "heightAngle": 30,
+ "look": [-1, 0, -1]
+ },
+ "groups": [
+ {
+ "name": "Lights",
+ "lights": [
+ {
+ "color": [1, 0, 0],
+ "type": "directional",
+ "direction": [0, -0.2, -1]
+ },
+ {
+ "color": [0, 1, 0],
+ "type": "directional",
+ "direction": [1, -0.2, 1]
+ },
+ {
+ "color": [0, 0, 1],
+ "type": "directional",
+ "direction": [-1, -0.2, 0]
+ },
+ {
+ "color": [0, 0, 1],
+ "type": "directional",
+ "direction": [1, -0.2, -1]
+ },
+ {
+ "color": [0, 0, 1],
+ "type": "directional",
+ "direction": [-1, -0.2, 1]
+ }
+ ]
+ },
+ {
+ "name": "Mirror 1",
+ "translate": [-3, 1, 0],
+ "scale": [0.1, 3, 4],
+ "primitives": [
+ {
+ "type": "cube",
+ "reflective": [0.9, 0.9, 0.9],
+ "ambient": [0.68, 0.85, 0.9],
+ "diffuse": [0.8, 0.8, 0.8]
+ }
+ ]
+ },
+ {
+ "name": "Mirror 2",
+ "translate": [0, 1, -3],
+ "scale": [4, 3, 0.1],
+ "primitives": [
+ {
+ "type": "cube",
+ "reflective": [0.9, 0.9, 0.9],
+ "ambient": [0.68, 0.85, 0.9],
+ "diffuse": [0.8, 0.8, 0.8]
+ }
+ ]
+ },
+ {
+ "name": "Table",
+ "translate": [0, -1, 0],
+ "scale": [10, 0.5, 10],
+ "primitives": [
+ {
+ "type": "cube",
+ "ambient": [0, 0.2, 0.13]
+ }
+ ]
+ },
+ {
+ "name": "Sphere 1",
+ "translate": [1, 0, -1],
+ "primitives": [
+ {
+ "type": "sphere",
+ "ambient": [0, 1, 0],
+ "reflective": [0.6, 0.6, 0.6],
+ "shininess": 30
+ }
+ ]
+ },
+ {
+ "name": "Sphere 2",
+ "translate": [-1, 0, -1],
+ "primitives": [
+ {
+ "type": "sphere",
+ "ambient": [1, 0, 0],
+ "reflective": [0.6, 0.6, 0.6],
+ "shininess": 30
+ }
+ ]
+ },
+ {
+ "name": "Sphere 3",
+ "translate": [-1, 0, 1],
+ "primitives": [
+ {
+ "type": "sphere",
+ "ambient": [0, 0, 1],
+ "reflective": [0.6, 0.6, 0.6],
+ "shininess": 30
+ }
+ ]
+ }
+ ]
+}
diff --git a/scenefiles/illuminate/required/shadow/shadow_special_case.json b/scenefiles/illuminate/required/shadow/shadow_special_case.json
new file mode 100644
index 0000000..4fb532f
--- /dev/null
+++ b/scenefiles/illuminate/required/shadow/shadow_special_case.json
@@ -0,0 +1,49 @@
+{
+ "name": "root",
+ "globalData": {
+ "ambientCoeff": 0.5,
+ "diffuseCoeff": 0.5,
+ "specularCoeff": 0.5,
+ "transparentCoeff": 0
+ },
+ "cameraData": {
+ "position": [0.0, 0.0, 6.0],
+ "up": [0.0, 1.0, 0.0],
+ "focus": [0, 0, 0],
+ "heightAngle": 40.0
+ },
+ "groups": [
+ {
+ "translate": [0.0, 0.0, 0.0],
+ "lights": [
+ {
+ "type": "point",
+ "color": [1.0, 1.0, 1.0],
+ "attenuationCoeff": [1.0, 0.0, 0.0]
+ }
+ ]
+ },
+ {
+ "groups": [
+ {
+ "translate": [0.0, 2.0, 0.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -2.0, 0.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/scenefiles/illuminate/required/shadow/shadow_test.json b/scenefiles/illuminate/required/shadow/shadow_test.json
new file mode 100644
index 0000000..efd6766
--- /dev/null
+++ b/scenefiles/illuminate/required/shadow/shadow_test.json
@@ -0,0 +1,147 @@
+{
+ "name": "root",
+ "globalData": {
+ "ambientCoeff": 0.5,
+ "diffuseCoeff": 0.5,
+ "specularCoeff": 0.5,
+ "transparentCoeff": 0
+ },
+ "cameraData": {
+ "position": [5.0, 5.0, 5.0],
+ "up": [0.0, 1.0, 0.0],
+ "focus": [0, 0, 0],
+ "heightAngle": 30.0
+ },
+ "groups": [
+ {
+ "translate": [-2.0, 6.0, 6.0],
+ "lights": [
+ {
+ "type": "point",
+ "color": [0.3, 0.0, 0.0],
+ "attenuationCoeff": [1.0, 0.0, 0.0]
+ }
+ ]
+ },
+ {
+ "translate": [-1.0, 6.0, 5.0],
+ "lights": [
+ {
+ "type": "point",
+ "color": [0.0, 0.3, 0.0],
+ "attenuationCoeff": [1.0, 0.0, 0.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 6.0, 4.0],
+ "lights": [
+ {
+ "type": "point",
+ "color": [0.0, 0.0, 0.3],
+ "attenuationCoeff": [1.0, 0.0, 0.0]
+ }
+ ]
+ },
+ {
+ "translate": [1.0, 6.0, 3.0],
+ "lights": [
+ {
+ "type": "point",
+ "color": [0.3, 0.3, 0.0],
+ "attenuationCoeff": [1.0, 0.0, 0.0]
+ }
+ ]
+ },
+ {
+ "translate": [2.0, 6.0, 2.0],
+ "lights": [
+ {
+ "type": "point",
+ "color": [0.3, 0.0, 0.3],
+ "attenuationCoeff": [1.0, 0.0, 0.0]
+ }
+ ]
+ },
+ {
+ "lights": [
+ {
+ "type": "directional",
+ "color": [0.0, 0.3, 0.2],
+ "direction": [0.5, -0.3, -1.0]
+ }
+ ]
+ },
+ {
+ "lights": [
+ {
+ "type": "directional",
+ "color": [0.3, 0.3, 0.5],
+ "direction": [0.2, -0.2, -1.0]
+ }
+ ]
+ },
+ {
+ "lights": [
+ {
+ "type": "directional",
+ "color": [0.3, 0.4, 0.3],
+ "direction": [0.0, -0.15, -1.0]
+ }
+ ]
+ },
+ {
+ "lights": [
+ {
+ "type": "directional",
+ "color": [0.2, 0.2, 0.2],
+ "direction": [-1.0, -0.0, 0.3]
+ }
+ ]
+ },
+ {
+ "groups": [
+ {
+ "translate": [0.0, -0.6, 0.0],
+ "scale": [8.0, 0.1, 8.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.4, 0.4, 0.4],
+ "blend": 1.0,
+ "textureFile": "textures/cheese.png",
+ "textureU": 1.0,
+ "textureV": 1.0
+ }
+ ]
+ },
+ {
+ "rotate": [1.0, 1.0, 1.0, 60.0],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [0.0, 0.0, 0.0],
+ "specular": [1.0, 1.0, 1.0],
+ "shininess": 30.0,
+ "blend": 0.3,
+ "textureFile": "textures/liqmtl.png",
+ "textureU": 1.0,
+ "textureV": 1.0
+ }
+ ]
+ },
+ {
+ "translate": [-1.0, 1.0, -0.2],
+ "scale": [0.1, 3.0, 4.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.8, 0.6, 0.6],
+ "reflective": [1.0, 1.0, 1.0]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/scenefiles/illuminate/required/shadow/simple_shadow.json b/scenefiles/illuminate/required/shadow/simple_shadow.json
new file mode 100644
index 0000000..88d5fe0
--- /dev/null
+++ b/scenefiles/illuminate/required/shadow/simple_shadow.json
@@ -0,0 +1,85 @@
+{
+ "name": "root",
+ "globalData": {
+ "ambientCoeff": 0.5,
+ "diffuseCoeff": 0.5,
+ "specularCoeff": 0.5,
+ "transparentCoeff": 0
+ },
+ "cameraData": {
+ "position": [-6.0, 4.0, 4.0],
+ "up": [0.0, 1.0, 0.0],
+ "focus": [0, 0, 0],
+ "heightAngle": 30.0
+ },
+ "groups": [
+ {
+ "translate": [0.0, 6.0, 0.0],
+ "lights": [
+ {
+ "type": "point",
+ "color": [1.0, 1.0, 1.0],
+ "attenuationCoeff": [0, 0, 0]
+ }
+ ]
+ },
+ {
+ "groups": [
+ {
+ "translate": [-0.65, 0.0, 0.65],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.8, 0.6, 0.6],
+ "specular": [1.0, 1.0, 1.0],
+ "shininess": 15.0
+ }
+ ]
+ },
+ {
+ "translate": [-0.65, 0.0, -0.65],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [0.6, 0.6, 0.8],
+ "specular": [1.0, 1.0, 1.0],
+ "shininess": 15.0
+ }
+ ]
+ },
+ {
+ "translate": [0.65, 0.0, -0.65],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [0.6, 0.8, 0.6],
+ "specular": [1.0, 1.0, 1.0],
+ "shininess": 15.0
+ }
+ ]
+ },
+ {
+ "translate": [0.65, 0.0, 0.65],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.7, 0.7, 0.7],
+ "specular": [1.0, 1.0, 1.0],
+ "shininess": 15.0
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -0.6, 0.0],
+ "scale": [6.0, 0.1, 6.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.4, 0.8]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/scenefiles/illuminate/required/spot_light/spot_light_1.json b/scenefiles/illuminate/required/spot_light/spot_light_1.json
new file mode 100644
index 0000000..dba74b0
--- /dev/null
+++ b/scenefiles/illuminate/required/spot_light/spot_light_1.json
@@ -0,0 +1,88 @@
+{
+ "name": "root",
+ "globalData": {
+ "ambientCoeff": 0.5,
+ "diffuseCoeff": 0.5,
+ "specularCoeff": 0.5,
+ "transparentCoeff": 1
+ },
+ "cameraData": {
+ "position": [-6.0, 4.0, 4.0],
+ "up": [0.0, 1.0, 0.0],
+ "focus": [0, 0, 0],
+ "heightAngle": 30.0
+ },
+ "groups": [
+ {
+ "translate": [0.0, 4.0, 0.0],
+ "lights": [
+ {
+ "type": "spot",
+ "color": [1.0, 1.0, 1.0],
+ "direction": [0.0, -1.0, 0.0],
+ "angle": 30.0,
+ "penumbra": 20.0,
+ "attenuationCoeff": [0.8, 0.05, 0.0]
+ }
+ ]
+ },
+ {
+ "groups": [
+ {
+ "translate": [-0.65, 0.0, 0.65],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.8, 0.6, 0.6],
+ "specular": [1.0, 1.0, 1.0],
+ "shininess": 15.0
+ }
+ ]
+ },
+ {
+ "translate": [-0.65, 0.0, -0.65],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [0.6, 0.6, 0.8],
+ "specular": [1.0, 1.0, 1.0],
+ "shininess": 15.0
+ }
+ ]
+ },
+ {
+ "translate": [0.65, 0.0, -0.65],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [0.6, 0.8, 0.6],
+ "specular": [1.0, 1.0, 1.0],
+ "shininess": 15.0
+ }
+ ]
+ },
+ {
+ "translate": [0.65, 0.0, 0.65],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.7, 0.7, 0.7],
+ "specular": [1.0, 1.0, 1.0],
+ "shininess": 15.0
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -0.6, 0.0],
+ "scale": [6.0, 0.1, 6.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.4, 0.8]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/scenefiles/illuminate/required/spot_light/spot_light_2.json b/scenefiles/illuminate/required/spot_light/spot_light_2.json
new file mode 100644
index 0000000..9272bb5
--- /dev/null
+++ b/scenefiles/illuminate/required/spot_light/spot_light_2.json
@@ -0,0 +1,114 @@
+{
+ "name": "root",
+ "globalData": {
+ "ambientCoeff": 0.5,
+ "diffuseCoeff": 0.5,
+ "specularCoeff": 0.5,
+ "transparentCoeff": 1
+ },
+ "cameraData": {
+ "position": [-6.0, 4.0, 4.0],
+ "up": [0.0, 1.0, 0.0],
+ "focus": [0, 0, 0],
+ "heightAngle": 30.0
+ },
+ "groups": [
+ {
+ "translate": [0.0, 4.0, 0.0],
+ "lights": [
+ {
+ "type": "spot",
+ "color": [0.9, 0.2, 0.2],
+ "direction": [0.0, -1.0, 0.0],
+ "angle": 20.0,
+ "penumbra": 10.0,
+ "attenuationCoeff": [0.8, 0.05, 0.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 4.0, 3.0],
+ "lights": [
+ {
+ "type": "spot",
+ "color": [0.2, 0.9, 0.2],
+ "direction": [0.0, -1.0, -1.0],
+ "angle": 20.0,
+ "penumbra": 10.0,
+ "attenuationCoeff": [0.8, 0.05, 0.0]
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 4.0, -3.0],
+ "lights": [
+ {
+ "type": "spot",
+ "color": [0.2, 0.2, 0.9],
+ "direction": [0.0, -1.0, 1.0],
+ "angle": 20.0,
+ "penumbra": 10.0,
+ "attenuationCoeff": [0.8, 0.05, 0.0]
+ }
+ ]
+ },
+ {
+ "groups": [
+ {
+ "translate": [-0.65, 0.0, 0.65],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [0.8, 0.6, 0.6],
+ "specular": [1.0, 1.0, 1.0],
+ "shininess": 15.0
+ }
+ ]
+ },
+ {
+ "translate": [-0.65, 0.0, -0.65],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [0.6, 0.6, 0.8],
+ "specular": [1.0, 1.0, 1.0],
+ "shininess": 15.0
+ }
+ ]
+ },
+ {
+ "translate": [0.65, 0.0, -0.65],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [0.6, 0.8, 0.6],
+ "specular": [1.0, 1.0, 1.0],
+ "shininess": 15.0
+ }
+ ]
+ },
+ {
+ "translate": [0.65, 0.0, 0.65],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.7, 0.7, 0.7],
+ "specular": [1.0, 1.0, 1.0],
+ "shininess": 15.0
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -0.6, 0.0],
+ "scale": [6.0, 0.1, 6.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [0.1, 0.4, 0.8]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/scenefiles/illuminate/required/texture_tests/texture_cone.json b/scenefiles/illuminate/required/texture_tests/texture_cone.json
new file mode 100644
index 0000000..b7eb154
--- /dev/null
+++ b/scenefiles/illuminate/required/texture_tests/texture_cone.json
@@ -0,0 +1,77 @@
+{
+ "name": "root",
+ "globalData": {
+ "ambientCoeff": 0.5,
+ "diffuseCoeff": 0.5,
+ "specularCoeff": 0.5,
+ "transparentCoeff": 1
+ },
+ "cameraData": {
+ "position": [-4.0, 2.0, 0.0],
+ "up": [0.0, 1.0, 0.0],
+ "look": [4.0, -2.0, 0.0],
+ "heightAngle": 30.0
+ },
+ "groups": [
+ {
+ "lights": [
+ {
+ "type": "point",
+ "color": [0.5, 0.5, 0.5],
+ "attenuationCoeff": [1, 0, 0]
+ }
+ ],
+ "translate": [10, 10, 10]
+ },
+ {
+ "lights": [
+ {
+ "type": "point",
+ "color": [0.8, 0.4, 0.8],
+ "attenuationCoeff": [1, 0, 0]
+ }
+ ],
+ "translate": [-2, -2, 2]
+ },
+ {
+ "lights": [
+ {
+ "type": "point",
+ "color": [0.8, 0.4, 0.8],
+ "attenuationCoeff": [1, 0, 0]
+ }
+ ],
+ "translate": [4, 4, 4]
+ },
+ {
+ "lights": [
+ {
+ "type": "point",
+ "color": [0.8, 0.4, 0.8],
+ "attenuationCoeff": [1, 0, 0]
+ }
+ ],
+ "translate": [-6, -6, -6]
+ },
+ {
+ "groups": [
+ {
+ "rotate": [0, 0, 1, -45],
+ "primitives": [
+ {
+ "type": "cone",
+ "diffuse": [1.0, 1.0, 1.0],
+ "specular": [1.0, 1.0, 1.0],
+ "shininess": 30.0,
+ "reflective": [0.9, 0.9, 0.9],
+ "blend": 1.0,
+ "textureFile": "textures/board.png",
+ "textureU": 2.0,
+ "textureV": 2.0
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/scenefiles/illuminate/required/texture_tests/texture_cone2.json b/scenefiles/illuminate/required/texture_tests/texture_cone2.json
new file mode 100644
index 0000000..fe984b9
--- /dev/null
+++ b/scenefiles/illuminate/required/texture_tests/texture_cone2.json
@@ -0,0 +1,127 @@
+{
+ "name": "root",
+ "globalData": {
+ "ambientCoeff": 0.5,
+ "diffuseCoeff": 0.5,
+ "specularCoeff": 0.5,
+ "transparentCoeff": 1
+ },
+ "cameraData": {
+ "position": [0.0, 0.0, 6.0],
+ "up": [0.0, 1.0, 0.0],
+ "focus": [0, 0, 0],
+ "heightAngle": 40.0
+ },
+ "groups": [
+ {
+ "translate": [0.0, 0.0, 4.0],
+ "lights": [
+ {
+ "type": "point",
+ "color": [1.0, 1.0, 1.0],
+ "attenuationCoeff": [1.0, 0.0, 0.0]
+ }
+ ]
+ },
+ {
+ "groups": [
+ {
+ "translate": [-1.2, 0.6, 0.0],
+ "rotate": [0.0, 1.0, 0.0, 0.0],
+ "primitives": [
+ {
+ "type": "cone",
+ "ambient": [0.3, 0.0, 0.0],
+ "specular": [0.0, 0.0, 0.0],
+ "reflective": [0.0, 0.0, 0.0],
+ "blend": 1.0,
+ "textureFile": "textures/topleft.png",
+ "textureU": 1.0,
+ "textureV": 1.0
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.6, 0.0],
+ "rotate": [0.0, 1.0, 0.0, 90.0],
+ "primitives": [
+ {
+ "type": "cone",
+ "ambient": [0.3, 0.0, 0.0],
+ "specular": [0.0, 0.0, 0.0],
+ "reflective": [0.0, 0.0, 0.0],
+ "blend": 1.0,
+ "textureFile": "textures/topleft.png",
+ "textureU": 1.0,
+ "textureV": 1.0
+ }
+ ]
+ },
+ {
+ "translate": [1.2, 0.6, 0.0],
+ "rotate": [0.0, 1.0, 0.0, 180.0],
+ "primitives": [
+ {
+ "type": "cone",
+ "ambient": [0.3, 0.0, 0.0],
+ "specular": [0.0, 0.0, 0.0],
+ "reflective": [0.0, 0.0, 0.0],
+ "blend": 1.0,
+ "textureFile": "textures/topleft.png",
+ "textureU": 1.0,
+ "textureV": 1.0
+ }
+ ]
+ },
+ {
+ "translate": [-1.2, -0.6, 0.0],
+ "rotate": [0.0, 1.0, 0.0, 270.0],
+ "primitives": [
+ {
+ "type": "cone",
+ "ambient": [0.3, 0.0, 0.0],
+ "specular": [0.0, 0.0, 0.0],
+ "reflective": [0.0, 0.0, 0.0],
+ "blend": 1.0,
+ "textureFile": "textures/topleft.png",
+ "textureU": 1.0,
+ "textureV": 1.0
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -0.6, 0.0],
+ "rotate": [1.0, 0.0, 0.0, 90.0],
+ "primitives": [
+ {
+ "type": "cone",
+ "ambient": [0.3, 0.0, 0.0],
+ "specular": [0.0, 0.0, 0.0],
+ "reflective": [0.0, 0.0, 0.0],
+ "blend": 1.0,
+ "textureFile": "textures/topleft.png",
+ "textureU": 1.0,
+ "textureV": 1.0
+ }
+ ]
+ },
+ {
+ "translate": [1.2, -0.6, 0.0],
+ "rotate": [1.0, 0.0, 0.0, -90.0],
+ "primitives": [
+ {
+ "type": "cone",
+ "ambient": [0.3, 0.0, 0.0],
+ "specular": [0.0, 0.0, 0.0],
+ "reflective": [0.0, 0.0, 0.0],
+ "blend": 1.0,
+ "textureFile": "textures/topleft.png",
+ "textureU": 1.0,
+ "textureV": 1.0
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/scenefiles/illuminate/required/texture_tests/texture_cube.json b/scenefiles/illuminate/required/texture_tests/texture_cube.json
new file mode 100644
index 0000000..30ccac3
--- /dev/null
+++ b/scenefiles/illuminate/required/texture_tests/texture_cube.json
@@ -0,0 +1,67 @@
+{
+ "name": "root",
+ "globalData": {
+ "ambientCoeff": 0.5,
+ "diffuseCoeff": 0.5,
+ "specularCoeff": 0.5,
+ "transparentCoeff": 1
+ },
+ "cameraData": {
+ "position": [-4.0, 3.0, 3.0],
+ "up": [0.0, 1.0, 0.0],
+ "look": [4.0, -3.0, -3.0],
+ "heightAngle": 30.0
+ },
+ "groups": [
+ {
+ "lights": [
+ {
+ "type": "point",
+ "color": [0.5, 0.5, 0.5],
+ "attenuationCoeff": [1, 0, 0]
+ }
+ ],
+ "translate": [10, 10, 10]
+ },
+ {
+ "lights": [
+ {
+ "type": "point",
+ "color": [0.8, 0.4, 0.8],
+ "attenuationCoeff": [1, 0, 0]
+ }
+ ],
+ "translate": [-2, -2, 2]
+ },
+ {
+ "lights": [
+ {
+ "type": "point",
+ "color": [0.8, 0.4, 0.8],
+ "attenuationCoeff": [1, 0, 0]
+ }
+ ],
+ "translate": [4, 4, 4]
+ },
+ {
+ "groups": [
+ {
+ "translate": [0.0, 0.0, 0.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "diffuse": [1.0, 1.0, 1.0],
+ "specular": [1.0, 1.0, 1.0],
+ "shininess": 30.0,
+ "reflective": [1.0, 1.0, 1.0],
+ "blend": 1.0,
+ "textureFile": "textures/board.png",
+ "textureU": 2.0,
+ "textureV": 2.0
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/scenefiles/illuminate/required/texture_tests/texture_cube2.json b/scenefiles/illuminate/required/texture_tests/texture_cube2.json
new file mode 100644
index 0000000..61ae7d6
--- /dev/null
+++ b/scenefiles/illuminate/required/texture_tests/texture_cube2.json
@@ -0,0 +1,127 @@
+{
+ "name": "root",
+ "globalData": {
+ "ambientCoeff": 0.5,
+ "diffuseCoeff": 0.5,
+ "specularCoeff": 0.5,
+ "transparentCoeff": 1
+ },
+ "cameraData": {
+ "position": [0.0, 0.0, 6.0],
+ "up": [0.0, 1.0, 0.0],
+ "focus": [0, 0, 0],
+ "heightAngle": 40.0
+ },
+ "groups": [
+ {
+ "lights": [
+ {
+ "type": "point",
+ "color": [1.0, 1.0, 1.0],
+ "attenuationCoeff": [1, 0, 0]
+ }
+ ],
+ "translate": [0, 0, 4]
+ },
+ {
+ "groups": [
+ {
+ "translate": [-1.2, 0.6, 0.0],
+ "rotate": [0.0, 1.0, 0.0, 0.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "ambient": [0.3, 0.0, 0.0],
+ "specular": [0.0, 0.0, 0.0],
+ "reflective": [0.0, 0.0, 0.0],
+ "blend": 1.0,
+ "textureFile": "textures/topleft.png",
+ "textureU": 1.0,
+ "textureV": 1.0
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.6, 0.0],
+ "rotate": [0.0, 1.0, 0.0, 90.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "ambient": [0.3, 0.0, 0.0],
+ "specular": [0.0, 0.0, 0.0],
+ "reflective": [0.0, 0.0, 0.0],
+ "blend": 1.0,
+ "textureFile": "textures/topleft.png",
+ "textureU": 1.0,
+ "textureV": 1.0
+ }
+ ]
+ },
+ {
+ "translate": [1.2, 0.6, 0.0],
+ "rotate": [0.0, 1.0, 0.0, 180.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "ambient": [0.3, 0.0, 0.0],
+ "specular": [0.0, 0.0, 0.0],
+ "reflective": [0.0, 0.0, 0.0],
+ "blend": 1.0,
+ "textureFile": "textures/topleft.png",
+ "textureU": 1.0,
+ "textureV": 1.0
+ }
+ ]
+ },
+ {
+ "translate": [-1.2, -0.6, 0.0],
+ "rotate": [0.0, 1.0, 0.0, 270.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "ambient": [0.3, 0.0, 0.0],
+ "specular": [0.0, 0.0, 0.0],
+ "reflective": [0.0, 0.0, 0.0],
+ "blend": 1.0,
+ "textureFile": "textures/topleft.png",
+ "textureU": 1.0,
+ "textureV": 1.0
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -0.6, 0.0],
+ "rotate": [1.0, 0.0, 0.0, 90.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "ambient": [0.3, 0.0, 0.0],
+ "specular": [0.0, 0.0, 0.0],
+ "reflective": [0.0, 0.0, 0.0],
+ "blend": 1.0,
+ "textureFile": "textures/topleft.png",
+ "textureU": 1.0,
+ "textureV": 1.0
+ }
+ ]
+ },
+ {
+ "translate": [1.2, -0.6, 0.0],
+ "rotate": [1.0, 0.0, 0.0, -90.0],
+ "primitives": [
+ {
+ "type": "cube",
+ "ambient": [0.3, 0.0, 0.0],
+ "specular": [0.0, 0.0, 0.0],
+ "reflective": [0.0, 0.0, 0.0],
+ "blend": 1.0,
+ "textureFile": "textures/topleft.png",
+ "textureU": 1.0,
+ "textureV": 1.0
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/scenefiles/illuminate/required/texture_tests/texture_cyl.json b/scenefiles/illuminate/required/texture_tests/texture_cyl.json
new file mode 100644
index 0000000..90105e2
--- /dev/null
+++ b/scenefiles/illuminate/required/texture_tests/texture_cyl.json
@@ -0,0 +1,67 @@
+{
+ "name": "root",
+ "globalData": {
+ "ambientCoeff": 0.5,
+ "diffuseCoeff": 0.5,
+ "specularCoeff": 0.5,
+ "transparentCoeff": 1
+ },
+ "cameraData": {
+ "position": [-4.0, 3.0, 3.0],
+ "up": [0.0, 1.0, 0.0],
+ "look": [4.0, -3.0, -3.0],
+ "heightAngle": 30.0
+ },
+ "groups": [
+ {
+ "lights": [
+ {
+ "type": "point",
+ "color": [0.5, 0.5, 0.5],
+ "attenuationCoeff": [1, 0, 0]
+ }
+ ],
+ "translate": [10, 10, 10]
+ },
+ {
+ "lights": [
+ {
+ "type": "point",
+ "color": [0.8, 0.4, 0.8],
+ "attenuationCoeff": [1, 0, 0]
+ }
+ ],
+ "translate": [-2, -2, 2]
+ },
+ {
+ "lights": [
+ {
+ "type": "point",
+ "color": [0.8, 0.4, 0.8],
+ "attenuationCoeff": [1, 0, 0]
+ }
+ ],
+ "translate": [4, 4, 4]
+ },
+ {
+ "groups": [
+ {
+ "translate": [0.0, 0.0, 0.0],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "diffuse": [1.0, 1.0, 1.0],
+ "specular": [1.0, 1.0, 1.0],
+ "shininess": 30.0,
+ "reflective": [1.0, 1.0, 1.0],
+ "blend": 1.0,
+ "textureFile": "textures/board.png",
+ "textureU": 2.0,
+ "textureV": 2.0
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/scenefiles/illuminate/required/texture_tests/texture_cyl2.json b/scenefiles/illuminate/required/texture_tests/texture_cyl2.json
new file mode 100644
index 0000000..3a0bd0a
--- /dev/null
+++ b/scenefiles/illuminate/required/texture_tests/texture_cyl2.json
@@ -0,0 +1,127 @@
+{
+ "name": "root",
+ "globalData": {
+ "ambientCoeff": 0.5,
+ "diffuseCoeff": 0.5,
+ "specularCoeff": 0.5,
+ "transparentCoeff": 1
+ },
+ "cameraData": {
+ "position": [0.0, 0.0, 6.0],
+ "up": [0.0, 1.0, 0.0],
+ "focus": [0, 0, 0],
+ "heightAngle": 40.0
+ },
+ "groups": [
+ {
+ "translate": [0.0, 0.0, 4.0],
+ "lights": [
+ {
+ "type": "point",
+ "color": [1.0, 1.0, 1.0],
+ "attenuationCoeff": [1.0, 0.0, 0.0]
+ }
+ ]
+ },
+ {
+ "groups": [
+ {
+ "translate": [-1.2, 0.6, 0.0],
+ "rotate": [0.0, 1.0, 0.0, 0.0],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "ambient": [0.3, 0.0, 0.0],
+ "specular": [0.0, 0.0, 0.0],
+ "reflective": [0.0, 0.0, 0.0],
+ "blend": 1.0,
+ "textureFile": "textures/topleft.png",
+ "textureU": 1.0,
+ "textureV": 1.0
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.6, 0.0],
+ "rotate": [0.0, 1.0, 0.0, 90.0],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "ambient": [0.3, 0.0, 0.0],
+ "specular": [0.0, 0.0, 0.0],
+ "reflective": [0.0, 0.0, 0.0],
+ "blend": 1.0,
+ "textureFile": "textures/topleft.png",
+ "textureU": 1.0,
+ "textureV": 1.0
+ }
+ ]
+ },
+ {
+ "translate": [1.2, 0.6, 0.0],
+ "rotate": [0.0, 1.0, 0.0, 180.0],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "ambient": [0.3, 0.0, 0.0],
+ "specular": [0.0, 0.0, 0.0],
+ "reflective": [0.0, 0.0, 0.0],
+ "blend": 1.0,
+ "textureFile": "textures/topleft.png",
+ "textureU": 1.0,
+ "textureV": 1.0
+ }
+ ]
+ },
+ {
+ "translate": [-1.2, -0.6, 0.0],
+ "rotate": [0.0, 1.0, 0.0, 270.0],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "ambient": [0.3, 0.0, 0.0],
+ "specular": [0.0, 0.0, 0.0],
+ "reflective": [0.0, 0.0, 0.0],
+ "blend": 1.0,
+ "textureFile": "textures/topleft.png",
+ "textureU": 1.0,
+ "textureV": 1.0
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -0.6, 0.0],
+ "rotate": [1.0, 0.0, 0.0, 90.0],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "ambient": [0.3, 0.0, 0.0],
+ "specular": [0.0, 0.0, 0.0],
+ "reflective": [0.0, 0.0, 0.0],
+ "blend": 1.0,
+ "textureFile": "textures/topleft.png",
+ "textureU": 1.0,
+ "textureV": 1.0
+ }
+ ]
+ },
+ {
+ "translate": [1.2, -0.6, 0.0],
+ "rotate": [1.0, 0.0, 0.0, -90.0],
+ "primitives": [
+ {
+ "type": "cylinder",
+ "ambient": [0.3, 0.0, 0.0],
+ "specular": [0.0, 0.0, 0.0],
+ "reflective": [0.0, 0.0, 0.0],
+ "blend": 1.0,
+ "textureFile": "textures/topleft.png",
+ "textureU": 1.0,
+ "textureV": 1.0
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/scenefiles/illuminate/required/texture_tests/texture_sphere.json b/scenefiles/illuminate/required/texture_tests/texture_sphere.json
new file mode 100644
index 0000000..213cc4e
--- /dev/null
+++ b/scenefiles/illuminate/required/texture_tests/texture_sphere.json
@@ -0,0 +1,59 @@
+{
+ "name": "root",
+ "globalData": {
+ "ambientCoeff": 0.5,
+ "diffuseCoeff": 0.5,
+ "specularCoeff": 0.5,
+ "transparentCoeff": 1
+ },
+ "cameraData": {
+ "position": [-7.0, 0.0, 0.0],
+ "up": [0.0, 1.0, 0.0],
+ "focus": [0, 0, 0],
+ "heightAngle": 30.0,
+ "aperture": 0.01,
+ "focalLength": 3.0
+ },
+ "groups": [
+ {
+ "translate": [1.0, 10.0, 10.0],
+ "lights": [
+ {
+ "type": "point",
+ "color": [0.8, 0.1, 0.2],
+ "attenuationCoeff": [1.0, 0.0, 0.0]
+ }
+ ]
+ },
+ {
+ "translate": [1.0, -10.0, -10.0],
+ "lights": [
+ {
+ "type": "point",
+ "color": [0.1, 0.4, 0.8],
+ "attenuationCoeff": [1.0, 0.0, 0.0]
+ }
+ ]
+ },
+ {
+ "groups": [
+ {
+ "rotate": [0.0, 0.0, 1.0, -45.0],
+ "primitives": [
+ {
+ "type": "sphere",
+ "diffuse": [1.0, 1.0, 1.0],
+ "specular": [1.0, 1.0, 1.0],
+ "shininess": 30.0,
+ "reflective": [0.9, 0.9, 0.9],
+ "blend": 1.0,
+ "textureFile": "textures/board.png",
+ "textureU": 4.0,
+ "textureV": 4.0
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/scenefiles/illuminate/required/texture_tests/texture_sphere2.json b/scenefiles/illuminate/required/texture_tests/texture_sphere2.json
new file mode 100644
index 0000000..83233e7
--- /dev/null
+++ b/scenefiles/illuminate/required/texture_tests/texture_sphere2.json
@@ -0,0 +1,127 @@
+{
+ "name": "root",
+ "globalData": {
+ "ambientCoeff": 0.5,
+ "diffuseCoeff": 0.5,
+ "specularCoeff": 0.5,
+ "transparentCoeff": 1
+ },
+ "cameraData": {
+ "position": [0.0, 0.0, 6.0],
+ "up": [0.0, 1.0, 0.0],
+ "focus": [0, 0, 0],
+ "heightAngle": 40.0
+ },
+ "groups": [
+ {
+ "translate": [0.0, 0.0, 4.0],
+ "lights": [
+ {
+ "type": "point",
+ "color": [1.0, 1.0, 1.0],
+ "attenuationCoeff": [1.0, 0.0, 0.0]
+ }
+ ]
+ },
+ {
+ "groups": [
+ {
+ "translate": [-1.2, 0.6, 0.0],
+ "rotate": [0.0, 1.0, 0.0, 0.0],
+ "primitives": [
+ {
+ "type": "sphere",
+ "ambient": [0.3, 0.0, 0.0],
+ "specular": [0.0, 0.0, 0.0],
+ "reflective": [0.0, 0.0, 0.0],
+ "blend": 1.0,
+ "textureFile": "textures/topleft.png",
+ "textureU": 1.0,
+ "textureV": 1.0
+ }
+ ]
+ },
+ {
+ "translate": [0.0, 0.6, 0.0],
+ "rotate": [0.0, 1.0, 0.0, 90.0],
+ "primitives": [
+ {
+ "type": "sphere",
+ "ambient": [0.3, 0.0, 0.0],
+ "specular": [0.0, 0.0, 0.0],
+ "reflective": [0.0, 0.0, 0.0],
+ "blend": 1.0,
+ "textureFile": "textures/topleft.png",
+ "textureU": 1.0,
+ "textureV": 1.0
+ }
+ ]
+ },
+ {
+ "translate": [1.2, 0.6, 0.0],
+ "rotate": [0.0, 1.0, 0.0, 180.0],
+ "primitives": [
+ {
+ "type": "sphere",
+ "ambient": [0.3, 0.0, 0.0],
+ "specular": [0.0, 0.0, 0.0],
+ "reflective": [0.0, 0.0, 0.0],
+ "blend": 1.0,
+ "textureFile": "textures/topleft.png",
+ "textureU": 1.0,
+ "textureV": 1.0
+ }
+ ]
+ },
+ {
+ "translate": [-1.2, -0.6, 0.0],
+ "rotate": [0.0, 1.0, 0.0, 270.0],
+ "primitives": [
+ {
+ "type": "sphere",
+ "ambient": [0.3, 0.0, 0.0],
+ "specular": [0.0, 0.0, 0.0],
+ "reflective": [0.0, 0.0, 0.0],
+ "blend": 1.0,
+ "textureFile": "textures/topleft.png",
+ "textureU": 1.0,
+ "textureV": 1.0
+ }
+ ]
+ },
+ {
+ "translate": [0.0, -0.6, 0.0],
+ "rotate": [1.0, 0.0, 0.0, 90.0],
+ "primitives": [
+ {
+ "type": "sphere",
+ "ambient": [0.3, 0.0, 0.0],
+ "specular": [0.0, 0.0, 0.0],
+ "reflective": [0.0, 0.0, 0.0],
+ "blend": 1.0,
+ "textureFile": "textures/topleft.png",
+ "textureU": 1.0,
+ "textureV": 1.0
+ }
+ ]
+ },
+ {
+ "translate": [1.2, -0.6, 0.0],
+ "rotate": [1.0, 0.0, 0.0, -90.0],
+ "primitives": [
+ {
+ "type": "sphere",
+ "ambient": [0.3, 0.0, 0.0],
+ "specular": [0.0, 0.0, 0.0],
+ "reflective": [0.0, 0.0, 0.0],
+ "blend": 1.0,
+ "textureFile": "textures/topleft.png",
+ "textureU": 1.0,
+ "textureV": 1.0
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/scenefiles/illuminate/required/textures/andyVanDam.jpg b/scenefiles/illuminate/required/textures/andyVanDam.jpg
new file mode 100644
index 0000000..4bb0ebd
--- /dev/null
+++ b/scenefiles/illuminate/required/textures/andyVanDam.jpg
Binary files differ
diff --git a/scenefiles/illuminate/required/textures/bark.png b/scenefiles/illuminate/required/textures/bark.png
new file mode 100644
index 0000000..d771e0f
--- /dev/null
+++ b/scenefiles/illuminate/required/textures/bark.png
Binary files differ
diff --git a/scenefiles/illuminate/required/textures/board.png b/scenefiles/illuminate/required/textures/board.png
new file mode 100644
index 0000000..27278dc
--- /dev/null
+++ b/scenefiles/illuminate/required/textures/board.png
Binary files differ
diff --git a/scenefiles/illuminate/required/textures/breakfast.gif b/scenefiles/illuminate/required/textures/breakfast.gif
new file mode 100644
index 0000000..880724d
--- /dev/null
+++ b/scenefiles/illuminate/required/textures/breakfast.gif
Binary files differ
diff --git a/scenefiles/illuminate/required/textures/check.png b/scenefiles/illuminate/required/textures/check.png
new file mode 100644
index 0000000..96b2d3a
--- /dev/null
+++ b/scenefiles/illuminate/required/textures/check.png
Binary files differ
diff --git a/scenefiles/illuminate/required/textures/cheese.png b/scenefiles/illuminate/required/textures/cheese.png
new file mode 100644
index 0000000..84d78f5
--- /dev/null
+++ b/scenefiles/illuminate/required/textures/cheese.png
Binary files differ
diff --git a/scenefiles/illuminate/required/textures/earth.png b/scenefiles/illuminate/required/textures/earth.png
new file mode 100644
index 0000000..3300378
--- /dev/null
+++ b/scenefiles/illuminate/required/textures/earth.png
Binary files differ
diff --git a/scenefiles/illuminate/required/textures/liqmtl.png b/scenefiles/illuminate/required/textures/liqmtl.png
new file mode 100644
index 0000000..ea27109
--- /dev/null
+++ b/scenefiles/illuminate/required/textures/liqmtl.png
Binary files differ
diff --git a/scenefiles/illuminate/required/textures/mandril.png b/scenefiles/illuminate/required/textures/mandril.png
new file mode 100644
index 0000000..3fbe573
--- /dev/null
+++ b/scenefiles/illuminate/required/textures/mandril.png
Binary files differ
diff --git a/scenefiles/illuminate/required/textures/marsTexture.png b/scenefiles/illuminate/required/textures/marsTexture.png
new file mode 100644
index 0000000..35f842a
--- /dev/null
+++ b/scenefiles/illuminate/required/textures/marsTexture.png
Binary files differ
diff --git a/scenefiles/illuminate/required/textures/topleft.png b/scenefiles/illuminate/required/textures/topleft.png
new file mode 100644
index 0000000..6e46914
--- /dev/null
+++ b/scenefiles/illuminate/required/textures/topleft.png
Binary files differ
diff --git a/scenefiles/illuminate/required_outputs/point_light/point_light_1.png b/scenefiles/illuminate/required_outputs/point_light/point_light_1.png
new file mode 100644
index 0000000..4652422
--- /dev/null
+++ b/scenefiles/illuminate/required_outputs/point_light/point_light_1.png
Binary files differ
diff --git a/scenefiles/illuminate/required_outputs/point_light/point_light_2.png b/scenefiles/illuminate/required_outputs/point_light/point_light_2.png
new file mode 100644
index 0000000..43261bc
--- /dev/null
+++ b/scenefiles/illuminate/required_outputs/point_light/point_light_2.png
Binary files differ
diff --git a/scenefiles/illuminate/required_outputs/reflection/reflections_basic.png b/scenefiles/illuminate/required_outputs/reflection/reflections_basic.png
new file mode 100644
index 0000000..ce31040
--- /dev/null
+++ b/scenefiles/illuminate/required_outputs/reflection/reflections_basic.png
Binary files differ
diff --git a/scenefiles/illuminate/required_outputs/reflection/reflections_complex.png b/scenefiles/illuminate/required_outputs/reflection/reflections_complex.png
new file mode 100644
index 0000000..98fe2b5
--- /dev/null
+++ b/scenefiles/illuminate/required_outputs/reflection/reflections_complex.png
Binary files differ
diff --git a/scenefiles/illuminate/required_outputs/shadow/shadow_special_case.png b/scenefiles/illuminate/required_outputs/shadow/shadow_special_case.png
new file mode 100644
index 0000000..363e924
--- /dev/null
+++ b/scenefiles/illuminate/required_outputs/shadow/shadow_special_case.png
Binary files differ
diff --git a/scenefiles/illuminate/required_outputs/shadow/shadow_test.png b/scenefiles/illuminate/required_outputs/shadow/shadow_test.png
new file mode 100644
index 0000000..4586b82
--- /dev/null
+++ b/scenefiles/illuminate/required_outputs/shadow/shadow_test.png
Binary files differ
diff --git a/scenefiles/illuminate/required_outputs/shadow/simple_shadow.png b/scenefiles/illuminate/required_outputs/shadow/simple_shadow.png
new file mode 100644
index 0000000..af0cdbc
--- /dev/null
+++ b/scenefiles/illuminate/required_outputs/shadow/simple_shadow.png
Binary files differ
diff --git a/scenefiles/illuminate/required_outputs/spot_light/spot_light_1.png b/scenefiles/illuminate/required_outputs/spot_light/spot_light_1.png
new file mode 100644
index 0000000..0b20e8d
--- /dev/null
+++ b/scenefiles/illuminate/required_outputs/spot_light/spot_light_1.png
Binary files differ
diff --git a/scenefiles/illuminate/required_outputs/spot_light/spot_light_2.png b/scenefiles/illuminate/required_outputs/spot_light/spot_light_2.png
new file mode 100644
index 0000000..3221b0f
--- /dev/null
+++ b/scenefiles/illuminate/required_outputs/spot_light/spot_light_2.png
Binary files differ
diff --git a/scenefiles/illuminate/required_outputs/texture_tests/texture_cone.png b/scenefiles/illuminate/required_outputs/texture_tests/texture_cone.png
new file mode 100644
index 0000000..23cb692
--- /dev/null
+++ b/scenefiles/illuminate/required_outputs/texture_tests/texture_cone.png
Binary files differ
diff --git a/scenefiles/illuminate/required_outputs/texture_tests/texture_cone2.png b/scenefiles/illuminate/required_outputs/texture_tests/texture_cone2.png
new file mode 100644
index 0000000..0b6c48c
--- /dev/null
+++ b/scenefiles/illuminate/required_outputs/texture_tests/texture_cone2.png
Binary files differ
diff --git a/scenefiles/illuminate/required_outputs/texture_tests/texture_cube.png b/scenefiles/illuminate/required_outputs/texture_tests/texture_cube.png
new file mode 100644
index 0000000..8e436d4
--- /dev/null
+++ b/scenefiles/illuminate/required_outputs/texture_tests/texture_cube.png
Binary files differ
diff --git a/scenefiles/illuminate/required_outputs/texture_tests/texture_cube2.png b/scenefiles/illuminate/required_outputs/texture_tests/texture_cube2.png
new file mode 100644
index 0000000..80303c1
--- /dev/null
+++ b/scenefiles/illuminate/required_outputs/texture_tests/texture_cube2.png
Binary files differ
diff --git a/scenefiles/illuminate/required_outputs/texture_tests/texture_cyl.png b/scenefiles/illuminate/required_outputs/texture_tests/texture_cyl.png
new file mode 100644
index 0000000..8e02273
--- /dev/null
+++ b/scenefiles/illuminate/required_outputs/texture_tests/texture_cyl.png
Binary files differ
diff --git a/scenefiles/illuminate/required_outputs/texture_tests/texture_cyl2.png b/scenefiles/illuminate/required_outputs/texture_tests/texture_cyl2.png
new file mode 100644
index 0000000..bf296e8
--- /dev/null
+++ b/scenefiles/illuminate/required_outputs/texture_tests/texture_cyl2.png
Binary files differ
diff --git a/scenefiles/illuminate/required_outputs/texture_tests/texture_sphere.png b/scenefiles/illuminate/required_outputs/texture_tests/texture_sphere.png
new file mode 100644
index 0000000..081e86b
--- /dev/null
+++ b/scenefiles/illuminate/required_outputs/texture_tests/texture_sphere.png
Binary files differ
diff --git a/scenefiles/illuminate/required_outputs/texture_tests/texture_sphere2.png b/scenefiles/illuminate/required_outputs/texture_tests/texture_sphere2.png
new file mode 100644
index 0000000..badc87b
--- /dev/null
+++ b/scenefiles/illuminate/required_outputs/texture_tests/texture_sphere2.png
Binary files differ
diff --git a/scenefiles/illuminate/textures/andyVanDam.jpg b/scenefiles/illuminate/textures/andyVanDam.jpg
new file mode 100644
index 0000000..4bb0ebd
--- /dev/null
+++ b/scenefiles/illuminate/textures/andyVanDam.jpg
Binary files differ
diff --git a/scenefiles/illuminate/textures/bark.png b/scenefiles/illuminate/textures/bark.png
new file mode 100644
index 0000000..d771e0f
--- /dev/null
+++ b/scenefiles/illuminate/textures/bark.png
Binary files differ
diff --git a/scenefiles/illuminate/textures/breakfast.gif b/scenefiles/illuminate/textures/breakfast.gif
new file mode 100644
index 0000000..880724d
--- /dev/null
+++ b/scenefiles/illuminate/textures/breakfast.gif
Binary files differ
diff --git a/scenefiles/illuminate/textures/check.png b/scenefiles/illuminate/textures/check.png
new file mode 100644
index 0000000..96b2d3a
--- /dev/null
+++ b/scenefiles/illuminate/textures/check.png
Binary files differ
diff --git a/scenefiles/illuminate/textures/earth.png b/scenefiles/illuminate/textures/earth.png
new file mode 100644
index 0000000..3300378
--- /dev/null
+++ b/scenefiles/illuminate/textures/earth.png
Binary files differ
diff --git a/scenefiles/illuminate/textures/marsTexture.png b/scenefiles/illuminate/textures/marsTexture.png
new file mode 100644
index 0000000..35f842a
--- /dev/null
+++ b/scenefiles/illuminate/textures/marsTexture.png
Binary files differ