diff --git a/Escape-the-Dawn/CODMapShipment.mtl b/Escape-the-Dawn/CODMapShipment.mtl
new file mode 100644
index 0000000..2d812d8
--- /dev/null
+++ b/Escape-the-Dawn/CODMapShipment.mtl
@@ -0,0 +1,1773 @@
+# Blender MTL File: 'CODMapShipment.blend'
+# Material Count: 161
+newmtl material_0_00000000.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\00000000.dds
+
+
+newmtl material_104_0eaee8e3.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\0eaee8e3.dds
+
+
+newmtl material_111_f42d5e76.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\f42d5e76.dds
+
+
+newmtl material_112_4107969c.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\4107969c.dds
+
+
+newmtl material_115_825aeb0c.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\825aeb0c.dds
+
+
+newmtl material_120_bd2da1c7.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\bd2da1c7.dds
+
+
+newmtl material_121_71649b40.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\71649b40.dds
+
+
+newmtl material_122_60ae9929.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\60ae9929.dds
+
+
+newmtl material_123_d0dcc44d.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\d0dcc44d.dds
+
+
+newmtl material_124_cc28a7e7.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\cc28a7e7.dds
+
+
+newmtl material_125_e75e6bcc.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\e75e6bcc.dds
+
+
+newmtl material_126_c3216ea0.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\c3216ea0.dds
+
+
+newmtl material_127_52ba8dbf.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\52ba8dbf.dds
+
+
+newmtl material_128_0afe848a.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\0afe848a.dds
+
+
+newmtl material_129_82d72a68.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\82d72a68.dds
+
+
+newmtl material_141_8243bc54.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\8243bc54.dds
+
+
+newmtl material_148_d86a82e7.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\d86a82e7.dds
+
+
+newmtl material_14_a1705a02.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\a1705a02.dds
+
+
+newmtl material_152_4ab02788.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\4ab02788.dds
+
+
+newmtl material_153_6a66de37.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\6a66de37.dds
+
+
+newmtl material_158_fcb6b3c2.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\fcb6b3c2.dds
+
+
+newmtl material_162_6c0e4e28.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\6c0e4e28.dds
+
+
+newmtl material_163_e78c3e39.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\e78c3e39.dds
+
+
+newmtl material_164_2397e717.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\2397e717.dds
+
+
+newmtl material_167_b0dfc42f.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\b0dfc42f.dds
+
+
+newmtl material_16_6ba8769b.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\6ba8769b.dds
+
+
+newmtl material_170_7cc451fe.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\7cc451fe.dds
+
+
+newmtl material_174_515423bb.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\515423bb.dds
+
+
+newmtl material_175_e05a50aa.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\e05a50aa.dds
+
+
+newmtl material_178_3ad94d53.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\3ad94d53.dds
+
+
+newmtl material_179_61856e4a.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\61856e4a.dds
+
+
+newmtl material_17_e6f4928c.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\e6f4928c.dds
+
+
+newmtl material_180_657b2078.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\657b2078.dds
+
+
+newmtl material_181_c7db970e.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\c7db970e.dds
+
+
+newmtl material_183_187ed957.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\187ed957.dds
+
+
+newmtl material_185_3b1cf6ce.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\3b1cf6ce.dds
+
+
+newmtl material_189_4fa52203.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\4fa52203.dds
+
+
+newmtl material_190_934256ef.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\934256ef.dds
+
+
+newmtl material_191_e1a27f9d.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\e1a27f9d.dds
+
+
+newmtl material_193_07b087a4.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\07b087a4.dds
+
+
+newmtl material_194_4a377fa4.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\4a377fa4.dds
+
+
+newmtl material_195_bf46b7f8.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\bf46b7f8.dds
+
+
+newmtl material_198_fb7efc03.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\fb7efc03.dds
+
+
+newmtl material_199_89bbb4af.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\89bbb4af.dds
+
+
+newmtl material_19_1343fc2f.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\1343fc2f.dds
+
+
+newmtl material_200_0d6e0646.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\0d6e0646.dds
+
+
+newmtl material_201_d8c8ef76.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\d8c8ef76.dds
+
+
+newmtl material_207_c2f94610.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\c2f94610.dds
+
+
+newmtl material_209_3df9eef9.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\3df9eef9.dds
+
+
+newmtl material_210_4c33f265.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\4c33f265.dds
+
+
+newmtl material_211_c353bf43.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\c353bf43.dds
+
+
+newmtl material_212_b992e947.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\b992e947.dds
+
+
+newmtl material_217_33481142.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\33481142.dds
+
+
+newmtl material_218_12abe8fd.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\12abe8fd.dds
+
+
+newmtl material_219_000c9d3e.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\000c9d3e.dds
+
+
+newmtl material_222_54db5e4c.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\54db5e4c.dds
+
+
+newmtl material_223_54c70238.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\54c70238.dds
+
+
+newmtl material_224_c69e90f3.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\c69e90f3.dds
+
+
+newmtl material_225_b96bc8eb.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\b96bc8eb.dds
+
+
+newmtl material_227_2a87060c.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\2a87060c.dds
+
+
+newmtl material_22_5d458942.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\5d458942.dds
+
+
+newmtl material_234_149ca095.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\149ca095.dds
+
+
+newmtl material_242_60822a18.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\60822a18.dds
+
+
+newmtl material_243_c8a228a8.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\c8a228a8.dds
+
+
+newmtl material_244_b1959683.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\b1959683.dds
+
+
+newmtl material_246_31f1830a.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\31f1830a.dds
+
+
+newmtl material_248_6c981e0c.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\6c981e0c.dds
+
+
+newmtl material_249_c857689f.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\c857689f.dds
+
+
+newmtl material_24_c4897d2a.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\c4897d2a.dds
+
+
+newmtl material_250_13e3cdba.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\13e3cdba.dds
+
+
+newmtl material_252_affc3ec0.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\affc3ec0.dds
+
+
+newmtl material_254_e8be7acc.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\e8be7acc.dds
+
+
+newmtl material_257_8cc88c3f.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\8cc88c3f.dds
+
+
+newmtl material_25_46552b1f.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\46552b1f.dds
+
+
+newmtl material_265_8e8a22e5.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\8e8a22e5.dds
+
+
+newmtl material_267_ea4991b1.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\ea4991b1.dds
+
+
+newmtl material_269_4e5fd66d.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\4e5fd66d.dds
+
+
+newmtl material_271_d6ac112e.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\d6ac112e.dds
+
+
+newmtl material_272_75587289.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\75587289.dds
+
+
+newmtl material_273_5dcd1960.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\5dcd1960.dds
+
+
+newmtl material_274_6ddd2fbf.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\6ddd2fbf.dds
+
+
+newmtl material_276_0dbac2ec.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\0dbac2ec.dds
+
+
+newmtl material_282_f0356be7.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\f0356be7.dds
+
+
+newmtl material_284_60edfc3d.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\60edfc3d.dds
+
+
+newmtl material_289_c36e19f3.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\c36e19f3.dds
+
+
+newmtl material_291_e6428f60.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\e6428f60.dds
+
+
+newmtl material_295_84bc52a5.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\84bc52a5.dds
+
+
+newmtl material_299_8c4bf203.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\8c4bf203.dds
+
+
+newmtl material_309_fd91aedf.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\fd91aedf.dds
+
+
+newmtl material_310_73f12a71.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\73f12a71.dds
+
+
+newmtl material_319_f45ff684.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\f45ff684.dds
+
+
+newmtl material_320_6a4a9f3f.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\6a4a9f3f.dds
+
+
+newmtl material_325_ba75b37c.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\ba75b37c.dds
+
+
+newmtl material_326_ea0be77e.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\ea0be77e.dds
+
+
+newmtl material_331_9f43ce5f.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\9f43ce5f.dds
+
+
+newmtl material_337_744d79f5.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\744d79f5.dds
+
+
+newmtl material_342_a2d779ea.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\a2d779ea.dds
+
+
+newmtl material_349_fd901c18.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\fd901c18.dds
+
+
+newmtl material_355_2699beb6.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\2699beb6.dds
+
+
+newmtl material_356_ef8daeb3.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\ef8daeb3.dds
+
+
+newmtl material_359_d3a60e1e.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\d3a60e1e.dds
+
+
+newmtl material_362_5216bd6c.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\5216bd6c.dds
+
+
+newmtl material_363_a65c0ca8.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\a65c0ca8.dds
+
+
+newmtl material_364_f989f724.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\f989f724.dds
+
+
+newmtl material_366_6247fad0.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\6247fad0.dds
+
+
+newmtl material_367_952e0790.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\952e0790.dds
+
+
+newmtl material_368_aeec2685.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\aeec2685.dds
+
+
+newmtl material_370_55ebb587.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\55ebb587.dds
+
+
+newmtl material_385_b059fe85.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\b059fe85.dds
+
+
+newmtl material_386_471846e6.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\471846e6.dds
+
+
+newmtl material_389_0e076761.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\0e076761.dds
+
+
+newmtl material_390_2a2a0045.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\2a2a0045.dds
+
+
+newmtl material_392_2298817f.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\2298817f.dds
+
+
+newmtl material_394_f6868a9d.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\f6868a9d.dds
+
+
+newmtl material_405_f6b1acb2.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\f6b1acb2.dds
+
+
+newmtl material_416_ba15f3a0.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\ba15f3a0.dds
+
+
+newmtl material_418_d9b6f6be.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\d9b6f6be.dds
+
+
+newmtl material_420_e5bf030b.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\e5bf030b.dds
+
+
+newmtl material_427_f10778ed.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\f10778ed.dds
+
+
+newmtl material_429_799fd149.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\799fd149.dds
+
+
+newmtl material_430_487a77d4.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\487a77d4.dds
+
+
+newmtl material_435_e87cccb4.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\e87cccb4.dds
+
+
+newmtl material_439_a1f54c5d.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\a1f54c5d.dds
+
+
+newmtl material_442_9f640a6e.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\9f640a6e.dds
+
+
+newmtl material_443_533ba322.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\533ba322.dds
+
+
+newmtl material_446_e034fd38.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\e034fd38.dds
+
+
+newmtl material_447_41db654a.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\41db654a.dds
+
+
+newmtl material_448_20bb5d36.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\20bb5d36.dds
+
+
+newmtl material_449_5bcb5b66.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\5bcb5b66.dds
+
+
+newmtl material_44_dffb7be4.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\dffb7be4.dds
+
+
+newmtl material_451_1a981f80.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\1a981f80.dds
+
+
+newmtl material_456_b9ecc2be.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\b9ecc2be.dds
+
+
+newmtl material_458_055ebee8.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\055ebee8.dds
+
+
+newmtl material_45_8f98883e.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\8f98883e.dds
+
+
+newmtl material_464_010e4cde.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\010e4cde.dds
+
+
+newmtl material_466_e928c590.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\e928c590.dds
+
+
+newmtl material_473_604b666f.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\604b666f.dds
+
+
+newmtl material_474_0c34d418.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\0c34d418.dds
+
+
+newmtl material_475_ea7c427f.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\ea7c427f.dds
+
+
+newmtl material_478_ba14d74b.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\ba14d74b.dds
+
+
+newmtl material_480_41c2d01b.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\41c2d01b.dds
+
+
+newmtl material_485_f4a24136.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\f4a24136.dds
+
+
+newmtl material_486_2d0437d1.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\2d0437d1.dds
+
+
+newmtl material_487_bf3b39ec.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\bf3b39ec.dds
+
+
+newmtl material_488_424b46e8.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\424b46e8.dds
+
+
+newmtl material_53_ee1f2cc9.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\ee1f2cc9.dds
+
+
+newmtl material_58_e4000086.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\e4000086.dds
+
+
+newmtl material_5_9d2c82ba.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\9d2c82ba.dds
+
+
+newmtl material_61_88095fd2.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\88095fd2.dds
+
+
+newmtl material_73_60dbb6bf.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\60dbb6bf.dds
+
+
+newmtl material_74_b94e06c9.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\b94e06c9.dds
+
+
+newmtl material_77_6b492a73.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\6b492a73.dds
+
+
+newmtl material_79_1215969b.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\1215969b.dds
+
+
+newmtl material_7_a75f1def.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\a75f1def.dds
+
+
+newmtl material_84_f8a61039.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\f8a61039.dds
+
+
+newmtl material_89_21cb1f00.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\21cb1f00.dds
+
+
+newmtl material_90_61143ced.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\61143ced.dds
+
+
+newmtl material_91_4d27abc8.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\4d27abc8.dds
+
+
+newmtl material_93_0b1f2496.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\0b1f2496.dds
+
+
+newmtl material_95_59382d55.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\59382d55.dds
+
+
+newmtl material_9_1844db10.dds
+Ns 0.000000
+Ka 0.000000 0.000000 0.000000
+Kd 0.480000 0.480000 0.480000
+Ks 0.900000 0.900000 0.900000
+Ni 1.000000
+d 1.000000
+illum 2
+map_Kd C:\1844db10.dds
+
+
diff --git a/Escape-the-Dawn/Components/PointLight.h b/Escape-the-Dawn/Components/PointLight.h
index daf3aa9..a7a5d4a 100644
--- a/Escape-the-Dawn/Components/PointLight.h
+++ b/Escape-the-Dawn/Components/PointLight.h
@@ -11,8 +11,11 @@ struct PointLight : Component
{
float Intensity;
float MaxRange;
- float SpecularIntensity;
- Color Color;
+ glm::vec3 Specular;
+ glm::vec3 Diffuse;
+ float constantAttenuation, linearAttenuation, quadraticAttenuation;
+ float spotExponent;
+ Color color;
};
}
diff --git a/Escape-the-Dawn/Escape-the-Dawn.vcxproj b/Escape-the-Dawn/Escape-the-Dawn.vcxproj
index 5ba9649..1e7f637 100644
--- a/Escape-the-Dawn/Escape-the-Dawn.vcxproj
+++ b/Escape-the-Dawn/Escape-the-Dawn.vcxproj
@@ -160,6 +160,7 @@
+
diff --git a/Escape-the-Dawn/Escape-the-Dawn.vcxproj.filters b/Escape-the-Dawn/Escape-the-Dawn.vcxproj.filters
index 80dae46..f603064 100644
--- a/Escape-the-Dawn/Escape-the-Dawn.vcxproj.filters
+++ b/Escape-the-Dawn/Escape-the-Dawn.vcxproj.filters
@@ -150,6 +150,9 @@
Shaders
+
+ Shaders
+
diff --git a/Escape-the-Dawn/Federation_Interceptor_HN48_flying.mtl b/Escape-the-Dawn/Federation_Interceptor_HN48_flying.mtl
new file mode 100644
index 0000000..1ccb4f8
--- /dev/null
+++ b/Escape-the-Dawn/Federation_Interceptor_HN48_flying.mtl
@@ -0,0 +1,97 @@
+newmtl default_body2
+d 1
+Ns 0.75
+Ni 0
+Ka 0 0 0
+Kd 1 1 1
+Ks 1 1 1
+Km 0
+map_Kd /Maps/as2.jpg
+
+newmtl default
+d 1
+Ns 0.75
+Ni 0
+Ka 0 0 0
+Kd 0.27451 0.27451 0.27451
+Ks 1 1 1
+Km 0
+
+newmtl default_cockpits_1_cushions
+d 1
+Ns 0.75
+Ni 0
+Ka 0 0 0
+Kd 1 1 1
+Ks 1 1 1
+Km 0
+map_Kd /Maps/yx1_02_01_01_02.jpg
+
+newmtl default_cockpits_1_display
+d 1
+Ns 0.75
+Ni 0
+Ka 1 1 1
+Kd 1 1 1
+Ks 1 1 1
+Km 0
+map_Kd /Maps/ggt1.jpg
+
+newmtl default_cockpits_joysticks
+d 1
+Ns 0.75
+Ni 0
+Ka 0 0 0
+Kd 0 0 0
+Ks 1 1 1
+Km 0
+
+newmtl default_skin
+d 1
+Ns 0.75
+Ni 0
+Ka 0 0 0
+Kd 1 1 1
+Ks 1 1 1
+Km 0
+map_Kd /Maps/ahm1_01_01.jpg
+
+newmtl default_cabins1glass
+d 0.65
+Ns 0.75
+Ni 0
+Ka 0 0 0
+Kd 0.501961 1 0
+Ks 1 1 1
+Km 0
+
+newmtl default_ship_door
+d 1
+Ns 1
+Ni 0
+Ka 0 0 0
+Kd 1 1 1
+Ks 1 1 1
+Km 0
+map_Kd /Maps/as1_02.jpg
+
+newmtl default_door
+d 1
+Ns 0.75
+Ni 0
+Ka 0 0 0
+Kd 1 1 1
+Ks 1 1 1
+Km 0
+map_Kd /Maps/as1_02.jpg
+
+newmtl default_steps
+d 1
+Ns 1
+Ni 0
+Ka 0 0 0
+Kd 1 1 1
+Ks 1 1 1
+Km 0
+map_Kd /Maps/rmp1.jpg
+
diff --git a/Escape-the-Dawn/Fragment2.glsl b/Escape-the-Dawn/Fragment2.glsl
new file mode 100644
index 0000000..e0f4160
--- /dev/null
+++ b/Escape-the-Dawn/Fragment2.glsl
@@ -0,0 +1,71 @@
+uniform mat4 model;
+uniform mat4 view;
+
+layout(binding=0) uniform sampler2D texture;
+
+const int numberOfLights = 2;
+lightSource lights[numberOfLights];
+
+uniform vec4 position[numberOfLights];
+uniform vec4 specular[numberOfLights];
+uniform vec4 diffuse[numberOfLights];
+uniform float constantAttenuation[numberOfLights];
+uniform float linearAttenuation[numberOfLights];
+uniform float quadraticAttenuation[numberOfLights];
+uniform float spotExponent[numberOfLights];
+
+ in VertexData {
+ vec3 Position;
+ vec3 Normal;
+ vec2 TextureCoord;
+} Input;
+
+vec4 scene_ambient = vec4(0.2, 0.2, 0.2, 1.0);
+
+out vec4 fragmentColor;
+
+void main()
+{
+
+ vec4 texel = texture2D(texture, Input.TextureCoord);
+
+ vec3 normalDirection = normalize(Normal);
+ vec3 viewDirection = normalize(vec3(v_inv * vec4(0.0, 0.0, 0.0, 1.0) - Position));
+ vec3 lightDirection;
+ float attenuation;
+
+ // initialize total lighting with ambient lighting
+ vec3 totalLighting = vec3(scene_ambient) * vec3(frontMaterial.ambient);
+
+ for (int index = 0; index < numberOfLights; index++) // for all light sources
+ {
+ vec3 positionToLightSource = vec3(position[index] - Position);
+ float distance = length(positionToLightSource);
+ lightDirection = normalize(positionToLightSource);
+
+ attenuation = 1.0 / (constantAttenuation[index]
+ + linearAttenuation[index] * distance
+ + quadraticAttenuation[index] * distance * distance);
+
+ attenuation = attenuation * pow(clampedCosine, spotExponent[index]);
+
+ vec3 diffuseReflection = attenuation
+ * vec3(diffuse[index]) * vec3(frontMaterial.diffuse)
+ * max(0.0, dot(normalDirection, lightDirection));
+
+ vec3 specularReflection;
+ if (dot(normalDirection, lightDirection) < 0.0) // light source on the wrong side?
+ {
+ specularReflection = vec3(0.0, 0.0, 0.0); // no specular reflection
+ }
+ else // light source on the right side
+ {
+ specularReflection = attenuation * vec3(specular[index]) * vec3(frontMaterial.specular)
+ * pow(max(0.0, dot(reflect(-lightDirection, normalDirection), viewDirection)), frontMaterial.shininess);
+ }
+
+ totalLighting = totalLighting + diffuseReflection + specularReflection;
+ }
+
+ fragmentColor = vec4(totalLighting, 1.0) * texel;
+}
\ No newline at end of file
diff --git a/Escape-the-Dawn/GameWorld.h b/Escape-the-Dawn/GameWorld.h
index c6a6140..7d51816 100644
--- a/Escape-the-Dawn/GameWorld.h
+++ b/Escape-the-Dawn/GameWorld.h
@@ -62,23 +62,51 @@ void GameWorld::Initialize()
std::shared_ptr transform;
std::shared_ptr model;
+ std::shared_ptr pointLight;
std::shared_ptr camera;
EntityID ent;
+ ent = CreateEntity();
+ transform = AddComponent(ent, "Transform");
+ transform->Position = glm::vec3(0.f, 4.f, 0.f);
+ pointLight = AddComponent(ent, "PointLight");
+ pointLight->Specular = glm::vec3(1.0, 1.0, 1.0);
+ pointLight->Diffuse = glm::vec3(1.0, 1.0, 1.0);
+ pointLight->constantAttenuation = 0.f;
+ pointLight->linearAttenuation = 1.f;
+ pointLight->quadraticAttenuation = 0.f;
+ pointLight->spotExponent = 0.0f;
+
+ ent = CreateEntity();
+ transform = AddComponent(ent, "Transform");
+ transform->Position = glm::vec3(10.f, 4.f, 0.f);
+ pointLight = AddComponent(ent, "PointLight");
+ pointLight->Specular = glm::vec3(1.0, 1.0, 1.0);
+ pointLight->Diffuse = glm::vec3(1.0, 1.0, 1.0);
+ pointLight->constantAttenuation = 0.f;
+ pointLight->linearAttenuation = 1.f;
+ pointLight->quadraticAttenuation = 0.f;
+ pointLight->spotExponent = 0.0f;
+
+ ent = CreateEntity();
+ transform = AddComponent(ent, "Transform");
+ transform->Position = glm::vec3(10.f, 0.f, 0.f);
+ model = AddComponent(ent, "Model");
+ model->ModelFile = "ship.obj";
+
ent = CreateEntity();
transform = AddComponent(ent, "Transform");
transform->Position = glm::vec3(0.f, 0.f, 0.f);
model = AddComponent(ent, "Model");
model->ModelFile = "ship.obj";
- auto soundEmitter = AddComponent(ent, "SoundEmitter");
- soundEmitter->Gain = 1;
- soundEmitter->MaxDistance = 10;
- soundEmitter->Loop = true;
- soundEmitter->ReferenceDistance = 0.1;
- soundEmitter->Pitch = 1;
- GetSystem("SoundSystem")->PlaySound(soundEmitter, "Sounds/hallelujah.wav");
+// auto soundEmitter = AddComponent(ent, "SoundEmitter");
+// soundEmitter->Gain = 1;
+// soundEmitter->MaxDistance = 10;
+// soundEmitter->Loop = true;
+// soundEmitter->ReferenceDistance = 0.1;
+// soundEmitter->Pitch = 1;
+// GetSystem("SoundSystem")->PlaySound(soundEmitter, "Sounds/hallelujah.wav");
-
ent = CreateEntity();
SetProperty(ent, "Name", std::string("Camera"));
transform = AddComponent(ent, "Transform");
diff --git a/Escape-the-Dawn/HQ_Movie cycle.mtl b/Escape-the-Dawn/HQ_Movie cycle.mtl
new file mode 100644
index 0000000..b788407
--- /dev/null
+++ b/Escape-the-Dawn/HQ_Movie cycle.mtl
@@ -0,0 +1,150 @@
+#
+# Wavefront material file
+# Converted by the DEEP Exploration Deep Exploration 6.5 x64 6.5.0.9182
+# Right Hemisphere, LTD
+# http://www.righthemisphere.com/
+#
+
+newmtl MG_MovieCycle_Body_MI
+Ka 0 0 0
+Kd 0 0 0
+Ks 1 1 1
+illum 2
+Ns 32
+map_Kd MG_MovieCycle_BodyHeadLight_EMSS.tga
+map_bump MG_MovieCycle_Body_NORM.tga
+bump MG_MovieCycle_Body_NORM.tga
+map_opacity
+map_d
+refl
+map_kS MG_MovieCycle_Body_SPEC.tga
+map_kA
+map_Ns
+
+newmtl MG_MovieCycle_Glass_MI
+Ka 0 0 0
+Kd 1 1 1
+Ks 0.84 0.84 0.84
+illum 2
+Ns 33.6359
+map_Kd Glass.tga
+map_bump
+bump
+map_opacity Glass.tga
+map_d Glass.tga
+refl
+map_kS
+map_kA
+map_Ns
+
+newmtl MG_MovieCycle_Tire_MI
+Ka 0 0 0
+Kd 1 1 1
+Ks 0 0 0
+illum 2
+Ns 10
+map_Kd MG_MovieCycle_Tire_EMSS.tga
+map_bump MG_MovieCycle_Tire_NORM.tga
+bump MG_MovieCycle_Tire_NORM.tga
+map_opacity
+map_d
+refl
+map_kS
+map_kA
+map_Ns
+
+newmtl MG_MovieCycle_Engine_MI
+Ka 0 0 0
+Kd 1 1 1
+Ks 0 0 0
+illum 2
+Ns 10
+map_Kd MG_MovieCycle_Engine_EMSS.tga
+map_bump MG_MovieCycle_Engine_NORM.tga
+bump MG_MovieCycle_Engine_NORM.tga
+map_opacity
+map_d
+refl
+map_kS
+map_kA
+map_Ns
+
+newmtl MG_MovieCycle_PlayerBody_MI
+Ka 0 0 0
+Kd 1 1 1
+Ks 1 1 1
+illum 2
+Ns 10
+map_Kd MG_Player_Body_EMSS.tga
+map_bump MG_Player_Body_NORM.tga
+bump MG_Player_Body_NORM.tga
+map_opacity
+map_d
+refl
+map_kS MG_Player_Body_SPEC.tga
+map_kA
+map_Ns
+
+newmtl MG_MovieCycle_PlayerHelmet_MI
+Ka 0 0 0
+Kd 1 1 1
+Ks 1 1 1
+illum 2
+Ns 6.27667
+map_Kd MG_Player_Helmet_EMSS.tga
+map_bump MG_Player_Helmet_NORM.tga
+bump MG_Player_Helmet_NORM.tga
+map_opacity
+map_d
+refl
+map_kS MG_Player_Helmet_SPEC.tga
+map_kA
+map_Ns
+
+newmtl MG_MovieCycle_PlayerDisc_MI
+Ka 0 0 0
+Kd 1 1 1
+Ks 1 1 1
+illum 2
+Ns 10
+map_Kd MG_Player_Disc_EMSS.tga
+map_bump MG_Player_Disc_NORM.tga
+bump MG_Player_Disc_NORM.tga
+map_opacity
+map_d
+refl
+map_kS MG_Player_Disc_SPEC.tga
+map_kA
+map_Ns
+
+newmtl MG_MovieCycle_PlayerBaton_MI
+Ka 0 0 0
+Kd 1 1 1
+Ks 1 1 1
+illum 2
+Ns 10
+map_Kd MG_Player_Baton_EMSS.tga
+map_bump MG_Player_Baton_NORM.tga
+bump MG_Player_Baton_NORM.tga
+map_opacity
+map_d
+refl
+map_kS MG_Player_Baton_SPEC.tga
+map_kA
+map_Ns
+
+newmtl Explorer_Default
+Ka 0.117647 0.117647 0.117647
+Kd 0.752941 0.752941 0.752941
+Ks 0.752941 0.752941 0.752941
+illum 2
+Ns 8
+map_Kd
+map_bump
+bump
+map_opacity
+map_d
+refl
+map_kS
+map_kA
+map_Ns
diff --git a/Escape-the-Dawn/Renderer.cpp b/Escape-the-Dawn/Renderer.cpp
index 3268949..7253a7c 100644
--- a/Escape-the-Dawn/Renderer.cpp
+++ b/Escape-the-Dawn/Renderer.cpp
@@ -67,10 +67,13 @@ void Renderer::Draw(double _dt)
glUniformMatrix4fv(glGetUniformLocation(m_ShaderProgram.GetHandle(), "MVP"), 1, GL_FALSE, glm::value_ptr(MVP));
glUniformMatrix4fv(glGetUniformLocation(m_ShaderProgram.GetHandle(), "model"), 1, GL_FALSE, glm::value_ptr(ModelsToRender[i]->ModelMatrix));
glUniformMatrix4fv(glGetUniformLocation(m_ShaderProgram.GetHandle(), "view"), 1, GL_FALSE, glm::value_ptr(m_Camera->ViewMatrix()));
- glUniform3fv(glGetUniformLocation(m_ShaderProgram.GetHandle(), "lightPosition"), 1, glm::value_ptr(glm::vec3(2.0f, 4.0f, 1.0f)));
- glUniform1f(glGetUniformLocation(m_ShaderProgram.GetHandle(), "constantAttenuation"), 1.5f);
- glUniform1f(glGetUniformLocation(m_ShaderProgram.GetHandle(), "linearAttenuation"), 0.0f);
- glUniform1f(glGetUniformLocation(m_ShaderProgram.GetHandle(), "quadraticAttenuation"), 0.0f);
+ glUniform3fv(glGetUniformLocation(m_ShaderProgram.GetHandle(), "position"), 2, Light_position.data());
+ glUniform3fv(glGetUniformLocation(m_ShaderProgram.GetHandle(), "specular"), 2, Light_specular.data());
+ glUniform3fv(glGetUniformLocation(m_ShaderProgram.GetHandle(), "diffuse"), 2, Light_diffuse.data());
+ glUniform1fv(glGetUniformLocation(m_ShaderProgram.GetHandle(), "constantAttenuation"), 2, Light_constantAttenuation.data());
+ glUniform1fv(glGetUniformLocation(m_ShaderProgram.GetHandle(), "linearAttenuation"), 2, Light_linearAttenuation.data());
+ glUniform1fv(glGetUniformLocation(m_ShaderProgram.GetHandle(), "quadraticAttenuation"), 2, Light_quadraticAttenuation.data());
+ glUniform1fv(glGetUniformLocation(m_ShaderProgram.GetHandle(), "spotExponent"), 2, Light_spotExponent.data());
glBindVertexArray(ModelsToRender[i]->model->VAO);
glDrawArrays(GL_TRIANGLES, 0, ModelsToRender[i]->model->Vertices.size());
@@ -98,7 +101,32 @@ void Renderer::AddModelToDraw(Model* _model, glm::vec3 _position, glm::quat _ori
ModelsToRender.push_back(new ModelData(_model, ModelMatrix));
}
-//Fixa med shaders, lägga in alla verts osv.
+void Renderer::AddPointLightToDraw(
+ glm::vec3 _position,
+ glm::vec3 _specular,
+ glm::vec3 _diffuse,
+ float _constantAttenuation,
+ float _linearAttenuation,
+ float _quadraticAttenuation,
+ float _spotExponent
+ )
+{
+ Light_position.push_back(_position.x);
+ Light_position.push_back(_position.y);
+ Light_position.push_back(_position.z);
+ Light_specular.push_back(_specular.x);
+ Light_specular.push_back(_specular.y);
+ Light_specular.push_back(_specular.z);
+ Light_diffuse.push_back(_diffuse.x);
+ Light_diffuse.push_back(_diffuse.y);
+ Light_diffuse.push_back(_diffuse.z);
+ Light_constantAttenuation.push_back(_constantAttenuation);
+ Light_linearAttenuation.push_back(_linearAttenuation);
+ Light_quadraticAttenuation.push_back(_quadraticAttenuation);
+ Light_spotExponent.push_back(_spotExponent);
+
+}
+
void Renderer::LoadContent()
{
diff --git a/Escape-the-Dawn/Renderer.h b/Escape-the-Dawn/Renderer.h
index cfeaa9f..9cc28a4 100644
--- a/Escape-the-Dawn/Renderer.h
+++ b/Escape-the-Dawn/Renderer.h
@@ -24,6 +24,7 @@
#include "Camera.h"
#include "ShaderProgram.h"
#include "Model.h"
+#include "Components/PointLight.h"
class Renderer
{
@@ -43,6 +44,13 @@ public:
};
std::vector ModelsToRender;
+ std::vector Light_position;
+ std::vector Light_specular;
+ std::vector Light_diffuse;
+ std::vector Light_constantAttenuation;
+ std::vector Light_linearAttenuation;
+ std::vector Light_quadraticAttenuation;
+ std::vector Light_spotExponent;
Renderer();
@@ -52,6 +60,15 @@ public:
void AddModelToDraw(Model*, glm::vec3, glm::quat);
void AddTextToDraw();
+ void AddPointLightToDraw(
+ glm::vec3 _position,
+ glm::vec3 _specular,
+ glm::vec3 _diffuse,
+ float _constantAttenuation,
+ float _linearAttenuation,
+ float _quadraticAttenuation,
+ float _spotExponent
+ );
void LoadContent();
diff --git a/Escape-the-Dawn/Sci-fi_Tropical_city.mtl b/Escape-the-Dawn/Sci-fi_Tropical_city.mtl
new file mode 100644
index 0000000..2d206fc
--- /dev/null
+++ b/Escape-the-Dawn/Sci-fi_Tropical_city.mtl
@@ -0,0 +1,40 @@
+newmtl material_1
+d 1
+Ns 1
+Ni 0
+Ka 0.121569 0.121569 0.121569
+Kd 1 1 1
+Ks 0 0 0
+Km 0
+map_Kd /Maps/snd2_01.jpg
+
+newmtl material_1_mountain
+d 1
+Ns 1
+Ni 0
+Ka 0 0 0
+Kd 0.501961 0.501961 0.501961
+Ks 0 0 0
+Km 0
+map_Kd /Maps/mtlm1.jpg
+
+newmtl default
+d 1
+Ns 1
+Ni 0
+Ka 0 0 0
+Kd 0.290196 0.282353 0.254902
+Ks 1 1 1
+Km 0
+map_Kd /Maps/1thr.jpg
+
+newmtl default_bldgs2
+d 1
+Ns 1
+Ni 0
+Ka 0 0 0
+Kd 1 1 1
+Ks 1 1 1
+Km 0
+map_Kd /Maps/axq2.jpg
+
diff --git a/Escape-the-Dawn/Shaders/Fragment.glsl b/Escape-the-Dawn/Shaders/Fragment.glsl
index 52c1792..5740114 100644
--- a/Escape-the-Dawn/Shaders/Fragment.glsl
+++ b/Escape-the-Dawn/Shaders/Fragment.glsl
@@ -2,74 +2,92 @@
uniform mat4 model;
uniform mat4 view;
-
+
layout(binding=0) uniform sampler2D texture;
-uniform vec3 lightPosition;
-uniform float constantAttenuation;
-uniform float linearAttenuation;
-uniform float quadraticAttenuation;
+const int numberOfLights = 2;
-in VertexData {
+uniform vec4 position[numberOfLights];
+uniform vec4 specular[numberOfLights];
+uniform vec4 diffuse[numberOfLights];
+uniform float constantAttenuation[numberOfLights];
+uniform float linearAttenuation[numberOfLights];
+uniform float quadraticAttenuation[numberOfLights];
+uniform float spotExponent[numberOfLights];
+
+ in VertexData {
vec3 Position;
vec3 Normal;
vec2 TextureCoord;
} Input;
+vec3 scene_ambient = vec3(0.2, 0.2, 0.2);
+
out vec4 fragmentColor;
void main() {
+
// Texture
vec4 texel = texture2D(texture, Input.TextureCoord);
- //vec4 texel1 = texture2D(texture1, Input.TextureCoord * 32.0);
- //vec4 texel2 = texture2D(texture2, Input.TextureCoord * 100.0);
- //vec4 blend = texture2D(blendmap, Input.TextureCoord);
-
//vec4 texel = (blend.x * texel0) + (blend.y * texel1) + (blend.z * texel2);
//
// Phong shading
//
- // Light
- //vec3 lightPosition = vec3(0, 0, 2);
- vec3 Ls = vec3(1.0, 1.0, 0.9); // Specular light
- vec3 Ld = vec3(1.0, 1.0, 0.9); // Diffuse light
- vec3 La = vec3(0.6, 0.6, 0.6); // Ambient light
-
- // Object
+ // Ambient light
+ vec3 La = scene_ambient; // Ambient light
vec3 Ks = vec3(0.3, 0.3, 0.3); // Specular reflectance
vec3 Kd = vec3(1.0, 1.0, 1.0); // Diffuse reflectance
vec3 Ka = vec3(1.0, 1.0, 1.0); // Ambient reflectance
- vec3 lightPosView = vec3(view * vec4(lightPosition, 1.0));
+ vec3 totalLighting = La * Ka;
+
+ float attenuation;
+
+ for(int i = 0; i < numberOfLights; i++)
+ {
+ // Light
+ //vec3 lightPosition = vec3(0, 0, 2);
+ vec3 Ls = specular[i]; // Specular light
+ vec3 Ld = diffuse[i]; // Diffuse light
+
+
+ // Object
+
+ vec3 lightPosView = vec3(view * vec4(LightPos[i], 1.0));
vec3 surfacePosition = vec3(model * vec4(Input.Position, 1.0));
vec3 surfacePosView = vec3(view * vec4(surfacePosition, 1.0));
vec3 surfaceToLight = normalize(lightPosView - surfacePosView);
mat3 normalMatrix = transpose(inverse(mat3(view * model)));
vec3 surfaceNormal = normalize(normalMatrix * Input.Normal);
+
+ float dist = length(LightPos[i] - surfacePosition);
+ attenuation = 1.0 / (constantAttenuation
+ + linearAttenuation * dist
+ + quadraticAttenuation * pow(dist, 2.0));
+
+ attenuation = attenuation * pow(clampedCosine, spotExponent[i]);
+
+ // Diffuse light
+ float dotProd = dot(surfaceToLight, surfaceNormal);
+ dotProd = max(dotProd, 0.0);
+
+ Id = Ld * Kd * abs(dotProd) * attenuation;
+
// Specular light
vec3 reflection = reflect(-surfaceToLight, surfaceNormal);
float dotSpecular = dot(reflection, normalize(-surfacePosView));
dotSpecular = max(dotSpecular, 0.0);
float specularFactor = pow(dotSpecular, 30.0); // Specular factor
- vec3 Is = Ls * Ks * specularFactor;
+
+ Is = attenuation * Ls * Ks * specularFactor;
- // Diffuse light
- float dotProd = dot(surfaceToLight, surfaceNormal);
- dotProd = max(dotProd, 0.0);
- vec3 Id = Ld * Kd * abs(dotProd);
-
- // Ambient light
- vec3 Ia = La * Ka;
-
- float dist = length(lightPosition - surfacePosition);
- float attenuation = 1.0 / (constantAttenuation
- + linearAttenuation * dist
- + quadraticAttenuation * pow(dist, 2.0));
-
- fragmentColor = vec4((Is + Id) * attenuation + Ia, 1.0) * texel;
+ totalLighting = totalLighting + Id + Is;
+ }
+ fragmentColor = vec4(totalLighting, 1.0) * texel;
+
//fragmentColor = vec4(Id, 1.0) * texel;
diff --git a/Escape-the-Dawn/Systems/RenderSystem.cpp b/Escape-the-Dawn/Systems/RenderSystem.cpp
index 1db226c..66961d6 100644
--- a/Escape-the-Dawn/Systems/RenderSystem.cpp
+++ b/Escape-the-Dawn/Systems/RenderSystem.cpp
@@ -25,6 +25,19 @@ void Systems::RenderSystem::UpdateEntity( double dt, EntityID entity, EntityID p
Model* model = m_CachedModels[modelComponent->ModelFile];
m_Renderer->AddModelToDraw(model, transformComponent->Position, transformComponent->Orientation);
}
+ auto pointLightComponent = m_World->GetComponent(entity, "PointLight");
+ if (pointLightComponent != nullptr)
+ {
+
+ m_Renderer->AddPointLightToDraw(
+ transformComponent->Position,
+ pointLightComponent->Specular,
+ pointLightComponent->Diffuse,
+ pointLightComponent->constantAttenuation,
+ pointLightComponent->linearAttenuation,
+ pointLightComponent->quadraticAttenuation,
+ pointLightComponent->spotExponent);
+ }
auto cameraComponent = m_World->GetComponent(entity, "Camera");
if (cameraComponent != nullptr)
{
diff --git a/Escape-the-Dawn/tower bridge.mtl b/Escape-the-Dawn/tower bridge.mtl
new file mode 100644
index 0000000..24f260d
--- /dev/null
+++ b/Escape-the-Dawn/tower bridge.mtl
@@ -0,0 +1,115 @@
+# Max2Mtl Version 4.0 Mar 10th, 2001
+#
+# Multi/Sub Material__10791 (9) to come
+#
+newmtl Material__46
+Ka 0.1 0.1 0.1
+Kd 0.5 0.5 0.5
+Ks 0.9 0.9 0.9
+d 1.0
+Ns 0.5
+illum 2
+#
+newmtl Material__47
+Ka 0.1 0.1 0.1
+Kd 0.5 0.5 0.5
+Ks 0.9 0.9 0.9
+d 1.0
+Ns 0.5
+illum 2
+#
+newmtl Material__48
+Ka 0.1 0.1 0.1
+Kd 0.5 0.5 0.5
+Ks 0.9 0.9 0.9
+d 1.0
+Ns 0.5
+illum 2
+#
+newmtl Material__49
+Ka 0.1 0.1 0.1
+Kd 0.5 0.5 0.5
+Ks 0.9 0.9 0.9
+d 1.0
+Ns 0.5
+illum 2
+#
+newmtl Material__50
+Ka 0.1 0.1 0.1
+Kd 0.5 0.5 0.5
+Ks 0.9 0.9 0.9
+d 1.0
+Ns 0.5
+illum 2
+#
+newmtl Material__51
+Ka 0.1 0.1 0.1
+Kd 0.5 0.5 0.5
+Ks 0.9 0.9 0.9
+d 1.0
+Ns 0.5
+illum 2
+#
+newmtl Material__52
+Ka 0.1 0.1 0.1
+Kd 0.5 0.5 0.5
+Ks 0.9 0.9 0.9
+d 1.0
+Ns 0.5
+illum 2
+#
+newmtl Material__10657
+Ka 0.6 0.6 0.6
+Kd 0.6 0.6 0.6
+Ks 0.9 0.9 0.9
+d 1.0
+Ns 0.0
+illum 2
+#
+newmtl Material__10658
+Ka 0.6 0.6 0.6
+Kd 0.6 0.6 0.6
+Ks 0.9 0.9 0.9
+d 1.0
+Ns 0.0
+illum 2
+#
+# Multi/Sub Material__10791 done
+#
+# Multi/Sub Material__10737 (3) to come
+#
+newmtl Material__10678
+Ka 1.0 1.0 1.0
+Kd 1.0 1.0 1.0
+Ks 0.9 0.9 0.9
+d 1.0
+Ns 0.0
+illum 2
+#
+newmtl Material__69
+Ka 0.6 0.6 0.6
+Kd 0.6 0.6 0.6
+Ks 0.9 0.9 0.9
+d 1.0
+Ns 0.0
+illum 2
+#
+newmtl Material__10677
+Ka 0.6 0.6 0.6
+Kd 0.6 0.6 0.6
+Ks 0.9 0.9 0.9
+d 1.0
+Ns 0.0
+illum 2
+#
+# Multi/Sub Material__10737 done
+#
+newmtl 03_-_Default
+Ka 0.5 0.5 0.5
+Kd 0.5 0.5 0.5
+Ks 0.9 0.9 0.9
+d 1.0
+Ns 0.0
+illum 2
+#
+# EOF