kitou commited on
Commit
03a982d
1 Parent(s): 1b5f6fc

Upload 44 files

Browse files
Files changed (45) hide show
  1. .gitattributes +8 -0
  2. vae/Irand/island/json/cameras/beachCam.json +29 -0
  3. vae/Irand/island/json/cameras/birdseyeCam.json +29 -0
  4. vae/Irand/island/json/cameras/dunesACam.json +29 -0
  5. vae/Irand/island/json/cameras/grassCam.json +29 -0
  6. vae/Irand/island/json/cameras/palmsCam.json +29 -0
  7. vae/Irand/island/json/cameras/rootsCam.json +29 -0
  8. vae/Irand/island/json/cameras/shotCam.json +29 -0
  9. vae/Irand/island/obj/isBayCedarA1/archives/archivebaycedar0001_mod.hier +3 -0
  10. vae/Irand/island/obj/isBayCedarA1/archives/archivebaycedar0001_mod.mtl +4 -0
  11. vae/Irand/island/obj/isBayCedarA1/archives/archivebaycedar0001_mod.obj +1690 -0
  12. vae/Irand/island/obj/isBayCedarA1/isBayCedarA1.hier +0 -0
  13. vae/Irand/island/obj/isBayCedarA1/isBayCedarA1.mtl +3 -0
  14. vae/Irand/island/obj/isBayCedarA1/isBayCedarA1.obj +3 -0
  15. vae/Irand/island/obj/isBayCedarA1/isBayCedarA1_bonsaiA.hier +0 -0
  16. vae/Irand/island/obj/isBayCedarA1/isBayCedarA1_bonsaiA.mtl +3 -0
  17. vae/Irand/island/obj/isBayCedarA1/isBayCedarA1_bonsaiA.obj +3 -0
  18. vae/Irand/island/obj/isBayCedarA1/isBayCedarA1_bonsaiB.hier +0 -0
  19. vae/Irand/island/obj/isBayCedarA1/isBayCedarA1_bonsaiB.mtl +3 -0
  20. vae/Irand/island/obj/isBayCedarA1/isBayCedarA1_bonsaiB.obj +3 -0
  21. vae/Irand/island/obj/isBayCedarA1/isBayCedarA1_bonsaiC.hier +0 -0
  22. vae/Irand/island/obj/isBayCedarA1/isBayCedarA1_bonsaiC.mtl +3 -0
  23. vae/Irand/island/obj/isBayCedarA1/isBayCedarA1_bonsaiC.obj +3 -0
  24. vae/Irand/island/ref/pbrtRenders/beachCam.png +0 -0
  25. vae/Irand/island/ref/pbrtRenders/birdseyeCam.png +0 -0
  26. vae/Irand/island/ref/pbrtRenders/dunesACam.png +0 -0
  27. vae/Irand/island/ref/pbrtRenders/flowersCam.png +0 -0
  28. vae/Irand/island/ref/pbrtRenders/grassCam.png +0 -0
  29. vae/Irand/island/ref/pbrtRenders/palmsCam.png +0 -0
  30. vae/Irand/island/ref/pbrtRenders/rootsCam.png +0 -0
  31. vae/Irand/island/ref/pbrtRenders/shotCam.png +0 -0
  32. vae/Irand/island/scripts/embree/.DS_Store +0 -0
  33. vae/Irand/island/scripts/embree/._.DS_Store +0 -0
  34. vae/Irand/island/scripts/embree/._README.txt +0 -0
  35. vae/Irand/island/scripts/embree/._embreeConvert.py +0 -0
  36. vae/Irand/island/scripts/embree/._embreeConvertAll.sh +0 -0
  37. vae/Irand/island/scripts/embree/._embreeutils.py +0 -0
  38. vae/Irand/island/scripts/embree/README.txt +25 -0
  39. vae/Irand/island/scripts/embree/embreeConvert.py +201 -0
  40. vae/Irand/island/scripts/embree/embreeConvertAll.sh +52 -0
  41. vae/Irand/island/scripts/embree/embreeutils.py +896 -0
  42. vae/Irand/island/textures/isPalmDead/Color/rootball0001_geo.ptx +3 -0
  43. vae/Irand/island/textures/isPalmDead/Color/trunk0001_geo.ptx +3 -0
  44. vae/Irand/island/textures/isPalmDead/Displacement/rootball0001_geo.ptx +3 -0
  45. vae/Irand/island/textures/isPalmDead/Displacement/trunk0001_geo.ptx +3 -0
.gitattributes CHANGED
@@ -1024,3 +1024,11 @@ vae/cm3d/GameData/voice_personal_om001.arc filter=lfs diff=lfs merge=lfs -text
1024
  vae/cm3d/GameData/voice_personal_om002.arc filter=lfs diff=lfs merge=lfs -text
1025
  vae/cm3d/GameData/voice.arc filter=lfs diff=lfs merge=lfs -text
1026
  vae/cm3d/GameData/voice2.arc filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
 
 
1024
  vae/cm3d/GameData/voice_personal_om002.arc filter=lfs diff=lfs merge=lfs -text
1025
  vae/cm3d/GameData/voice.arc filter=lfs diff=lfs merge=lfs -text
1026
  vae/cm3d/GameData/voice2.arc filter=lfs diff=lfs merge=lfs -text
1027
+ vae/Irand/island/obj/isBayCedarA1/isBayCedarA1_bonsaiA.obj filter=lfs diff=lfs merge=lfs -text
1028
+ vae/Irand/island/obj/isBayCedarA1/isBayCedarA1_bonsaiB.obj filter=lfs diff=lfs merge=lfs -text
1029
+ vae/Irand/island/obj/isBayCedarA1/isBayCedarA1_bonsaiC.obj filter=lfs diff=lfs merge=lfs -text
1030
+ vae/Irand/island/obj/isBayCedarA1/isBayCedarA1.obj filter=lfs diff=lfs merge=lfs -text
1031
+ vae/Irand/island/textures/isPalmDead/Color/rootball0001_geo.ptx filter=lfs diff=lfs merge=lfs -text
1032
+ vae/Irand/island/textures/isPalmDead/Color/trunk0001_geo.ptx filter=lfs diff=lfs merge=lfs -text
1033
+ vae/Irand/island/textures/isPalmDead/Displacement/rootball0001_geo.ptx filter=lfs diff=lfs merge=lfs -text
1034
+ vae/Irand/island/textures/isPalmDead/Displacement/trunk0001_geo.ptx filter=lfs diff=lfs merge=lfs -text
vae/Irand/island/json/cameras/beachCam.json ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "fov": 54.43222311461497,
3
+ "ratio": 2.386946386946387,
4
+ "name": "beachCam",
5
+ "eye": [
6
+ -510.5239066714681,
7
+ 87.30874393630907,
8
+ 181.77019700660784
9
+ ],
10
+ "focalLength": 34.999999999999986,
11
+ "centerOfInterest": 712.3912120407614,
12
+ "lensRadius": 0.0031249999999999984,
13
+ "up": [
14
+ 0.0738708545527661,
15
+ 0.996864591331903,
16
+ -0.02835636430013811
17
+ ],
18
+ "screenwindow": [
19
+ -1.0,
20
+ 1.0,
21
+ -0.4189453125,
22
+ 0.4189453125
23
+ ],
24
+ "look": [
25
+ 152.46530457260906,
26
+ 30.939794764162578,
27
+ -72.72751680648216
28
+ ]
29
+ }
vae/Irand/island/json/cameras/birdseyeCam.json ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "fov": 54.43222311461497,
3
+ "ratio": 2.386946386946387,
4
+ "name": "hibiscusCam",
5
+ "eye": [
6
+ 3.5526606717518376,
7
+ 850.6418895294337,
8
+ 747.5497754610369
9
+ ],
10
+ "focalLength": 34.99999999999999,
11
+ "centerOfInterest": 1309.1745591230474,
12
+ "lensRadius": 0.0031249999999999993,
13
+ "up": [
14
+ 0.1370609562125062,
15
+ 0.7929456689992689,
16
+ -0.5936762251407878
17
+ ],
18
+ "screenwindow": [
19
+ -1.0,
20
+ 1.0,
21
+ -0.4189453125,
22
+ 0.4189453125
23
+ ],
24
+ "look": [
25
+ 237.07531671546286,
26
+ 52.9718477246937,
27
+ -263.9479752910547
28
+ ]
29
+ }
vae/Irand/island/json/cameras/dunesACam.json ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "fov": 54.43222311461497,
3
+ "ratio": 2.386946386946387,
4
+ "name": "dunesACam",
5
+ "eye": [
6
+ -71.3357952505853,
7
+ 78.734578313642,
8
+ 108.92994817257102
9
+ ],
10
+ "focalLength": 34.99999999999999,
11
+ "centerOfInterest": 452.4766891356024,
12
+ "lensRadius": 0.0031249999999999993,
13
+ "up": [
14
+ 0.002016176422133449,
15
+ 0.9999895730713552,
16
+ 0.004097411524808375
17
+ ],
18
+ "screenwindow": [
19
+ -1.0,
20
+ 1.0,
21
+ -0.4189453125,
22
+ 0.4189453125
23
+ ],
24
+ "look": [
25
+ -271.1048187567149,
26
+ 80.80085405252899,
27
+ -297.0543150237934
28
+ ]
29
+ }
vae/Irand/island/json/cameras/grassCam.json ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "fov": 54.43222311461497,
3
+ "ratio": 2.386946386946387,
4
+ "name": "grassCam",
5
+ "eye": [
6
+ -5.171248679251219,
7
+ 20.334400261222573,
8
+ -89.97306056602213
9
+ ],
10
+ "focalLength": 34.999999999999986,
11
+ "centerOfInterest": 32.15778880265155,
12
+ "lensRadius": 0.0031249999999999984,
13
+ "up": [
14
+ 0.3061184080739167,
15
+ 0.9236231643732346,
16
+ -0.23067676621511765
17
+ ],
18
+ "screenwindow": [
19
+ -1.0,
20
+ 1.0,
21
+ -0.4189453125,
22
+ 0.4189453125
23
+ ],
24
+ "look": [
25
+ 18.549566601169055,
26
+ 8.00826275343514,
27
+ -107.84797699232291
28
+ ]
29
+ }
vae/Irand/island/json/cameras/palmsCam.json ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "fov": 54.43222311461497,
3
+ "ratio": 2.386946386946387,
4
+ "name": "palmsCam",
5
+ "eye": [
6
+ -124.02546471925854,
7
+ 405.62214562283157,
8
+ 369.1730463283022
9
+ ],
10
+ "focalLength": 34.999999999999986,
11
+ "centerOfInterest": 712.3912120407333,
12
+ "lensRadius": 0.0031249999999999984,
13
+ "up": [
14
+ -0.2003759454709524,
15
+ 0.9725259665269878,
16
+ 0.11850200381162401
17
+ ],
18
+ "screenwindow": [
19
+ -1.0,
20
+ 1.0,
21
+ -0.4189453125,
22
+ 0.4189453125
23
+ ],
24
+ "look": [
25
+ 472.3129244023174,
26
+ 571.462848388009,
27
+ 16.499506125608377
28
+ ]
29
+ }
vae/Irand/island/json/cameras/rootsCam.json ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "fov": 54.43222311461497,
3
+ "ratio": 2.386946386946387,
4
+ "name": "rootsCam",
5
+ "eye": [
6
+ -53.247679762217224,
7
+ 63.459326699391625,
8
+ -57.57774331317834
9
+ ],
10
+ "focalLength": 34.99999999999999,
11
+ "centerOfInterest": 15.69172495060073,
12
+ "lensRadius": 0.0031249999999999993,
13
+ "up": [
14
+ 0.2638047892040311,
15
+ 0.9111276124080613,
16
+ -0.31662834222571157
17
+ ],
18
+ "screenwindow": [
19
+ -1.0,
20
+ 1.0,
21
+ -0.4189453125,
22
+ 0.4189453125
23
+ ],
24
+ "look": [
25
+ -44.0959264818672,
26
+ 56.9923848671219,
27
+ -68.5620187630634
28
+ ]
29
+ }
vae/Irand/island/json/cameras/shotCam.json ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "fov": 69.50460587892012,
3
+ "ratio": 2.386946386946387,
4
+ "name": "shotCam",
5
+ "eye": [
6
+ -1139.01589265,
7
+ 23.28673313185658,
8
+ 1479.7947229
9
+ ],
10
+ "focalLength": 35.0,
11
+ "centerOfInterest": 1675.338285281147,
12
+ "lensRadius": 0.0031250000000000006,
13
+ "up": [
14
+ -0.10714942339176316,
15
+ 0.9916909792130254,
16
+ 0.07118990669600059
17
+ ],
18
+ "screenwindow": [
19
+ -1.0,
20
+ 1.0,
21
+ -0.4189453125,
22
+ 0.4189453125
23
+ ],
24
+ "look": [
25
+ 244.81433650665076,
26
+ 238.8071478842799,
27
+ 560.3801168449178
28
+ ]
29
+ }
vae/Irand/island/obj/isBayCedarA1/archives/archivebaycedar0001_mod.hier ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ {
2
+ "archivebaycedar0001_geo": "|isBayCedarA1|xgBonsai|archivebaycedar0001_mod"
3
+ }
vae/Irand/island/obj/isBayCedarA1/archives/archivebaycedar0001_mod.mtl ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ newmtl petiole
2
+ newmtl leaves
3
+ newmtl barkSimple
4
+ newmtl bark
vae/Irand/island/obj/isBayCedarA1/archives/archivebaycedar0001_mod.obj ADDED
@@ -0,0 +1,1690 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # This file uses centimeters as units for non-parametric coordinates.
2
+
3
+ mtllib archivebaycedar0001_mod.mtl
4
+ g default
5
+ v -0.018978 0.219266 -0.007130
6
+ v 0.018978 0.219266 -0.007130
7
+ v -0.023540 0.915557 0.093050
8
+ v 0.023540 0.915557 0.093050
9
+ v -0.074762 0.834604 0.088714
10
+ v 0.074762 0.834604 0.088714
11
+ v -0.031657 0.813453 0.102260
12
+ v 0.031657 0.813453 0.102260
13
+ v 0.016124 0.863905 0.103204
14
+ v -0.016124 0.863905 0.103204
15
+ v -0.007105 0.216132 0.002794
16
+ v 0.007105 0.216132 0.002794
17
+ v 0.073084 0.712942 0.078187
18
+ v 0.029929 0.701368 0.090371
19
+ v -0.029929 0.701368 0.090371
20
+ v -0.073084 0.712942 0.078187
21
+ v -0.061254 0.564322 0.059300
22
+ v -0.024852 0.555102 0.070511
23
+ v 0.024852 0.555102 0.070511
24
+ v 0.061254 0.564322 0.059300
25
+ v -0.045721 0.413589 0.034450
26
+ v -0.018239 0.406925 0.044918
27
+ v 0.018239 0.406925 0.044918
28
+ v 0.045721 0.413589 0.034450
29
+ v -0.001652 0.210822 0.020336
30
+ v -0.012687 0.210822 -0.015980
31
+ v 0.129795 0.922294 -0.014836
32
+ v 0.116108 0.922294 -0.059882
33
+ v 0.136559 0.839305 0.036643
34
+ v 0.093088 0.839305 -0.106422
35
+ v 0.135960 0.817075 -0.008226
36
+ v 0.117553 0.817075 -0.068805
37
+ v 0.125451 0.868861 -0.054970
38
+ v 0.134826 0.868861 -0.024116
39
+ v 0.004245 0.207233 0.006136
40
+ v 0.000114 0.207233 -0.007460
41
+ v 0.077522 0.714730 -0.099939
42
+ v 0.101167 0.702388 -0.062020
43
+ v 0.118569 0.702388 -0.004748
44
+ v 0.120017 0.714730 0.039916
45
+ v 0.091195 0.562777 0.036310
46
+ v 0.090893 0.552889 -0.001644
47
+ v 0.076443 0.552889 -0.049201
48
+ v 0.055578 0.562777 -0.080907
49
+ v 0.055481 0.408875 0.030927
50
+ v 0.057188 0.401640 0.001686
51
+ v 0.046582 0.401640 -0.033217
52
+ v 0.028896 0.408875 -0.056565
53
+ v 0.020032 0.202371 -0.004067
54
+ v -0.011580 0.202095 0.017071
55
+ v -0.063980 0.926497 -0.146826
56
+ v -0.103191 0.926154 -0.120606
57
+ v -0.015178 0.842062 -0.165111
58
+ v -0.139712 0.840972 -0.081838
59
+ v -0.057644 0.818337 -0.150600
60
+ v -0.110375 0.817875 -0.115340
61
+ v -0.100287 0.870993 -0.128915
62
+ v -0.073429 0.871228 -0.146874
63
+ v 0.004766 0.198141 -0.005426
64
+ v -0.007070 0.198037 0.002488
65
+ v -0.126854 0.713869 -0.064058
66
+ v -0.097159 0.700966 -0.097244
67
+ v -0.047306 0.701402 -0.130580
68
+ v -0.005115 0.714934 -0.145462
69
+ v 0.002386 0.560081 -0.111015
70
+ v -0.033747 0.549158 -0.099280
71
+ v -0.075144 0.548796 -0.071598
72
+ v -0.099648 0.559188 -0.042787
73
+ v 0.010219 0.403487 -0.069387
74
+ v -0.018189 0.395381 -0.062214
75
+ v -0.048570 0.395115 -0.041898
76
+ v -0.065941 0.402820 -0.018461
77
+ v -0.009719 0.193558 -0.018147
78
+ v 0.019751 0.193394 0.005963
79
+ v -0.136737 0.927496 0.125394
80
+ v -0.100183 0.927293 0.155300
81
+ v -0.166765 0.841366 0.081471
82
+ v -0.050669 0.840720 0.176452
83
+ v -0.140011 0.816562 0.117201
84
+ v -0.090853 0.816288 0.157419
85
+ v -0.107876 0.870417 0.153292
86
+ v -0.132914 0.870557 0.132808
87
+ v -0.006490 0.188750 -0.003261
88
+ v 0.004543 0.188688 0.005766
89
+ v -0.034799 0.711513 0.155182
90
+ v -0.074991 0.697559 0.136017
91
+ v -0.121466 0.697818 0.097994
92
+ v -0.148289 0.712144 0.062332
93
+ v -0.114324 0.555092 0.040516
94
+ v -0.092334 0.543460 0.071371
95
+ v -0.053742 0.543245 0.102944
96
+ v -0.019204 0.554563 0.118336
97
+ v -0.073537 0.396590 0.016241
98
+ v -0.058226 0.387846 0.041112
99
+ v -0.029903 0.387688 0.064284
100
+ v -0.002538 0.396195 0.074328
101
+ v -0.015042 0.184427 0.014581
102
+ v -0.000484 0.184427 -0.020674
103
+ v 0.192131 0.928309 0.104199
104
+ v 0.210189 0.928309 0.060469
105
+ v 0.154897 0.840464 0.144609
106
+ v 0.212249 0.840464 0.005722
107
+ v 0.180295 0.814783 0.108234
108
+ v 0.204580 0.814783 0.049425
109
+ v 0.207970 0.869856 0.067657
110
+ v 0.195601 0.869856 0.097611
111
+ v -0.001916 0.179150 0.007082
112
+ v 0.003534 0.179150 -0.006117
113
+ v 0.181499 0.709189 -0.005006
114
+ v 0.174171 0.694248 0.038884
115
+ v 0.151212 0.694248 0.094483
116
+ v 0.125433 0.709189 0.130764
117
+ v 0.087666 0.549946 0.102493
118
+ v 0.110357 0.537765 0.072279
119
+ v 0.129422 0.537765 0.026111
120
+ v 0.134657 0.549946 -0.011300
121
+ v 0.045496 0.389499 0.068389
122
+ v 0.064515 0.380255 0.046355
123
+ v 0.078507 0.380255 0.012471
124
+ v 0.080570 0.389499 -0.016549
125
+ v 0.018076 0.175320 0.010506
126
+ v -0.020010 0.175064 0.006834
127
+ v 0.051673 0.926858 -0.245353
128
+ v 0.004432 0.926541 -0.249908
129
+ v 0.100373 0.838108 -0.217761
130
+ v -0.049662 0.837101 -0.232228
131
+ v 0.057776 0.811078 -0.230399
132
+ v -0.005754 0.810651 -0.236524
133
+ v 0.011350 0.866697 -0.247406
134
+ v 0.043708 0.866914 -0.244286
135
+ v 0.006993 0.169411 0.000347
136
+ v -0.007266 0.169315 -0.001028
137
+ v -0.052402 0.704157 -0.194119
138
+ v -0.008299 0.688690 -0.199251
139
+ v 0.051764 0.689093 -0.193459
140
+ v 0.094266 0.705141 -0.179977
141
+ v 0.076433 0.544067 -0.128861
142
+ v 0.040683 0.530915 -0.141271
143
+ v -0.009191 0.530580 -0.146080
144
+ v -0.046495 0.543242 -0.140714
145
+ v 0.054271 0.382022 -0.071780
146
+ v 0.027476 0.371950 -0.083181
147
+ v -0.009127 0.371704 -0.086710
148
+ v -0.037484 0.381406 -0.080628
149
+ v 0.004706 0.166005 -0.020318
150
+ v 0.012271 0.165688 0.017271
151
+ v -0.274500 0.920171 0.026001
152
+ v -0.265117 0.919777 0.072625
153
+ v -0.259367 0.830750 -0.029203
154
+ v -0.229567 0.829501 0.118875
155
+ v -0.258239 0.802553 0.015193
156
+ v -0.245621 0.802024 0.077895
157
+ v -0.262823 0.858672 0.064957
158
+ v -0.269250 0.858941 0.033022
159
+ v -0.001629 0.159429 -0.006755
160
+ v 0.001203 0.159310 0.007318
161
+ v -0.187969 0.695674 0.109699
162
+ v -0.205232 0.679384 0.068831
163
+ v -0.217162 0.679884 0.009552
164
+ v -0.217101 0.696895 -0.035057
165
+ v -0.157738 0.535089 -0.033702
166
+ v -0.158826 0.521074 0.004133
167
+ v -0.148920 0.520659 0.053356
168
+ v -0.133321 0.534066 0.087622
169
+ v -0.091361 0.372646 -0.029945
170
+ v -0.094184 0.361803 -0.000975
171
+ v -0.086913 0.361499 0.035151
172
+ v -0.073136 0.371882 0.060614
173
+ v -0.021403 0.156277 0.001378
174
+ v 0.012515 0.156209 -0.016848
175
+ v 0.123043 0.912550 0.279222
176
+ v 0.165113 0.912466 0.256613
177
+ v 0.063370 0.822140 0.278008
178
+ v 0.196984 0.821874 0.206205
179
+ v 0.105017 0.793245 0.263088
180
+ v 0.161594 0.793133 0.232684
181
+ v 0.155567 0.850182 0.254729
182
+ v 0.126751 0.850239 0.270215
183
+ v -0.006684 0.149196 0.003287
184
+ v 0.006014 0.149171 -0.003537
185
+ v 0.172747 0.687277 0.164799
186
+ v 0.138092 0.669903 0.192756
187
+ v 0.084604 0.670009 0.221500
188
+ v 0.042131 0.687537 0.234991
189
+ v 0.022151 0.525215 0.172603
190
+ v 0.058487 0.510719 0.162168
191
+ v 0.102902 0.510630 0.138299
192
+ v 0.131625 0.524997 0.113773
193
+ v 0.002422 0.362586 0.102772
194
+ v 0.030821 0.351272 0.096685
195
+ v 0.063418 0.351208 0.079168
196
+ v 0.084135 0.362423 0.058860
197
+ v 0.006964 0.146498 0.020451
198
+ v -0.020453 0.146306 -0.006782
199
+ v 0.256901 0.904257 -0.221151
200
+ v 0.222893 0.904019 -0.254930
201
+ v 0.270148 0.813469 -0.160903
202
+ v 0.162141 0.812713 -0.268186
203
+ v 0.242689 0.783538 -0.195680
204
+ v 0.196956 0.783217 -0.241107
205
+ v 0.221795 0.840748 -0.243409
206
+ v 0.245089 0.840911 -0.220271
207
+ v 0.004263 0.138839 0.005976
208
+ v -0.006001 0.138767 -0.004220
209
+ v 0.124956 0.677507 -0.228943
210
+ v 0.161354 0.659539 -0.203332
211
+ v 0.204591 0.659842 -0.160384
212
+ v 0.230539 0.678245 -0.124068
213
+ v 0.171030 0.515443 -0.081987
214
+ v 0.149911 0.500165 -0.113393
215
+ v 0.114008 0.499913 -0.149055
216
+ v 0.082538 0.514823 -0.169887
217
+ v 0.104287 0.352607 -0.037969
218
+ v 0.089769 0.340603 -0.063118
219
+ v 0.063420 0.340418 -0.089291
220
+ v 0.038235 0.352144 -0.103579
221
+ v 0.017270 0.136686 -0.012390
222
+ v -0.000934 0.136277 0.021899
223
+ v -0.307643 0.889502 -0.196533
224
+ v -0.330223 0.888995 -0.154001
225
+ v -0.251186 0.799125 -0.225086
226
+ v -0.322901 0.797516 -0.090005
227
+ v -0.275857 0.768057 -0.187956
228
+ v -0.306224 0.767376 -0.130758
229
+ v -0.317171 0.825031 -0.155064
230
+ v -0.301705 0.825378 -0.184196
231
+ v 0.004334 0.128331 -0.005407
232
+ v -0.002481 0.128178 0.007431
233
+ v -0.270803 0.662750 -0.063128
234
+ v -0.256299 0.644241 -0.105200
235
+ v -0.227590 0.644885 -0.159275
236
+ v -0.200697 0.664322 -0.195177
237
+ v -0.138650 0.502355 -0.147161
238
+ v -0.162308 0.486149 -0.117392
239
+ v -0.186147 0.485614 -0.072490
240
+ v -0.197407 0.501038 -0.036486
241
+ v -0.072632 0.340705 -0.092769
242
+ v -0.092280 0.327875 -0.071233
243
+ v -0.109775 0.327483 -0.038278
244
+ v -0.116490 0.339722 -0.010159
245
+ v -0.017541 0.126477 -0.012915
246
+ v 0.020782 0.126287 -0.005444
247
+ v -0.100106 0.871535 0.378068
248
+ v -0.052571 0.871299 0.387335
249
+ v -0.144051 0.781305 0.329145
250
+ v 0.006918 0.780557 0.358576
251
+ v -0.101092 0.749684 0.340975
252
+ v -0.037166 0.749367 0.353437
253
+ v -0.057382 0.806767 0.372970
254
+ v -0.089942 0.806929 0.366623
255
+ v -0.007035 0.117577 -0.002805
256
+ v 0.007312 0.117506 -0.000008
257
+ v 0.017614 0.646696 0.296187
258
+ v -0.027110 0.627203 0.293909
259
+ v -0.087546 0.627502 0.282128
260
+ v -0.129968 0.647427 0.267417
261
+ v -0.101825 0.487023 0.188395
262
+ v -0.066253 0.470345 0.201895
263
+ v -0.016068 0.470096 0.211679
264
+ v 0.021868 0.486410 0.212508
265
+ v -0.068706 0.327334 0.103710
266
+ v -0.042231 0.314022 0.115873
267
+ v -0.005400 0.313839 0.123053
268
+ v 0.023620 0.326876 0.121709
269
+ v -0.008125 0.116080 0.020907
270
+ v -0.012124 0.115952 -0.018130
271
+ v 0.423921 0.854802 -0.018667
272
+ v 0.418961 0.854643 -0.067087
273
+ v 0.385823 0.764836 0.038459
274
+ v 0.370070 0.764332 -0.115323
275
+ v 0.383330 0.732596 -0.006121
276
+ v 0.376659 0.732383 -0.071237
277
+ v 0.403796 0.789634 -0.057863
278
+ v 0.407194 0.789743 -0.024698
279
+ v -0.001839 0.106677 0.007900
280
+ v -0.003336 0.106629 -0.006715
281
+ v 0.301215 0.631203 -0.106532
282
+ v 0.311242 0.611009 -0.062741
283
+ v 0.317548 0.611210 -0.001179
284
+ v 0.316614 0.631695 0.043798
285
+ v 0.225534 0.472529 0.040840
286
+ v 0.227439 0.455328 0.002784
287
+ v 0.222202 0.455161 -0.048335
288
+ v 0.212627 0.472117 -0.085157
289
+ v 0.127581 0.314403 0.034751
290
+ v 0.130996 0.300589 0.005814
291
+ v 0.127153 0.300467 -0.031704
292
+ v 0.117948 0.314095 -0.059295
293
+ v 0.021845 0.105766 0.002079
294
+ v -0.014615 0.105357 0.017354
295
+ v -0.147938 0.832487 -0.427533
296
+ v -0.193163 0.831979 -0.408587
297
+ v -0.081084 0.743863 -0.404476
298
+ v -0.224718 0.742252 -0.344302
299
+ v -0.123098 0.710679 -0.387893
300
+ v -0.183918 0.709997 -0.362413
301
+ v -0.179372 0.766869 -0.394423
302
+ v -0.148394 0.767216 -0.407400
303
+ v 0.007536 0.095710 0.000178
304
+ v -0.006115 0.095556 0.005897
305
+ v -0.195155 0.610822 -0.276019
306
+ v -0.155728 0.590320 -0.297761
307
+ v -0.098228 0.590965 -0.321850
308
+ v -0.054744 0.612397 -0.334843
309
+ v -0.029821 0.455562 -0.240845
310
+ v -0.066940 0.437503 -0.230929
311
+ v -0.114686 0.436967 -0.210926
312
+ v -0.147504 0.454242 -0.191543
313
+ v -0.005914 0.300115 -0.139366
314
+ v -0.034709 0.285531 -0.133688
315
+ v -0.069751 0.285138 -0.119008
316
+ v -0.093755 0.299130 -0.102566
317
+ v -0.005108 0.095188 -0.021422
318
+ v 0.020286 0.094861 0.009210
319
+ v -0.384314 0.803793 0.282486
320
+ v -0.352815 0.803388 0.320482
321
+ v -0.379837 0.716687 0.209568
322
+ v -0.279797 0.715403 0.330243
323
+ v -0.350884 0.683070 0.244505
324
+ v -0.308524 0.682526 0.295603
325
+ v -0.341865 0.738462 0.301741
326
+ v -0.363441 0.738739 0.275715
327
+ v -0.002547 0.084565 -0.007289
328
+ v 0.006961 0.084443 0.004180
329
+ v -0.219953 0.586679 0.279137
330
+ v -0.252018 0.565485 0.247118
331
+ v -0.292066 0.565999 0.198810
332
+ v -0.317748 0.587935 0.161170
333
+ v -0.231248 0.434829 0.106492
334
+ v -0.210461 0.416274 0.138971
335
+ v -0.177206 0.415847 0.179085
336
+ v -0.149282 0.433776 0.205364
337
+ v -0.137268 0.283541 0.050631
338
+ v -0.123074 0.268448 0.076405
339
+ v -0.098667 0.268135 0.105845
340
+ v -0.076088 0.282755 0.124431
341
+ v -0.020132 0.084291 0.011473
342
+ v 0.001999 0.084189 -0.021971
343
+ v 0.409370 0.776995 0.299372
344
+ v 0.436821 0.776868 0.257889
345
+ v 0.334566 0.691032 0.314988
346
+ v 0.421751 0.690630 0.183237
347
+ v 0.358614 0.657243 0.276295
348
+ v 0.395531 0.657073 0.220507
349
+ v 0.413204 0.712113 0.251751
350
+ v 0.394401 0.712200 0.280166
351
+ v -0.007624 0.073242 0.004682
352
+ v 0.000662 0.073204 -0.007839
353
+ v 0.350326 0.564289 0.138441
354
+ v 0.328032 0.542345 0.178353
355
+ v 0.293130 0.542506 0.231095
356
+ v 0.265098 0.564681 0.267236
357
+ v 0.181565 0.414897 0.197410
358
+ v 0.206168 0.396081 0.167554
359
+ v 0.235150 0.395947 0.123758
360
+ v 0.252998 0.414568 0.089463
361
+ v 0.094771 0.267310 0.120760
362
+ v 0.114954 0.251906 0.099277
363
+ v 0.136224 0.251808 0.067134
364
+ v 0.148090 0.267065 0.040187
365
+ v 0.016015 0.073486 0.016455
366
+ v -0.022767 0.073162 0.004928
367
+ v 0.179250 0.747851 -0.506367
368
+ v 0.131145 0.747450 -0.520665
369
+ v 0.214867 0.663930 -0.435798
370
+ v 0.062088 0.662654 -0.481209
371
+ v 0.169901 0.629555 -0.446428
372
+ v 0.105209 0.629014 -0.465656
373
+ v 0.131088 0.683154 -0.493797
374
+ v 0.164037 0.683429 -0.484004
375
+ v 0.005605 0.061892 0.006790
376
+ v -0.008914 0.061771 0.002474
377
+ v 0.037733 0.539156 -0.394767
378
+ v 0.082443 0.517025 -0.384186
379
+ v 0.143604 0.517536 -0.366007
380
+ v 0.187084 0.540403 -0.350375
381
+ v 0.141735 0.394335 -0.244105
382
+ v 0.105384 0.374875 -0.258393
383
+ v 0.054598 0.374451 -0.273488
384
+ v 0.016559 0.393290 -0.281311
385
+ v 0.090793 0.250804 -0.132774
386
+ v 0.063878 0.234799 -0.145377
387
+ v 0.026605 0.234488 -0.156455
388
+ v -0.002640 0.250023 -0.160546
389
+ v 0.010240 0.062615 -0.019914
390
+ v 0.010463 0.062193 0.020881
391
+ v -0.561281 0.709940 -0.024963
392
+ v -0.561004 0.709417 0.025640
393
+ v -0.501201 0.628847 -0.079900
394
+ v -0.500323 0.627185 0.080813
395
+ v -0.497346 0.594161 -0.033335
396
+ v -0.496974 0.593458 0.034716
397
+ v -0.533237 0.646066 0.017923
398
+ v -0.533427 0.646424 -0.016738
399
+ v 0.004278 0.050474 -0.007009
400
+ v 0.004362 0.050316 0.008265
401
+ v -0.406263 0.507988 0.079132
402
+ v -0.408502 0.485567 0.032941
403
+ v -0.408853 0.486232 -0.031395
404
+ v -0.407121 0.509613 -0.077975
405
+ v -0.287140 0.369135 -0.065194
406
+ v -0.289755 0.349168 -0.025892
407
+ v -0.289463 0.348615 0.027532
408
+ v -0.286420 0.367773 0.066482
409
+ v -0.160708 0.231614 -0.048511
410
+ v -0.164553 0.215095 -0.018813
411
+ v -0.164339 0.214689 0.020396
412
+ v -0.160171 0.230597 0.049774
413
+ v -0.023365 0.051376 -0.003669
414
+ v 0.016016 0.051244 -0.015863
415
+ v 0.150424 0.672242 0.568902
416
+ v 0.199272 0.672079 0.553776
417
+ v 0.078288 0.593430 0.524582
418
+ v 0.233428 0.592910 0.476543
419
+ v 0.121597 0.558971 0.506141
420
+ v 0.187289 0.558751 0.485800
421
+ v 0.182582 0.609670 0.527316
422
+ v 0.149123 0.609783 0.537676
423
+ v -0.009344 0.038878 -0.002076
424
+ v 0.005400 0.038828 -0.006642
425
+ v 0.202180 0.477937 0.382659
426
+ v 0.157782 0.454869 0.397680
427
+ v 0.095676 0.455077 0.416911
428
+ v 0.050521 0.478445 0.429620
429
+ v 0.025294 0.343561 0.305839
430
+ v 0.063728 0.323538 0.296222
431
+ v 0.115299 0.323365 0.280252
432
+ v 0.152404 0.343135 0.266479
433
+ v 0.002000 0.212052 0.174784
434
+ v 0.031566 0.195372 0.169274
435
+ v 0.069414 0.195245 0.157554
436
+ v 0.096877 0.211734 0.145405
437
+ v 0.002134 0.040133 0.024077
438
+ v -0.021222 0.039944 -0.010376
439
+ v 0.526370 0.636591 -0.325500
440
+ v 0.497401 0.636356 -0.368235
441
+ v 0.501941 0.560350 -0.241086
442
+ v 0.409935 0.559605 -0.376812
443
+ v 0.470186 0.525787 -0.276743
444
+ v 0.431228 0.525472 -0.334213
445
+ v 0.474529 0.574943 -0.342975
446
+ v 0.494372 0.575103 -0.313703
447
+ v -0.000885 0.027238 0.010343
448
+ v -0.009629 0.027168 -0.002556
449
+ v 0.324320 0.448572 -0.316544
450
+ v 0.351063 0.425323 -0.277563
451
+ v 0.387896 0.425621 -0.223229
452
+ v 0.414262 0.449301 -0.183864
453
+ v 0.297282 0.319493 -0.120197
454
+ v 0.275995 0.299147 -0.154053
455
+ v 0.245411 0.298900 -0.199170
456
+ v 0.221899 0.318882 -0.231400
457
+ v 0.172823 0.193394 -0.056337
458
+ v 0.158228 0.176369 -0.082908
459
+ v 0.135782 0.176187 -0.116020
460
+ v 0.116555 0.192939 -0.139341
461
+ v 0.021435 0.029006 -0.008703
462
+ v -0.005064 0.028574 0.023998
463
+ v -0.482886 0.592366 -0.426117
464
+ v -0.515755 0.591831 -0.385555
465
+ v -0.392446 0.519918 -0.425573
466
+ v -0.496839 0.518217 -0.296748
467
+ v -0.416941 0.485207 -0.383583
468
+ v -0.461144 0.484487 -0.329035
469
+ v -0.483336 0.531991 -0.369443
470
+ v -0.460822 0.532358 -0.397227
471
+ v 0.009291 0.015636 -0.001434
472
+ v -0.000630 0.015474 0.010809
473
+ v -0.411120 0.412613 -0.229188
474
+ v -0.380749 0.389457 -0.265932
475
+ v -0.338959 0.390139 -0.317503
476
+ v -0.309071 0.414276 -0.355123
477
+ v -0.210482 0.291331 -0.257834
478
+ v -0.236595 0.270528 -0.226821
479
+ v -0.271297 0.269963 -0.183998
480
+ v -0.296013 0.289937 -0.152285
481
+ v -0.109590 0.172473 -0.153470
482
+ v -0.130681 0.154983 -0.131145
483
+ v -0.156149 0.154568 -0.099716
484
+ v -0.173432 0.171432 -0.074687
485
+ v -0.016060 0.017580 -0.017663
486
+ v 0.023399 0.017375 -0.001660
487
+ v -0.275353 0.544556 0.609352
488
+ v -0.226410 0.544301 0.629203
489
+ v -0.300979 0.475654 0.519586
490
+ v -0.145535 0.474846 0.582631
491
+ v -0.252905 0.441457 0.529894
492
+ v -0.187085 0.441115 0.556590
493
+ v -0.219975 0.486215 0.591334
494
+ v -0.253500 0.486389 0.577737
495
+ v -0.005367 0.003913 -0.008460
496
+ v 0.009406 0.003836 -0.002468
497
+ v -0.104682 0.375229 0.476757
498
+ v -0.149047 0.351711 0.457488
499
+ v -0.211274 0.352034 0.432250
500
+ v -0.256638 0.376018 0.415126
501
+ v -0.190679 0.260776 0.287561
502
+ v -0.152843 0.240031 0.303075
503
+ v -0.101171 0.239763 0.324032
504
+ v -0.063320 0.260115 0.339216
505
+ v -0.118574 0.150043 0.155815
506
+ v -0.090646 0.132481 0.169124
507
+ v -0.052724 0.132284 0.184505
508
+ v -0.023511 0.149549 0.194371
509
+ v -0.013737 0.006000 0.021246
510
+ v -0.009827 0.005942 -0.021638
511
+ v 0.691467 0.502131 0.087619
512
+ v 0.696318 0.502060 0.034426
513
+ v 0.609191 0.436319 0.138819
514
+ v 0.624597 0.436091 -0.030122
515
+ v 0.603644 0.402552 0.089263
516
+ v 0.610168 0.402455 0.017728
517
+ v 0.655341 0.445518 0.039330
518
+ v 0.652019 0.445567 0.075766
519
+ v -0.008531 -0.007903 0.008186
520
+ v -0.007067 -0.007925 -0.007870
521
+ v 0.505938 0.341569 -0.038500
522
+ v 0.499318 0.317835 0.010083
523
+ v 0.493151 0.317926 0.077713
524
+ v 0.490877 0.341792 0.126650
525
+ v 0.343196 0.233075 0.100369
526
+ v 0.346254 0.212370 0.059189
527
+ v 0.351375 0.212294 0.003031
528
+ v 0.355819 0.232888 -0.038049
529
+ v 0.189849 0.129203 0.069374
530
+ v 0.193812 0.111580 0.038430
531
+ v 0.197570 0.111524 -0.002785
532
+ v 0.199271 0.129064 -0.033943
533
+ v 0.023159 -0.005370 0.007493
534
+ v -0.019574 -0.005709 0.016338
535
+ v -0.120490 0.454715 -0.712013
536
+ v -0.173495 0.454295 -0.701042
537
+ v -0.046570 0.393172 -0.645126
538
+ v -0.214913 0.391837 -0.610282
539
+ v -0.092957 0.359492 -0.623934
540
+ v -0.164239 0.358926 -0.609180
541
+ v -0.156627 0.399752 -0.660792
542
+ v -0.120321 0.400040 -0.668307
543
+ v 0.008975 -0.019630 0.006817
544
+ v -0.007024 -0.019757 0.010128
545
+ v -0.188027 0.303342 -0.489631
546
+ v -0.138950 0.279951 -0.496658
547
+ v -0.071559 0.280485 -0.510607
548
+ v -0.023461 0.304647 -0.523693
549
+ v -0.005380 0.203440 -0.369195
550
+ v -0.046190 0.182422 -0.359267
551
+ v -0.102150 0.181978 -0.347684
552
+ v -0.143308 0.202346 -0.340646
553
+ v 0.009793 0.107395 -0.208011
554
+ v -0.021360 0.089438 -0.202084
555
+ v -0.062430 0.089112 -0.193584
556
+ v -0.093158 0.106579 -0.186702
557
+ v -0.001179 -0.016871 -0.024033
558
+ v 0.019972 -0.017152 0.014742
559
+ v -0.667433 0.399510 0.333954
560
+ v -0.641197 0.399161 0.382050
561
+ v -0.622856 0.342649 0.241736
562
+ v -0.539531 0.341542 0.394487
563
+ v -0.587849 0.309636 0.279911
564
+ v -0.552567 0.309168 0.344591
565
+ v -0.605821 0.347080 0.353037
566
+ v -0.623791 0.347319 0.320094
567
+ v 0.002687 -0.031370 -0.010312
568
+ v 0.010605 -0.031475 0.004205
569
+ v -0.428356 0.260375 0.331577
570
+ v -0.449032 0.237038 0.285766
571
+ v -0.482389 0.237481 0.224616
572
+ v -0.509811 0.261457 0.182254
573
+ v -0.362933 0.169485 0.117709
574
+ v -0.340792 0.148553 0.153991
575
+ v -0.313094 0.148185 0.204768
576
+ v -0.294663 0.168578 0.242862
577
+ v -0.208847 0.083063 0.054089
578
+ v -0.193500 0.065066 0.082244
579
+ v -0.173172 0.064796 0.119510
580
+ v -0.157889 0.082386 0.147505
581
+ v -0.036901 0.275579 0.036901
582
+ v 0.036901 0.275579 0.036901
583
+ v -0.036901 0.275579 -0.036901
584
+ v 0.036901 0.275579 -0.036901
585
+ v 0.000000 0.285584 0.048805
586
+ v 0.000000 0.285584 -0.048805
587
+ v -0.050888 0.245847 0.050888
588
+ v 0.050888 0.245847 0.050888
589
+ v -0.048805 0.285584 0.000000
590
+ v 0.048805 0.285584 0.000000
591
+ v -0.050888 0.245847 -0.050888
592
+ v 0.050888 0.245847 -0.050888
593
+ v 0.000000 0.245847 0.073065
594
+ v 0.000000 0.302902 0.000000
595
+ v 0.000000 0.245847 -0.073065
596
+ v 0.073065 0.245847 0.000000
597
+ v -0.073065 0.245847 0.000000
598
+ v 0.055263 0.142766 0.055263
599
+ v 0.000000 0.142766 0.079482
600
+ v -0.055263 0.142766 0.055263
601
+ v 0.055263 0.142766 -0.055263
602
+ v 0.000000 0.142766 -0.079482
603
+ v -0.055263 0.142766 -0.055263
604
+ v 0.079482 0.142766 0.000000
605
+ v -0.079482 0.142766 0.000000
606
+ v 0.000000 -0.060654 0.036102
607
+ v 0.027321 -0.053964 0.027321
608
+ v 0.038987 -0.034082 0.038987
609
+ v 0.000000 -0.034082 0.056511
610
+ v -0.038987 -0.034082 0.038987
611
+ v -0.027321 -0.053964 0.027321
612
+ v 0.038987 -0.034082 -0.038987
613
+ v 0.027321 -0.053964 -0.027321
614
+ v 0.000000 -0.060654 -0.036102
615
+ v 0.000000 -0.034082 -0.056511
616
+ v -0.027321 -0.053964 -0.027321
617
+ v -0.038987 -0.034082 -0.038987
618
+ v 0.036102 -0.060654 0.000000
619
+ v 0.000000 -0.072234 0.000000
620
+ v -0.036102 -0.060654 0.000000
621
+ v 0.056511 -0.034082 0.000000
622
+ v -0.056511 -0.034082 0.000000
623
+ v 0.065890 0.030812 0.000000
624
+ v 0.045746 0.030812 -0.045746
625
+ v 0.000000 0.030812 -0.065890
626
+ v -0.045746 0.030812 -0.045746
627
+ v -0.065890 0.030812 0.000000
628
+ v -0.045746 0.030812 0.045746
629
+ v 0.000000 0.030812 0.065890
630
+ v 0.045746 0.030812 0.045746
631
+ vn -0.162589 -0.061242 0.984792
632
+ vn 0.162588 -0.061242 0.984792
633
+ vn 0.146210 0.093027 0.984870
634
+ vn -0.146210 0.093027 0.984870
635
+ vn -0.147419 -0.157611 0.976435
636
+ vn 0.147420 -0.157611 0.976435
637
+ vn 0.139679 -0.123573 0.982456
638
+ vn -0.139679 -0.123573 0.982456
639
+ vn 0.307302 -0.009724 0.951562
640
+ vn 0.125512 0.158613 0.979331
641
+ vn -0.125512 0.158613 0.979331
642
+ vn -0.307302 -0.009724 0.951562
643
+ vn 0.329044 -0.156018 0.931337
644
+ vn 0.315603 -0.115932 0.941783
645
+ vn -0.315603 -0.115933 0.941783
646
+ vn -0.329044 -0.156018 0.931337
647
+ vn -0.409287 -0.200672 0.890065
648
+ vn -0.198263 -0.202601 0.958981
649
+ vn 0.198263 -0.202601 0.958981
650
+ vn 0.409287 -0.200672 0.890065
651
+ vn -0.492326 -0.230829 0.839245
652
+ vn -0.226709 -0.229927 0.946434
653
+ vn 0.226709 -0.229927 0.946434
654
+ vn 0.492326 -0.230829 0.839246
655
+ vn 0.985572 -0.108963 -0.129520
656
+ vn 0.891023 -0.108963 -0.440688
657
+ vn 0.902759 0.041562 -0.428135
658
+ vn 0.988340 0.041562 -0.146481
659
+ vn 0.969295 -0.201864 -0.140425
660
+ vn 0.883564 -0.201864 -0.422571
661
+ vn 0.892887 -0.169113 -0.417318
662
+ vn 0.974119 -0.169113 -0.149977
663
+ vn 0.819460 -0.055920 -0.570402
664
+ vn 0.907842 0.106256 -0.405627
665
+ vn 0.980042 0.106256 -0.168012
666
+ vn 0.998272 -0.055920 0.018080
667
+ vn 0.787771 -0.198019 -0.583271
668
+ vn 0.803165 -0.159586 -0.573985
669
+ vn 0.986724 -0.159586 0.030123
670
+ vn 0.979099 -0.198019 0.046403
671
+ vn 0.961417 -0.239350 0.135610
672
+ vn 0.965761 -0.244698 -0.086187
673
+ vn 0.850453 -0.244698 -0.465675
674
+ vn 0.723448 -0.239349 -0.647561
675
+ vn 0.936055 -0.266142 0.230151
676
+ vn 0.961121 -0.270598 -0.054983
677
+ vn 0.829237 -0.270598 -0.489022
678
+ vn 0.649777 -0.266142 -0.712010
679
+ vn -0.405810 -0.147135 -0.902037
680
+ vn -0.676517 -0.144925 -0.722026
681
+ vn -0.672399 0.001354 -0.740188
682
+ vn -0.427233 0.000031 -0.904142
683
+ vn -0.409671 -0.236834 -0.880954
684
+ vn -0.655548 -0.235094 -0.717626
685
+ vn -0.653736 -0.203354 -0.728887
686
+ vn -0.420918 -0.205114 -0.883604
687
+ vn -0.781667 -0.090031 -0.617164
688
+ vn -0.651653 0.065143 -0.755715
689
+ vn -0.448404 0.062834 -0.891620
690
+ vn -0.270860 -0.092950 -0.958121
691
+ vn -0.782320 -0.228392 -0.579493
692
+ vn -0.778433 -0.191306 -0.597866
693
+ vn -0.252577 -0.194965 -0.947731
694
+ vn -0.233983 -0.232136 -0.944121
695
+ vn -0.142966 -0.271221 -0.951840
696
+ vn -0.355305 -0.278303 -0.892360
697
+ vn -0.686625 -0.276071 -0.672555
698
+ vn -0.825052 -0.266784 -0.498111
699
+ vn -0.043411 -0.296057 -0.954183
700
+ vn -0.326417 -0.303168 -0.895288
701
+ vn -0.703088 -0.300750 -0.644374
702
+ vn -0.865442 -0.290551 -0.408156
703
+ vn -0.741498 -0.178078 0.646892
704
+ vn -0.489182 -0.176879 0.854058
705
+ vn -0.511385 -0.033474 0.858700
706
+ vn -0.740576 -0.034168 0.671103
707
+ vn -0.718837 -0.265665 0.642414
708
+ vn -0.489321 -0.264707 0.830961
709
+ vn -0.501335 -0.233700 0.833095
710
+ vn -0.718536 -0.234664 0.654705
711
+ vn -0.359923 -0.120484 0.925170
712
+ vn -0.535327 0.028756 0.844155
713
+ vn -0.722079 0.027550 0.691262
714
+ vn -0.835881 -0.122024 0.535176
715
+ vn -0.319620 -0.256719 0.912107
716
+ vn -0.339202 -0.220582 0.914486
717
+ vn -0.829783 -0.222577 0.511781
718
+ vn -0.831251 -0.258772 0.491994
719
+ vn -0.864852 -0.295606 0.405769
720
+ vn -0.745299 -0.305859 0.592435
721
+ vn -0.435623 -0.304624 0.847017
722
+ vn -0.228296 -0.293157 0.928407
723
+ vn -0.896128 -0.318118 0.309445
724
+ vn -0.755750 -0.329862 0.565714
725
+ vn -0.405456 -0.328510 0.853046
726
+ vn -0.128436 -0.315079 0.940335
727
+ vn 0.827203 -0.217175 0.518238
728
+ vn 0.951811 -0.217490 0.216227
729
+ vn 0.967952 -0.077520 0.238870
730
+ vn 0.854525 -0.077332 0.513621
731
+ vn 0.813595 -0.301967 0.496869
732
+ vn 0.927043 -0.302269 0.221868
733
+ vn 0.933517 -0.272308 0.233228
734
+ vn 0.826192 -0.272026 0.493364
735
+ vn 0.984366 -0.160064 0.073510
736
+ vn 0.963070 -0.016908 0.268721
737
+ vn 0.872117 -0.016730 0.489011
738
+ vn 0.749642 -0.159641 0.642302
739
+ vn 0.955433 -0.293018 0.035902
740
+ vn 0.964558 -0.258188 0.054469
741
+ vn 0.722272 -0.257601 0.641845
742
+ vn 0.702735 -0.292380 0.648597
743
+ vn 0.629013 -0.326174 0.705659
744
+ vn 0.772411 -0.340232 0.536305
745
+ vn 0.925638 -0.340650 0.164777
746
+ vn 0.943334 -0.326977 -0.056641
747
+ vn 0.545466 -0.345500 0.763608
748
+ vn 0.748995 -0.363026 0.554273
749
+ vn 0.921634 -0.363506 0.135850
750
+ vn 0.924834 -0.346483 -0.156946
751
+ vn 0.256192 -0.254216 -0.932599
752
+ vn -0.069094 -0.252587 -0.965104
753
+ vn -0.053215 -0.116485 -0.991766
754
+ vn 0.243143 -0.117546 -0.962842
755
+ vn 0.239599 -0.336240 -0.910788
756
+ vn -0.056921 -0.334989 -0.940501
757
+ vn -0.047807 -0.305935 -0.950851
758
+ vn 0.232557 -0.307219 -0.922786
759
+ vn -0.215624 -0.193616 -0.957089
760
+ vn -0.020606 -0.056963 -0.998164
761
+ vn 0.213504 -0.058755 -0.975174
762
+ vn 0.396306 -0.195883 -0.896979
763
+ vn -0.243617 -0.322997 -0.914507
764
+ vn -0.228322 -0.289396 -0.929580
765
+ vn 0.404620 -0.292102 -0.866579
766
+ vn 0.416723 -0.325733 -0.848669
767
+ vn 0.492417 -0.357408 -0.793590
768
+ vn 0.289814 -0.373229 -0.881311
769
+ vn -0.111297 -0.371658 -0.921674
770
+ vn -0.329223 -0.354173 -0.875314
771
+ vn 0.572972 -0.374692 -0.728910
772
+ vn 0.311004 -0.395178 -0.864356
773
+ vn -0.138563 -0.393431 -0.908852
774
+ vn -0.420337 -0.370714 -0.828184
775
+ vn -0.959296 -0.281551 0.021917
776
+ vn -0.895638 -0.279699 0.345834
777
+ vn -0.929531 -0.145339 0.338894
778
+ vn -0.988185 -0.146582 0.044771
779
+ vn -0.931503 -0.362426 0.030822
780
+ vn -0.873429 -0.361031 0.326770
781
+ vn -0.886855 -0.332322 0.321016
782
+ vn -0.941744 -0.333767 0.041440
783
+ vn -0.846843 -0.218887 0.484712
784
+ vn -0.947387 -0.086746 0.308112
785
+ vn -0.992937 -0.088857 0.078616
786
+ vn -0.967456 -0.221532 -0.122280
787
+ vn -0.793613 -0.347157 0.499660
788
+ vn -0.813585 -0.314097 0.489308
789
+ vn -0.937827 -0.317169 -0.141015
790
+ vn -0.923185 -0.350238 -0.158311
791
+ vn -0.891103 -0.380279 -0.247635
792
+ vn -0.916670 -0.398722 -0.027133
793
+ vn -0.838133 -0.396995 0.374069
794
+ vn -0.729642 -0.376649 0.570753
795
+ vn -0.851002 -0.395696 -0.345282
796
+ vn -0.906012 -0.420225 -0.050534
797
+ vn -0.817852 -0.418296 0.395153
798
+ vn -0.656041 -0.391240 0.645400
799
+ vn 0.296252 -0.313013 0.902362
800
+ vn 0.588171 -0.313167 0.745642
801
+ vn 0.592318 -0.181090 0.785089
802
+ vn 0.327380 -0.180984 0.927398
803
+ vn 0.295361 -0.392310 0.871122
804
+ vn 0.562434 -0.392516 0.727736
805
+ vn 0.561145 -0.364454 0.743162
806
+ vn 0.308987 -0.364286 0.878535
807
+ vn 0.706858 -0.251577 0.661106
808
+ vn 0.568373 -0.124053 0.813365
809
+ vn 0.363975 -0.124131 0.923100
810
+ vn 0.160801 -0.251345 0.954447
811
+ vn 0.704629 -0.377776 0.600652
812
+ vn 0.700968 -0.345565 0.623882
813
+ vn 0.132738 -0.345217 0.929089
814
+ vn 0.111316 -0.377365 0.919350
815
+ vn 0.015458 -0.404983 0.914194
816
+ vn 0.234872 -0.427247 0.873096
817
+ vn 0.597438 -0.427563 0.678423
818
+ vn 0.753370 -0.405528 0.517669
819
+ vn -0.090563 -0.417631 0.904092
820
+ vn 0.208620 -0.447957 0.869375
821
+ vn 0.609010 -0.448317 0.654307
822
+ vn 0.803577 -0.418274 0.423451
823
+ vn 0.768918 -0.349231 -0.535539
824
+ vn 0.533772 -0.348503 -0.770476
825
+ vn 0.572997 -0.219651 -0.789574
826
+ vn 0.786853 -0.220149 -0.576538
827
+ vn 0.737558 -0.426246 -0.523758
828
+ vn 0.522246 -0.425746 -0.738918
829
+ vn 0.538067 -0.398500 -0.742753
830
+ vn 0.741280 -0.399044 -0.539693
831
+ vn 0.419699 -0.285685 -0.861532
832
+ vn 0.609949 -0.163809 -0.775325
833
+ vn 0.772869 -0.164773 -0.612800
834
+ vn 0.859486 -0.286736 -0.423162
835
+ vn 0.359242 -0.408643 -0.839021
836
+ vn 0.383322 -0.377549 -0.842924
837
+ vn 0.841322 -0.378720 -0.385680
838
+ vn 0.837498 -0.409785 -0.361489
839
+ vn 0.859718 -0.435132 -0.267480
840
+ vn 0.756477 -0.459844 -0.465065
841
+ vn 0.463915 -0.459265 -0.757535
842
+ vn 0.264788 -0.433808 -0.861219
843
+ vn 0.880653 -0.445308 -0.161711
844
+ vn 0.759100 -0.479796 -0.439958
845
+ vn 0.437127 -0.479119 -0.761160
846
+ vn 0.159261 -0.443682 -0.881920
847
+ vn -0.722935 -0.377185 -0.578875
848
+ vn -0.882489 -0.375518 -0.283195
849
+ vn -0.915606 -0.247739 -0.316689
850
+ vn -0.772067 -0.249011 -0.584727
851
+ vn -0.700315 -0.453478 -0.551286
852
+ vn -0.846732 -0.452359 -0.280030
853
+ vn -0.855738 -0.425297 -0.294678
854
+ vn -0.717651 -0.426527 -0.550502
855
+ vn -0.939051 -0.310746 -0.147041
856
+ vn -0.913519 -0.192338 -0.358454
857
+ vn -0.804412 -0.194622 -0.561287
858
+ vn -0.643390 -0.313411 -0.698443
859
+ vn -0.896664 -0.432879 -0.092782
860
+ vn -0.908243 -0.402173 -0.115547
861
+ vn -0.598208 -0.404916 -0.691512
862
+ vn -0.572692 -0.435521 -0.694510
863
+ vn -0.487583 -0.459373 -0.742455
864
+ vn -0.647515 -0.486507 -0.586546
865
+ vn -0.846932 -0.485237 -0.217372
866
+ vn -0.889811 -0.456292 0.005884
867
+ vn -0.390147 -0.467660 -0.793145
868
+ vn -0.625194 -0.506216 -0.594035
869
+ vn -0.841998 -0.504725 -0.190504
870
+ vn -0.878422 -0.463856 0.114947
871
+ vn -0.340481 -0.404762 0.848670
872
+ vn -0.007490 -0.404441 0.914534
873
+ vn -0.032545 -0.277374 0.960211
874
+ vn -0.332873 -0.277610 0.901182
875
+ vn -0.320272 -0.480767 0.816266
876
+ vn -0.014242 -0.480641 0.876802
877
+ vn -0.026053 -0.453809 0.890718
878
+ vn -0.314483 -0.453999 0.833658
879
+ vn 0.138355 -0.338559 0.930718
880
+ vn -0.073534 -0.222871 0.972071
881
+ vn -0.300048 -0.223561 0.927357
882
+ vn -0.480054 -0.339062 0.809065
883
+ vn 0.180657 -0.459805 0.869450
884
+ vn 0.161736 -0.429532 0.888450
885
+ vn -0.486527 -0.429983 0.760530
886
+ vn -0.496925 -0.460178 0.735732
887
+ vn -0.568489 -0.482153 0.666595
888
+ vn -0.369939 -0.513061 0.774541
889
+ vn 0.047201 -0.512996 0.857093
890
+ vn 0.273590 -0.481761 0.832499
891
+ vn -0.646373 -0.487930 0.586623
892
+ vn -0.383644 -0.532413 0.754556
893
+ vn 0.069033 -0.532293 0.843741
894
+ vn 0.376037 -0.487419 0.788048
895
+ vn 0.894669 -0.439265 0.081321
896
+ vn 0.860340 -0.439465 -0.258233
897
+ vn 0.916284 -0.314880 -0.247535
898
+ vn 0.947372 -0.314747 0.058489
899
+ vn 0.855056 -0.513547 0.071750
900
+ vn 0.823465 -0.513843 -0.240562
901
+ vn 0.841247 -0.487724 -0.233303
902
+ vn 0.870998 -0.487489 0.060959
903
+ vn 0.835953 -0.372765 -0.402775
904
+ vn 0.941804 -0.261594 -0.211126
905
+ vn 0.964961 -0.261772 0.018081
906
+ vn 0.899918 -0.372495 0.226703
907
+ vn 0.759941 -0.491171 -0.425724
908
+ vn 0.784834 -0.461892 -0.413148
909
+ vn 0.851882 -0.461443 0.247726
910
+ vn 0.830057 -0.490627 0.265124
911
+ vn 0.783788 -0.510102 0.354222
912
+ vn 0.828363 -0.544424 0.131973
913
+ vn 0.785248 -0.544893 -0.294069
914
+ vn 0.696444 -0.510804 -0.504028
915
+ vn 0.729396 -0.512945 0.452625
916
+ vn 0.812574 -0.563032 0.150727
917
+ vn 0.765792 -0.563525 -0.309841
918
+ vn 0.623121 -0.513737 -0.589741
919
+ vn -0.170739 -0.469890 -0.866055
920
+ vn -0.489171 -0.468965 -0.735380
921
+ vn -0.497422 -0.345586 -0.795702
922
+ vn -0.211639 -0.346420 -0.913894
923
+ vn -0.167170 -0.543298 -0.822728
924
+ vn -0.460426 -0.542869 -0.702354
925
+ vn -0.458927 -0.517028 -0.722543
926
+ vn -0.182740 -0.517609 -0.835875
927
+ vn -0.623203 -0.400597 -0.671670
928
+ vn -0.469674 -0.292640 -0.832927
929
+ vn -0.255699 -0.294443 -0.920827
930
+ vn -0.034777 -0.402353 -0.914824
931
+ vn -0.621835 -0.517562 -0.587750
932
+ vn -0.617236 -0.488807 -0.616512
933
+ vn 0.002140 -0.490288 -0.871558
934
+ vn 0.025852 -0.518854 -0.854472
935
+ vn 0.125077 -0.536599 -0.834516
936
+ vn -0.100218 -0.573359 -0.813152
937
+ vn -0.500653 -0.573044 -0.648820
938
+ vn -0.679029 -0.535105 -0.502575
939
+ vn 0.236165 -0.537227 -0.809700
940
+ vn -0.079685 -0.591702 -0.802209
941
+ vn -0.510434 -0.591189 -0.624462
942
+ vn -0.740536 -0.535281 -0.406300
943
+ vn -0.767652 -0.497846 0.403558
944
+ vn -0.545820 -0.497368 0.674319
945
+ vn -0.606192 -0.373482 0.702169
946
+ vn -0.805104 -0.373942 0.460407
947
+ vn -0.724425 -0.571700 0.385187
948
+ vn -0.519789 -0.571588 0.634907
949
+ vn -0.540802 -0.545740 0.640079
950
+ vn -0.733405 -0.545982 0.404994
951
+ vn -0.446650 -0.427292 0.786082
952
+ vn -0.651263 -0.320655 0.687777
953
+ vn -0.800156 -0.321885 0.506104
954
+ vn -0.856710 -0.428271 0.287459
955
+ vn -0.360985 -0.543982 0.757478
956
+ vn -0.391408 -0.515470 0.762293
957
+ vn -0.823272 -0.516183 0.236175
958
+ vn -0.812765 -0.544527 0.207130
959
+ vn -0.821654 -0.560413 0.104025
960
+ vn -0.733892 -0.601225 0.316118
961
+ vn -0.454328 -0.601284 0.657300
962
+ vn -0.260587 -0.559801 0.786586
963
+ vn -0.829543 -0.558326 -0.011461
964
+ vn -0.728573 -0.619383 0.292482
965
+ vn -0.427955 -0.619289 0.658282
966
+ vn -0.148484 -0.557471 0.816810
967
+ vn 0.593461 -0.530287 0.605474
968
+ vn 0.787958 -0.531082 0.311567
969
+ vn 0.836084 -0.408936 0.365699
970
+ vn 0.662386 -0.408379 0.628070
971
+ vn 0.560472 -0.603049 0.567629
972
+ vn 0.739957 -0.603871 0.296315
973
+ vn 0.752003 -0.578632 0.315717
974
+ vn 0.583068 -0.577888 0.571032
975
+ vn 0.867905 -0.460572 0.186052
976
+ vn 0.837357 -0.357198 0.413816
977
+ vn 0.706979 -0.356907 0.610571
978
+ vn 0.509709 -0.459438 0.727402
979
+ vn 0.811213 -0.574656 0.108181
980
+ vn 0.825848 -0.547043 0.136820
981
+ vn 0.447939 -0.545557 0.708320
982
+ vn 0.415900 -0.573033 0.706159
983
+ vn 0.318498 -0.586325 0.744837
984
+ vn 0.495877 -0.631223 0.596375
985
+ vn 0.741108 -0.632381 0.225508
986
+ vn 0.808634 -0.588305 0.002899
987
+ vn 0.209893 -0.581068 0.786324
988
+ vn 0.470139 -0.648625 0.598543
989
+ vn 0.732904 -0.649909 0.201171
990
+ vn 0.804197 -0.583298 -0.114153
991
+ vn 0.403944 -0.563463 -0.720651
992
+ vn 0.064606 -0.563427 -0.823636
993
+ vn 0.103247 -0.443285 -0.890415
994
+ vn 0.405804 -0.443475 -0.799158
995
+ vn 0.376380 -0.634744 -0.674862
996
+ vn 0.062944 -0.635050 -0.769902
997
+ vn 0.078438 -0.610391 -0.788207
998
+ vn 0.373338 -0.610239 -0.698733
999
+ vn -0.079480 -0.491857 -0.867041
1000
+ vn 0.150163 -0.392148 -0.907563
1001
+ vn 0.377295 -0.393109 -0.838519
1002
+ vn 0.545121 -0.492284 -0.678601
1003
+ vn -0.139123 -0.603202 -0.785361
1004
+ vn -0.115399 -0.576477 -0.808924
1005
+ vn 0.544321 -0.576442 -0.609450
1006
+ vn 0.551232 -0.602951 -0.576709
1007
+ vn 0.616020 -0.613967 -0.493523
1008
+ vn 0.422634 -0.661597 -0.619411
1009
+ vn -0.005863 -0.662224 -0.749283
1010
+ vn -0.240291 -0.614267 -0.751623
1011
+ vn 0.687157 -0.605960 -0.400785
1012
+ vn 0.430623 -0.678466 -0.595187
1013
+ vn -0.028172 -0.678971 -0.733624
1014
+ vn -0.351592 -0.606107 -0.713455
1015
+ vn -0.783685 -0.593798 -0.182325
1016
+ vn -0.784440 -0.593936 0.178587
1017
+ vn -0.866171 -0.473300 0.160422
1018
+ vn -0.866161 -0.473475 -0.159956
1019
+ vn -0.727233 -0.665206 -0.169216
1020
+ vn -0.727786 -0.665812 0.164384
1021
+ vn -0.751566 -0.641265 0.154688
1022
+ vn -0.750957 -0.640881 -0.159167
1023
+ vn -0.786743 -0.520600 0.331678
1024
+ vn -0.898578 -0.421881 0.120726
1025
+ vn -0.897824 -0.423098 -0.122070
1026
+ vn -0.786726 -0.521015 -0.331068
1027
+ vn -0.684048 -0.631092 0.365789
1028
+ vn -0.715553 -0.604786 0.349596
1029
+ vn -0.715116 -0.604452 -0.351066
1030
+ vn -0.683747 -0.630440 -0.367472
1031
+ vn -0.620646 -0.639086 -0.454277
1032
+ vn -0.685033 -0.691073 -0.230537
1033
+ vn -0.685661 -0.692182 0.225286
1034
+ vn -0.620015 -0.639819 0.454107
1035
+ vn -0.551266 -0.627965 -0.549333
1036
+ vn -0.662658 -0.707503 -0.245611
1037
+ vn -0.662582 -0.708466 0.243025
1038
+ vn -0.549794 -0.628457 0.550244
1039
+ vn 0.048540 -0.625530 0.778688
1040
+ vn 0.396524 -0.626444 0.671071
1041
+ vn 0.403160 -0.507100 0.761782
1042
+ vn 0.095059 -0.506472 0.857001
1043
+ vn 0.043415 -0.696203 0.716531
1044
+ vn 0.365156 -0.697165 0.616946
1045
+ vn 0.363181 -0.673231 0.644096
1046
+ vn 0.060476 -0.672365 0.737745
1047
+ vn 0.543973 -0.552782 0.631289
1048
+ vn 0.376763 -0.456489 0.806020
1049
+ vn 0.141457 -0.456188 0.878568
1050
+ vn -0.094469 -0.551522 0.828794
1051
+ vn 0.545434 -0.660356 0.516169
1052
+ vn 0.539574 -0.635020 0.552820
1053
+ vn -0.135471 -0.633350 0.761916
1054
+ vn -0.161034 -0.658529 0.735124
1055
+ vn -0.264091 -0.664448 0.699117
1056
+ vn -0.028427 -0.720776 0.692585
1057
+ vn 0.410963 -0.722125 0.556457
1058
+ vn 0.610507 -0.666622 0.427664
1059
+ vn -0.375762 -0.649987 0.660545
1060
+ vn -0.051808 -0.736312 0.674656
1061
+ vn 0.419969 -0.737803 0.528463
1062
+ vn 0.681424 -0.652330 0.331853
1063
+ vn 0.707384 -0.659177 -0.255135
1064
+ vn 0.502838 -0.659910 -0.558277
1065
+ vn 0.592442 -0.543826 -0.594361
1066
+ vn 0.773540 -0.543382 -0.326147
1067
+ vn 0.646349 -0.727497 -0.230176
1068
+ vn 0.457143 -0.728361 -0.510402
1069
+ vn 0.484749 -0.705433 -0.517089
1070
+ vn 0.662724 -0.704688 -0.253401
1071
+ vn 0.424130 -0.586097 -0.690365
1072
+ vn 0.644447 -0.494365 -0.583346
1073
+ vn 0.782845 -0.494378 -0.377815
1074
+ vn 0.799657 -0.585219 -0.134414
1075
+ vn 0.309177 -0.689250 -0.655244
1076
+ vn 0.347092 -0.665286 -0.661001
1077
+ vn 0.744175 -0.663949 -0.073321
1078
+ vn 0.724846 -0.687733 -0.040284
1079
+ vn 0.719798 -0.690726 0.069202
1080
+ vn 0.643190 -0.750163 -0.153500
1081
+ vn 0.384779 -0.751425 -0.536010
1082
+ vn 0.204893 -0.692494 -0.691716
1083
+ vn 0.715568 -0.673061 0.186953
1084
+ vn 0.632116 -0.764666 -0.125358
1085
+ vn 0.354103 -0.765984 -0.536544
1086
+ vn 0.093081 -0.674883 -0.732031
1087
+ vn -0.420863 -0.690811 -0.587924
1088
+ vn -0.655665 -0.691958 -0.302153
1089
+ vn -0.721969 -0.577028 -0.381837
1090
+ vn -0.514933 -0.576540 -0.634386
1091
+ vn -0.375459 -0.757850 -0.533567
1092
+ vn -0.592296 -0.759412 -0.269217
1093
+ vn -0.608062 -0.737089 -0.294891
1094
+ vn -0.403878 -0.735798 -0.543584
1095
+ vn -0.763854 -0.617294 -0.188352
1096
+ vn -0.728910 -0.527563 -0.436311
1097
+ vn -0.567852 -0.528159 -0.631341
1098
+ vn -0.333950 -0.616376 -0.713133
1099
+ vn -0.691280 -0.717677 -0.084100
1100
+ vn -0.709227 -0.694665 -0.120159
1101
+ vn -0.255208 -0.692655 -0.674609
1102
+ vn -0.216434 -0.715268 -0.664491
1103
+ vn -0.109161 -0.715302 -0.690236
1104
+ vn -0.299136 -0.778698 -0.551495
1105
+ vn -0.594579 -0.781059 -0.190848
1106
+ vn -0.695503 -0.717963 0.028368
1107
+ vn 0.004072 -0.694435 -0.719544
1108
+ vn -0.267424 -0.792191 -0.548560
1109
+ vn -0.586111 -0.794552 -0.158622
1110
+ vn -0.701893 -0.696843 0.147500
1111
+ vn -0.426009 -0.723008 0.543853
1112
+ vn -0.079604 -0.724024 0.685166
1113
+ vn -0.140957 -0.610941 0.779027
1114
+ vn -0.446259 -0.610309 0.654504
1115
+ vn -0.384788 -0.788691 0.479484
1116
+ vn -0.064696 -0.789833 0.609900
1117
+ vn -0.085418 -0.768423 0.634216
1118
+ vn -0.386768 -0.767415 0.511356
1119
+ vn 0.060264 -0.649106 0.758308
1120
+ vn -0.190201 -0.562104 0.804899
1121
+ vn -0.429640 -0.561966 0.706827
1122
+ vn -0.575323 -0.647858 0.499282
1123
+ vn 0.141682 -0.745299 0.651503
1124
+ vn 0.111640 -0.723639 0.681090
1125
+ vn -0.558921 -0.721842 0.408107
1126
+ vn -0.559895 -0.743300 0.366090
1127
+ vn -0.616308 -0.740086 0.269140
1128
+ vn -0.423754 -0.807826 0.409694
1129
+ vn 0.012049 -0.809449 0.587067
1130
+ vn 0.250816 -0.742357 0.621286
1131
+ vn -0.677557 -0.715634 0.169662
1132
+ vn -0.431803 -0.819958 0.375787
1133
+ vn 0.041880 -0.821693 0.568389
1134
+ vn 0.365415 -0.717894 0.592536
1135
+ vn 0.609182 -0.754460 0.244309
1136
+ vn 0.642361 -0.755530 -0.128634
1137
+ vn 0.756226 -0.647223 -0.096050
1138
+ vn 0.726633 -0.646395 0.232761
1139
+ vn 0.531903 -0.816891 0.223089
1140
+ vn 0.562461 -0.817887 -0.121240
1141
+ vn 0.592925 -0.797925 -0.108421
1142
+ vn 0.564112 -0.796979 0.215875
1143
+ vn 0.674804 -0.681559 -0.283048
1144
+ vn 0.797785 -0.600218 -0.057251
1145
+ vn 0.774469 -0.599496 0.201996
1146
+ vn 0.613468 -0.679933 0.401681
1147
+ vn 0.543824 -0.771551 -0.330098
1148
+ vn 0.582072 -0.751743 -0.309958
1149
+ vn 0.518004 -0.749870 0.411543
1150
+ vn 0.476944 -0.769592 0.424561
1151
+ vn 0.400667 -0.763097 0.507099
1152
+ vn 0.475632 -0.833762 0.280385
1153
+ vn 0.517062 -0.835054 -0.187967
1154
+ vn 0.483070 -0.765372 -0.425264
1155
+ vn 0.324892 -0.735451 0.594607
1156
+ vn 0.444439 -0.844306 0.299369
1157
+ vn 0.489760 -0.845891 -0.211198
1158
+ vn 0.423387 -0.737789 -0.525747
1159
+ vn 0.069842 -0.784248 -0.616504
1160
+ vn -0.297830 -0.785923 -0.541869
1161
+ vn -0.301898 -0.681593 -0.666550
1162
+ vn 0.022201 -0.680612 -0.732307
1163
+ vn 0.072733 -0.843432 -0.532289
1164
+ vn -0.266331 -0.845326 -0.463133
1165
+ vn -0.263251 -0.826633 -0.497370
1166
+ vn 0.056267 -0.824959 -0.562385
1167
+ vn -0.458014 -0.712624 -0.531405
1168
+ vn -0.277794 -0.635543 -0.720358
1169
+ vn -0.019531 -0.635360 -0.771969
1170
+ vn 0.217818 -0.710721 -0.668903
1171
+ vn -0.463088 -0.797277 -0.387168
1172
+ vn -0.455189 -0.779095 -0.431062
1173
+ vn 0.255555 -0.776258 -0.576295
1174
+ vn 0.280040 -0.794125 -0.539391
1175
+ vn 0.380301 -0.784410 -0.489972
1176
+ vn 0.143830 -0.857755 -0.493527
1177
+ vn -0.316666 -0.860415 -0.399261
1178
+ vn -0.537341 -0.787834 -0.300968
1179
+ vn 0.484317 -0.753900 -0.443927
1180
+ vn 0.171602 -0.866760 -0.468273
1181
+ vn -0.332863 -0.869599 -0.364691
1182
+ vn -0.616614 -0.757035 -0.216068
1183
+ vn -0.572473 -0.814851 0.091065
1184
+ vn -0.391998 -0.816461 0.423946
1185
+ vn -0.517956 -0.716027 0.468003
1186
+ vn -0.677007 -0.715019 0.174382
1187
+ vn -0.487573 -0.870912 0.061519
1188
+ vn -0.321149 -0.872660 0.367870
1189
+ vn -0.356330 -0.855454 0.375802
1190
+ vn -0.513172 -0.853884 0.086811
1191
+ vn -0.337388 -0.743657 0.577187
1192
+ vn -0.578538 -0.670962 0.463793
1193
+ vn -0.706496 -0.670587 0.226222
1194
+ vn -0.669787 -0.741695 -0.035700
1195
+ vn -0.192413 -0.822057 0.535910
1196
+ vn -0.238244 -0.805823 0.542115
1197
+ vn -0.587346 -0.803109 -0.100207
1198
+ vn -0.557510 -0.819093 -0.135160
1199
+ vn -0.539029 -0.805547 -0.246053
1200
+ vn -0.469652 -0.882659 -0.018455
1201
+ vn -0.243928 -0.885063 0.396436
1202
+ vn -0.087830 -0.808755 0.581551
1203
+ vn -0.526215 -0.771622 -0.357349
1204
+ vn -0.453395 -0.889582 -0.055474
1205
+ vn -0.203646 -0.892203 0.403116
1206
+ vn 0.014361 -0.774568 0.632328
1207
+ vn -0.000000 -0.815561 0.578672
1208
+ vn 0.478553 -0.736188 0.478554
1209
+ vn 0.683877 -0.254215 0.683877
1210
+ vn 0.000000 -0.258385 0.966042
1211
+ vn 0.697271 0.166209 0.697271
1212
+ vn 0.518143 0.680483 0.518143
1213
+ vn 0.000000 0.777905 0.628382
1214
+ vn 0.000000 0.168834 0.985645
1215
+ vn -0.518143 0.680483 0.518143
1216
+ vn -0.697271 0.166209 0.697271
1217
+ vn -0.683877 -0.254215 0.683877
1218
+ vn -0.478554 -0.736188 0.478554
1219
+ vn 0.628382 0.777905 0.000000
1220
+ vn 0.000000 1.000000 0.000000
1221
+ vn 0.518143 0.680483 -0.518143
1222
+ vn 0.000000 0.777905 -0.628382
1223
+ vn -0.518143 0.680483 -0.518143
1224
+ vn -0.628382 0.777905 -0.000000
1225
+ vn 0.697271 0.166209 -0.697271
1226
+ vn -0.000000 0.168834 -0.985644
1227
+ vn 0.683877 -0.254215 -0.683877
1228
+ vn 0.478554 -0.736188 -0.478554
1229
+ vn 0.000000 -0.815561 -0.578672
1230
+ vn 0.000000 -0.258385 -0.966042
1231
+ vn -0.478553 -0.736188 -0.478554
1232
+ vn -0.683877 -0.254215 -0.683877
1233
+ vn -0.697271 0.166209 -0.697271
1234
+ vn 0.578672 -0.815561 0.000000
1235
+ vn 0.000000 -1.000000 0.000000
1236
+ vn -0.578672 -0.815561 0.000000
1237
+ vn 0.966042 -0.258385 0.000000
1238
+ vn 0.985645 0.168834 0.000000
1239
+ vn -0.966042 -0.258385 0.000000
1240
+ vn -0.985645 0.168834 -0.000000
1241
+ vn 0.000000 -0.030921 0.999522
1242
+ vn 0.706779 -0.030462 0.706779
1243
+ vn -0.706779 -0.030462 0.706779
1244
+ vn 0.706779 -0.030462 -0.706779
1245
+ vn -0.000000 -0.030921 -0.999522
1246
+ vn -0.706779 -0.030462 -0.706779
1247
+ vn 0.999522 -0.030921 0.000000
1248
+ vn -0.999522 -0.030921 -0.000000
1249
+ vn 0.000000 -0.128795 0.991671
1250
+ vn 0.701428 -0.126485 0.701428
1251
+ vn -0.701428 -0.126485 0.701428
1252
+ vn 0.701428 -0.126485 -0.701428
1253
+ vn 0.000000 -0.128795 -0.991671
1254
+ vn -0.701428 -0.126485 -0.701428
1255
+ vn 0.991671 -0.128795 -0.000000
1256
+ vn -0.991671 -0.128795 0.000000
1257
+ g archivebaycedar0001_geo
1258
+ usemtl leaves
1259
+ f 7//1 8//2 9//3 10//4
1260
+ f 18//5 19//6 14//7 15//8
1261
+ f 6//9 4//10 9//3 8//2
1262
+ f 4//10 3//11 10//4 9//3
1263
+ f 3//11 5//12 7//1 10//4
1264
+ f 20//13 13//14 14//7 19//6
1265
+ f 16//15 17//16 18//5 15//8
1266
+ f 13//14 6//9 8//2 14//7
1267
+ f 15//8 14//7 8//2 7//1
1268
+ f 5//12 16//15 15//8 7//1
1269
+ f 17//16 21//17 22//18 18//5
1270
+ f 22//18 23//19 19//6 18//5
1271
+ f 24//20 20//13 19//6 23//19
1272
+ f 21//17 1//21 11//22 22//18
1273
+ f 11//22 12//23 23//19 22//18
1274
+ f 2//24 24//20 23//19 12//23
1275
+ f 31//25 32//26 33//27 34//28
1276
+ f 42//29 43//30 38//31 39//32
1277
+ f 30//33 28//34 33//27 32//26
1278
+ f 28//34 27//35 34//28 33//27
1279
+ f 27//35 29//36 31//25 34//28
1280
+ f 44//37 37//38 38//31 43//30
1281
+ f 40//39 41//40 42//29 39//32
1282
+ f 37//38 30//33 32//26 38//31
1283
+ f 39//32 38//31 32//26 31//25
1284
+ f 29//36 40//39 39//32 31//25
1285
+ f 41//40 45//41 46//42 42//29
1286
+ f 46//42 47//43 43//30 42//29
1287
+ f 48//44 44//37 43//30 47//43
1288
+ f 45//41 25//45 35//46 46//42
1289
+ f 35//46 36//47 47//43 46//42
1290
+ f 26//48 48//44 47//43 36//47
1291
+ f 55//49 56//50 57//51 58//52
1292
+ f 66//53 67//54 62//55 63//56
1293
+ f 54//57 52//58 57//51 56//50
1294
+ f 52//58 51//59 58//52 57//51
1295
+ f 51//59 53//60 55//49 58//52
1296
+ f 68//61 61//62 62//55 67//54
1297
+ f 64//63 65//64 66//53 63//56
1298
+ f 61//62 54//57 56//50 62//55
1299
+ f 63//56 62//55 56//50 55//49
1300
+ f 53//60 64//63 63//56 55//49
1301
+ f 65//64 69//65 70//66 66//53
1302
+ f 70//66 71//67 67//54 66//53
1303
+ f 72//68 68//61 67//54 71//67
1304
+ f 69//65 49//69 59//70 70//66
1305
+ f 59//70 60//71 71//67 70//66
1306
+ f 50//72 72//68 71//67 60//71
1307
+ f 79//73 80//74 81//75 82//76
1308
+ f 90//77 91//78 86//79 87//80
1309
+ f 78//81 76//82 81//75 80//74
1310
+ f 76//82 75//83 82//76 81//75
1311
+ f 75//83 77//84 79//73 82//76
1312
+ f 92//85 85//86 86//79 91//78
1313
+ f 88//87 89//88 90//77 87//80
1314
+ f 85//86 78//81 80//74 86//79
1315
+ f 87//80 86//79 80//74 79//73
1316
+ f 77//84 88//87 87//80 79//73
1317
+ f 89//88 93//89 94//90 90//77
1318
+ f 94//90 95//91 91//78 90//77
1319
+ f 96//92 92//85 91//78 95//91
1320
+ f 93//89 73//93 83//94 94//90
1321
+ f 83//94 84//95 95//91 94//90
1322
+ f 74//96 96//92 95//91 84//95
1323
+ f 103//97 104//98 105//99 106//100
1324
+ f 114//101 115//102 110//103 111//104
1325
+ f 102//105 100//106 105//99 104//98
1326
+ f 100//106 99//107 106//100 105//99
1327
+ f 99//107 101//108 103//97 106//100
1328
+ f 116//109 109//110 110//103 115//102
1329
+ f 112//111 113//112 114//101 111//104
1330
+ f 109//110 102//105 104//98 110//103
1331
+ f 111//104 110//103 104//98 103//97
1332
+ f 101//108 112//111 111//104 103//97
1333
+ f 113//112 117//113 118//114 114//101
1334
+ f 118//114 119//115 115//102 114//101
1335
+ f 120//116 116//109 115//102 119//115
1336
+ f 117//113 97//117 107//118 118//114
1337
+ f 107//118 108//119 119//115 118//114
1338
+ f 98//120 120//116 119//115 108//119
1339
+ f 127//121 128//122 129//123 130//124
1340
+ f 138//125 139//126 134//127 135//128
1341
+ f 126//129 124//130 129//123 128//122
1342
+ f 124//130 123//131 130//124 129//123
1343
+ f 123//131 125//132 127//121 130//124
1344
+ f 140//133 133//134 134//127 139//126
1345
+ f 136//135 137//136 138//125 135//128
1346
+ f 133//134 126//129 128//122 134//127
1347
+ f 135//128 134//127 128//122 127//121
1348
+ f 125//132 136//135 135//128 127//121
1349
+ f 137//136 141//137 142//138 138//125
1350
+ f 142//138 143//139 139//126 138//125
1351
+ f 144//140 140//133 139//126 143//139
1352
+ f 141//137 121//141 131//142 142//138
1353
+ f 131//142 132//143 143//139 142//138
1354
+ f 122//144 144//140 143//139 132//143
1355
+ f 151//145 152//146 153//147 154//148
1356
+ f 162//149 163//150 158//151 159//152
1357
+ f 150//153 148//154 153//147 152//146
1358
+ f 148//154 147//155 154//148 153//147
1359
+ f 147//155 149//156 151//145 154//148
1360
+ f 164//157 157//158 158//151 163//150
1361
+ f 160//159 161//160 162//149 159//152
1362
+ f 157//158 150//153 152//146 158//151
1363
+ f 159//152 158//151 152//146 151//145
1364
+ f 149//156 160//159 159//152 151//145
1365
+ f 161//160 165//161 166//162 162//149
1366
+ f 166//162 167//163 163//150 162//149
1367
+ f 168//164 164//157 163//150 167//163
1368
+ f 165//161 145//165 155//166 166//162
1369
+ f 155//166 156//167 167//163 166//162
1370
+ f 146//168 168//164 167//163 156//167
1371
+ f 175//169 176//170 177//171 178//172
1372
+ f 186//173 187//174 182//175 183//176
1373
+ f 174//177 172//178 177//171 176//170
1374
+ f 172//178 171//179 178//172 177//171
1375
+ f 171//179 173//180 175//169 178//172
1376
+ f 188//181 181//182 182//175 187//174
1377
+ f 184//183 185//184 186//173 183//176
1378
+ f 181//182 174//177 176//170 182//175
1379
+ f 183//176 182//175 176//170 175//169
1380
+ f 173//180 184//183 183//176 175//169
1381
+ f 185//184 189//185 190//186 186//173
1382
+ f 190//186 191//187 187//174 186//173
1383
+ f 192//188 188//181 187//174 191//187
1384
+ f 189//185 169//189 179//190 190//186
1385
+ f 179//190 180//191 191//187 190//186
1386
+ f 170//192 192//188 191//187 180//191
1387
+ f 199//193 200//194 201//195 202//196
1388
+ f 210//197 211//198 206//199 207//200
1389
+ f 198//201 196//202 201//195 200//194
1390
+ f 196//202 195//203 202//196 201//195
1391
+ f 195//203 197//204 199//193 202//196
1392
+ f 212//205 205//206 206//199 211//198
1393
+ f 208//207 209//208 210//197 207//200
1394
+ f 205//206 198//201 200//194 206//199
1395
+ f 207//200 206//199 200//194 199//193
1396
+ f 197//204 208//207 207//200 199//193
1397
+ f 209//208 213//209 214//210 210//197
1398
+ f 214//210 215//211 211//198 210//197
1399
+ f 216//212 212//205 211//198 215//211
1400
+ f 213//209 193//213 203//214 214//210
1401
+ f 203//214 204//215 215//211 214//210
1402
+ f 194//216 216//212 215//211 204//215
1403
+ f 223//217 224//218 225//219 226//220
1404
+ f 234//221 235//222 230//223 231//224
1405
+ f 222//225 220//226 225//219 224//218
1406
+ f 220//226 219//227 226//220 225//219
1407
+ f 219//227 221//228 223//217 226//220
1408
+ f 236//229 229//230 230//223 235//222
1409
+ f 232//231 233//232 234//221 231//224
1410
+ f 229//230 222//225 224//218 230//223
1411
+ f 231//224 230//223 224//218 223//217
1412
+ f 221//228 232//231 231//224 223//217
1413
+ f 233//232 237//233 238//234 234//221
1414
+ f 238//234 239//235 235//222 234//221
1415
+ f 240//236 236//229 235//222 239//235
1416
+ f 237//233 217//237 227//238 238//234
1417
+ f 227//238 228//239 239//235 238//234
1418
+ f 218//240 240//236 239//235 228//239
1419
+ f 247//241 248//242 249//243 250//244
1420
+ f 258//245 259//246 254//247 255//248
1421
+ f 246//249 244//250 249//243 248//242
1422
+ f 244//250 243//251 250//244 249//243
1423
+ f 243//251 245//252 247//241 250//244
1424
+ f 260//253 253//254 254//247 259//246
1425
+ f 256//255 257//256 258//245 255//248
1426
+ f 253//254 246//249 248//242 254//247
1427
+ f 255//248 254//247 248//242 247//241
1428
+ f 245//252 256//255 255//248 247//241
1429
+ f 257//256 261//257 262//258 258//245
1430
+ f 262//258 263//259 259//246 258//245
1431
+ f 264//260 260//253 259//246 263//259
1432
+ f 261//257 241//261 251//262 262//258
1433
+ f 251//262 252//263 263//259 262//258
1434
+ f 242//264 264//260 263//259 252//263
1435
+ f 271//265 272//266 273//267 274//268
1436
+ f 282//269 283//270 278//271 279//272
1437
+ f 270//273 268//274 273//267 272//266
1438
+ f 268//274 267//275 274//268 273//267
1439
+ f 267//275 269//276 271//265 274//268
1440
+ f 284//277 277//278 278//271 283//270
1441
+ f 280//279 281//280 282//269 279//272
1442
+ f 277//278 270//273 272//266 278//271
1443
+ f 279//272 278//271 272//266 271//265
1444
+ f 269//276 280//279 279//272 271//265
1445
+ f 281//280 285//281 286//282 282//269
1446
+ f 286//282 287//283 283//270 282//269
1447
+ f 288//284 284//277 283//270 287//283
1448
+ f 285//281 265//285 275//286 286//282
1449
+ f 275//286 276//287 287//283 286//282
1450
+ f 266//288 288//284 287//283 276//287
1451
+ f 295//289 296//290 297//291 298//292
1452
+ f 306//293 307//294 302//295 303//296
1453
+ f 294//297 292//298 297//291 296//290
1454
+ f 292//298 291//299 298//292 297//291
1455
+ f 291//299 293//300 295//289 298//292
1456
+ f 308//301 301//302 302//295 307//294
1457
+ f 304//303 305//304 306//293 303//296
1458
+ f 301//302 294//297 296//290 302//295
1459
+ f 303//296 302//295 296//290 295//289
1460
+ f 293//300 304//303 303//296 295//289
1461
+ f 305//304 309//305 310//306 306//293
1462
+ f 310//306 311//307 307//294 306//293
1463
+ f 312//308 308//301 307//294 311//307
1464
+ f 309//305 289//309 299//310 310//306
1465
+ f 299//310 300//311 311//307 310//306
1466
+ f 290//312 312//308 311//307 300//311
1467
+ f 319//313 320//314 321//315 322//316
1468
+ f 330//317 331//318 326//319 327//320
1469
+ f 318//321 316//322 321//315 320//314
1470
+ f 316//322 315//323 322//316 321//315
1471
+ f 315//323 317//324 319//313 322//316
1472
+ f 332//325 325//326 326//319 331//318
1473
+ f 328//327 329//328 330//317 327//320
1474
+ f 325//326 318//321 320//314 326//319
1475
+ f 327//320 326//319 320//314 319//313
1476
+ f 317//324 328//327 327//320 319//313
1477
+ f 329//328 333//329 334//330 330//317
1478
+ f 334//330 335//331 331//318 330//317
1479
+ f 336//332 332//325 331//318 335//331
1480
+ f 333//329 313//333 323//334 334//330
1481
+ f 323//334 324//335 335//331 334//330
1482
+ f 314//336 336//332 335//331 324//335
1483
+ f 343//337 344//338 345//339 346//340
1484
+ f 354//341 355//342 350//343 351//344
1485
+ f 342//345 340//346 345//339 344//338
1486
+ f 340//346 339//347 346//340 345//339
1487
+ f 339//347 341//348 343//337 346//340
1488
+ f 356//349 349//350 350//343 355//342
1489
+ f 352//351 353//352 354//341 351//344
1490
+ f 349//350 342//345 344//338 350//343
1491
+ f 351//344 350//343 344//338 343//337
1492
+ f 341//348 352//351 351//344 343//337
1493
+ f 353//352 357//353 358//354 354//341
1494
+ f 358//354 359//355 355//342 354//341
1495
+ f 360//356 356//349 355//342 359//355
1496
+ f 357//353 337//357 347//358 358//354
1497
+ f 347//358 348//359 359//355 358//354
1498
+ f 338//360 360//356 359//355 348//359
1499
+ f 367//361 368//362 369//363 370//364
1500
+ f 378//365 379//366 374//367 375//368
1501
+ f 366//369 364//370 369//363 368//362
1502
+ f 364//370 363//371 370//364 369//363
1503
+ f 363//371 365//372 367//361 370//364
1504
+ f 380//373 373//374 374//367 379//366
1505
+ f 376//375 377//376 378//365 375//368
1506
+ f 373//374 366//369 368//362 374//367
1507
+ f 375//368 374//367 368//362 367//361
1508
+ f 365//372 376//375 375//368 367//361
1509
+ f 377//376 381//377 382//378 378//365
1510
+ f 382//378 383//379 379//366 378//365
1511
+ f 384//380 380//373 379//366 383//379
1512
+ f 381//377 361//381 371//382 382//378
1513
+ f 371//382 372//383 383//379 382//378
1514
+ f 362//384 384//380 383//379 372//383
1515
+ f 391//385 392//386 393//387 394//388
1516
+ f 402//389 403//390 398//391 399//392
1517
+ f 390//393 388//394 393//387 392//386
1518
+ f 388//394 387//395 394//388 393//387
1519
+ f 387//395 389//396 391//385 394//388
1520
+ f 404//397 397//398 398//391 403//390
1521
+ f 400//399 401//400 402//389 399//392
1522
+ f 397//398 390//393 392//386 398//391
1523
+ f 399//392 398//391 392//386 391//385
1524
+ f 389//396 400//399 399//392 391//385
1525
+ f 401//400 405//401 406//402 402//389
1526
+ f 406//402 407//403 403//390 402//389
1527
+ f 408//404 404//397 403//390 407//403
1528
+ f 405//401 385//405 395//406 406//402
1529
+ f 395//406 396//407 407//403 406//402
1530
+ f 386//408 408//404 407//403 396//407
1531
+ f 415//409 416//410 417//411 418//412
1532
+ f 426//413 427//414 422//415 423//416
1533
+ f 414//417 412//418 417//411 416//410
1534
+ f 412//418 411//419 418//412 417//411
1535
+ f 411//419 413//420 415//409 418//412
1536
+ f 428//421 421//422 422//415 427//414
1537
+ f 424//423 425//424 426//413 423//416
1538
+ f 421//422 414//417 416//410 422//415
1539
+ f 423//416 422//415 416//410 415//409
1540
+ f 413//420 424//423 423//416 415//409
1541
+ f 425//424 429//425 430//426 426//413
1542
+ f 430//426 431//427 427//414 426//413
1543
+ f 432//428 428//421 427//414 431//427
1544
+ f 429//425 409//429 419//430 430//426
1545
+ f 419//430 420//431 431//427 430//426
1546
+ f 410//432 432//428 431//427 420//431
1547
+ f 439//433 440//434 441//435 442//436
1548
+ f 450//437 451//438 446//439 447//440
1549
+ f 438//441 436//442 441//435 440//434
1550
+ f 436//442 435//443 442//436 441//435
1551
+ f 435//443 437//444 439//433 442//436
1552
+ f 452//445 445//446 446//439 451//438
1553
+ f 448//447 449//448 450//437 447//440
1554
+ f 445//446 438//441 440//434 446//439
1555
+ f 447//440 446//439 440//434 439//433
1556
+ f 437//444 448//447 447//440 439//433
1557
+ f 449//448 453//449 454//450 450//437
1558
+ f 454//450 455//451 451//438 450//437
1559
+ f 456//452 452//445 451//438 455//451
1560
+ f 453//449 433//453 443//454 454//450
1561
+ f 443//454 444//455 455//451 454//450
1562
+ f 434//456 456//452 455//451 444//455
1563
+ f 463//457 464//458 465//459 466//460
1564
+ f 474//461 475//462 470//463 471//464
1565
+ f 462//465 460//466 465//459 464//458
1566
+ f 460//466 459//467 466//460 465//459
1567
+ f 459//467 461//468 463//457 466//460
1568
+ f 476//469 469//470 470//463 475//462
1569
+ f 472//471 473//472 474//461 471//464
1570
+ f 469//470 462//465 464//458 470//463
1571
+ f 471//464 470//463 464//458 463//457
1572
+ f 461//468 472//471 471//464 463//457
1573
+ f 473//472 477//473 478//474 474//461
1574
+ f 478//474 479//475 475//462 474//461
1575
+ f 480//476 476//469 475//462 479//475
1576
+ f 477//473 457//477 467//478 478//474
1577
+ f 467//478 468//479 479//475 478//474
1578
+ f 458//480 480//476 479//475 468//479
1579
+ f 487//481 488//482 489//483 490//484
1580
+ f 498//485 499//486 494//487 495//488
1581
+ f 486//489 484//490 489//483 488//482
1582
+ f 484//490 483//491 490//484 489//483
1583
+ f 483//491 485//492 487//481 490//484
1584
+ f 500//493 493//494 494//487 499//486
1585
+ f 496//495 497//496 498//485 495//488
1586
+ f 493//494 486//489 488//482 494//487
1587
+ f 495//488 494//487 488//482 487//481
1588
+ f 485//492 496//495 495//488 487//481
1589
+ f 497//496 501//497 502//498 498//485
1590
+ f 502//498 503//499 499//486 498//485
1591
+ f 504//500 500//493 499//486 503//499
1592
+ f 501//497 481//501 491//502 502//498
1593
+ f 491//502 492//503 503//499 502//498
1594
+ f 482//504 504//500 503//499 492//503
1595
+ f 511//505 512//506 513//507 514//508
1596
+ f 522//509 523//510 518//511 519//512
1597
+ f 510//513 508//514 513//507 512//506
1598
+ f 508//514 507//515 514//508 513//507
1599
+ f 507//515 509//516 511//505 514//508
1600
+ f 524//517 517//518 518//511 523//510
1601
+ f 520//519 521//520 522//509 519//512
1602
+ f 517//518 510//513 512//506 518//511
1603
+ f 519//512 518//511 512//506 511//505
1604
+ f 509//516 520//519 519//512 511//505
1605
+ f 521//520 525//521 526//522 522//509
1606
+ f 526//522 527//523 523//510 522//509
1607
+ f 528//524 524//517 523//510 527//523
1608
+ f 525//521 505//525 515//526 526//522
1609
+ f 515//526 516//527 527//523 526//522
1610
+ f 506//528 528//524 527//523 516//527
1611
+ f 535//529 536//530 537//531 538//532
1612
+ f 546//533 547//534 542//535 543//536
1613
+ f 534//537 532//538 537//531 536//530
1614
+ f 532//538 531//539 538//532 537//531
1615
+ f 531//539 533//540 535//529 538//532
1616
+ f 548//541 541//542 542//535 547//534
1617
+ f 544//543 545//544 546//533 543//536
1618
+ f 541//542 534//537 536//530 542//535
1619
+ f 543//536 542//535 536//530 535//529
1620
+ f 533//540 544//543 543//536 535//529
1621
+ f 545//544 549//545 550//546 546//533
1622
+ f 550//546 551//547 547//534 546//533
1623
+ f 552//548 548//541 547//534 551//547
1624
+ f 549//545 529//549 539//550 550//546
1625
+ f 539//550 540//551 551//547 550//546
1626
+ f 530//552 552//548 551//547 540//551
1627
+ f 559//553 560//554 561//555 562//556
1628
+ f 570//557 571//558 566//559 567//560
1629
+ f 558//561 556//562 561//555 560//554
1630
+ f 556//562 555//563 562//556 561//555
1631
+ f 555//563 557//564 559//553 562//556
1632
+ f 572//565 565//566 566//559 571//558
1633
+ f 568//567 569//568 570//557 567//560
1634
+ f 565//566 558//561 560//554 566//559
1635
+ f 567//560 566//559 560//554 559//553
1636
+ f 557//564 568//567 567//560 559//553
1637
+ f 569//568 573//569 574//570 570//557
1638
+ f 574//570 575//571 571//558 570//557
1639
+ f 576//572 572//565 571//558 575//571
1640
+ f 573//569 553//573 563//574 574//570
1641
+ f 563//574 564//575 575//571 574//570
1642
+ f 554//576 576//572 575//571 564//575
1643
+ f 602//577 603//578 604//579 605//580
1644
+ f 584//581 578//582 581//583 589//584
1645
+ f 581//583 577//585 583//586 589//584
1646
+ f 606//587 607//588 602//577 605//580
1647
+ f 581//583 578//582 586//589 590//590
1648
+ f 586//589 580//591 582//592 590//590
1649
+ f 582//592 579//593 585//594 590//590
1650
+ f 585//594 577//585 581//583 590//590
1651
+ f 582//592 580//591 588//595 591//596
1652
+ f 608//597 609//598 610//599 611//600
1653
+ f 610//599 612//601 613//602 611//600
1654
+ f 587//603 579//593 582//592 591//596
1655
+ f 610//599 609//598 614//604 615//605
1656
+ f 614//604 603//578 602//577 615//605
1657
+ f 602//577 607//588 616//606 615//605
1658
+ f 616//606 612//601 610//599 615//605
1659
+ f 614//604 609//598 608//597 617//607
1660
+ f 588//595 580//591 586//589 592//608
1661
+ f 586//589 578//582 584//581 592//608
1662
+ f 604//579 603//578 614//604 617//607
1663
+ f 616//606 607//588 606//587 618//609
1664
+ f 583//586 577//585 585//594 593//610
1665
+ f 585//594 579//593 587//603 593//610
1666
+ f 613//602 612//601 616//606 618//609
1667
+ f 584//581 589//584 595//611 594//612
1668
+ f 589//584 583//586 596//613 595//611
1669
+ f 591//596 588//595 597//614 598//615
1670
+ f 587//603 591//596 598//615 599//616
1671
+ f 588//595 592//608 600//617 597//614
1672
+ f 592//608 584//581 594//612 600//617
1673
+ f 583//586 593//610 601//618 596//613
1674
+ f 593//610 587//603 599//616 601//618
1675
+ f 594//612 595//611 625//619 626//620
1676
+ f 595//611 596//613 624//621 625//619
1677
+ f 598//615 597//614 620//622 621//623
1678
+ f 599//616 598//615 621//623 622//624
1679
+ f 597//614 600//617 619//625 620//622
1680
+ f 619//625 600//617 594//612 626//620
1681
+ f 596//613 601//618 623//626 624//621
1682
+ f 601//618 599//616 622//624 623//626
1683
+ f 620//622 619//625 617//607 608//597
1684
+ f 621//623 620//622 608//597 611//600
1685
+ f 622//624 621//623 611//600 613//602
1686
+ f 623//626 622//624 613//602 618//609
1687
+ f 624//621 623//626 618//609 606//587
1688
+ f 625//619 624//621 606//587 605//580
1689
+ f 626//620 625//619 605//580 604//579
1690
+ f 619//625 626//620 604//579 617//607
vae/Irand/island/obj/isBayCedarA1/isBayCedarA1.hier ADDED
The diff for this file is too large to render. See raw diff
 
vae/Irand/island/obj/isBayCedarA1/isBayCedarA1.mtl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ newmtl leaves
2
+ newmtl barkSimple
3
+ newmtl bark
vae/Irand/island/obj/isBayCedarA1/isBayCedarA1.obj ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:da68baa86c373fa25b8216841a38dcb10d50054f467ef004ac8af0902c228cce
3
+ size 125931183
vae/Irand/island/obj/isBayCedarA1/isBayCedarA1_bonsaiA.hier ADDED
The diff for this file is too large to render. See raw diff
 
vae/Irand/island/obj/isBayCedarA1/isBayCedarA1_bonsaiA.mtl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ newmtl leaves
2
+ newmtl barkSimple
3
+ newmtl bark
vae/Irand/island/obj/isBayCedarA1/isBayCedarA1_bonsaiA.obj ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:865d9dd9b5bde8c1de02c382e8c9e6fa5be5523807ceb7afabddb0d30011baa3
3
+ size 136106985
vae/Irand/island/obj/isBayCedarA1/isBayCedarA1_bonsaiB.hier ADDED
The diff for this file is too large to render. See raw diff
 
vae/Irand/island/obj/isBayCedarA1/isBayCedarA1_bonsaiB.mtl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ newmtl leaves
2
+ newmtl barkSimple
3
+ newmtl bark
vae/Irand/island/obj/isBayCedarA1/isBayCedarA1_bonsaiB.obj ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c130c615b6c104ff95b38e24b969d9239408999e6d9909ae7cc7db925e533b78
3
+ size 47593478
vae/Irand/island/obj/isBayCedarA1/isBayCedarA1_bonsaiC.hier ADDED
The diff for this file is too large to render. See raw diff
 
vae/Irand/island/obj/isBayCedarA1/isBayCedarA1_bonsaiC.mtl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ newmtl leaves
2
+ newmtl barkSimple
3
+ newmtl bark
vae/Irand/island/obj/isBayCedarA1/isBayCedarA1_bonsaiC.obj ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e2503b424c3f073a3b7e40b51f0008798396c6950b6f4feee41658456d460b4e
3
+ size 39661755
vae/Irand/island/ref/pbrtRenders/beachCam.png ADDED
vae/Irand/island/ref/pbrtRenders/birdseyeCam.png ADDED
vae/Irand/island/ref/pbrtRenders/dunesACam.png ADDED
vae/Irand/island/ref/pbrtRenders/flowersCam.png ADDED
vae/Irand/island/ref/pbrtRenders/grassCam.png ADDED
vae/Irand/island/ref/pbrtRenders/palmsCam.png ADDED
vae/Irand/island/ref/pbrtRenders/rootsCam.png ADDED
vae/Irand/island/ref/pbrtRenders/shotCam.png ADDED
vae/Irand/island/scripts/embree/.DS_Store ADDED
Binary file (6.15 kB). View file
 
vae/Irand/island/scripts/embree/._.DS_Store ADDED
Binary file (4.1 kB). View file
 
vae/Irand/island/scripts/embree/._README.txt ADDED
Binary file (4.1 kB). View file
 
vae/Irand/island/scripts/embree/._embreeConvert.py ADDED
Binary file (4.1 kB). View file
 
vae/Irand/island/scripts/embree/._embreeConvertAll.sh ADDED
Binary file (4.1 kB). View file
 
vae/Irand/island/scripts/embree/._embreeutils.py ADDED
Binary file (4.1 kB). View file
 
vae/Irand/island/scripts/embree/README.txt ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ This folder contains scripts to convert the Moana Island scene into
2
+ the Embree XML format.
3
+
4
+ For the scripts to work you need to install the Embree Ray Tracing
5
+ Kernels v3.1.0, which can be downloaded from
6
+ https://github.com/embree/embree/releases/tag/v3.1.0. Make
7
+ sure that the folder containing the `convert` application that comes
8
+ with Embree is inside your PATH.
9
+
10
+ Now you can invoke the conversion from the root folder of the Moana
11
+ Island scene:
12
+
13
+
14
+ cd island
15
+ ./scripts/embree/embreeConvertAll.sh
16
+
17
+ The conversion will take a couple of hours and will require 60GB of
18
+ system memory. When the conversion finished you can render the model,
19
+ e.g. using the Embree tutorial pathtracer:
20
+
21
+ path_to_embree/bin/pathtracer -c island/embree/island.ecs
22
+
23
+ The Embree pathtracer does not support the PTEX textures nor advanced
24
+ materials of the model, this all materials will get rendered with simple
25
+ diffuse colors provided with the model only.
vae/Irand/island/scripts/embree/embreeConvert.py ADDED
@@ -0,0 +1,201 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env python
2
+ """
3
+ give a json element file, create pbrt scenes and objects. This should create the main element/element.xml,
4
+ element/geometry.xml and element/materials.xml. In addition, if the element has instanced primitives, then
5
+ for each primitive, a primitive subdirectory is created, along with a primitive.xml file and an archive_geometry
6
+ pbrt file for each archive referenced by that primitive description:
7
+
8
+ element/element.xml
9
+ element/element_geometry.xml
10
+ element/material.xml
11
+ element/objects.xml
12
+
13
+ element/primitive/primitive.xml
14
+ element/primitive/archive_geometry.xml
15
+
16
+ """
17
+ import sys
18
+ import os
19
+ import argparse
20
+ import json
21
+ import embreeutils as pu
22
+
23
+ ISLANDDIR = os.getcwd()
24
+
25
+
26
+ def parseArgs():
27
+
28
+ parser = argparse.ArgumentParser(
29
+ description="Takes an element and creates pbrt element version of the geometry and scene.")
30
+
31
+ parser.add_argument('element', metavar='ELEM', help="Element to load.")
32
+ parser.add_argument('--frameRange', type=str, default="1", help="Frame range to export, i.e. 1 or 1-3 or 1-5:2")
33
+ parser.add_argument('-o', '--outdir', default=ISLANDDIR, help="Where to write out the pbrt files(s).")
34
+ parser.add_argument('--skipObj', action='store_true', default=False, help="Skip Obj Conversion")
35
+ parser.add_argument('--skipCopies', action='store_true', default=False, help="Skip Instanced Copies Obj Generation")
36
+ parser.add_argument('--skipArchives', action='store_true', default=False, help="Skip Archive Conversion")
37
+ parser.add_argument('--skipMat', action='store_true', default=False, help="Skip Material Generation")
38
+ parser.add_argument('--skipPrims', action='store_true', default=False, help="Skip Primitive(s) PBRT Generation")
39
+ parser.add_argument('--skipMain', action='store_true', default=False, help="Skip Main PBRT Generation")
40
+ parser.add_argument('--prim', default="", help="Specific json primitive file to load, i.e. xgGrass")
41
+
42
+ return parser.parse_args()
43
+
44
+
45
+ def main():
46
+ args = parseArgs()
47
+
48
+ if args.element == "island":
49
+ # create the main island file.
50
+ pu.writeMainPbrtFile()
51
+ pu.writeEmbreeEcsFile()
52
+ return
53
+
54
+ jsonFile = os.path.join("json", args.element, args.element + ".json")
55
+ with open(jsonFile, "r") as jf:
56
+ jsonDict = json.load(jf)
57
+
58
+ # pull data from dict
59
+ element = jsonDict["name"]
60
+ objFile = jsonDict["geomObjFile"]
61
+ matFile = jsonDict["matFile"] if "matFile" in jsonDict else ""
62
+ instancedPrimitives = jsonDict["instancedPrimitiveJsonFiles"] if "instancedPrimitiveJsonFiles" in jsonDict else {}
63
+ instancedCopies = jsonDict["instancedCopies"] if "instancedCopies" in jsonDict else {}
64
+ primDesc = args.prim
65
+
66
+ archiveFiles = {}
67
+ primitiveFiles = []
68
+
69
+ print "Preparing embree export for element: ", element
70
+ elementDir = os.path.join(args.outdir, "embree", element)
71
+
72
+ # make all the directories we're going to need
73
+ for outDir in [elementDir] + [os.path.join(args.outdir, "embree", element, x) for x in instancedPrimitives]:
74
+ if not os.path.exists(outDir):
75
+ os.makedirs(outDir)
76
+
77
+ # relative path and full path names of the output files for embree.
78
+ pbrtRelOutElement = os.path.join(element, element + ".xml")
79
+ pbrtRelOutGeometry = os.path.join(element, element + "_geometry.xml")
80
+ pbrtRelOutMaterials = os.path.join(element, "materials.xml")
81
+ pbrtOutElement = os.path.join(elementDir, element + ".xml")
82
+ pbrtOutGeometry = os.path.join(elementDir, element + "_geometry.xml")
83
+ pbrtOutMaterials = os.path.join(elementDir, "materials.xml")
84
+
85
+ ##############################################
86
+ # Convert materials for the element --> element/materials.xml
87
+ # -- we convert these first because we need the information to insert it into the OBJs.
88
+ if not args.skipMat:
89
+ print "################################################# Converting Materials: "
90
+ pu.matToPbrt(element, matFile, pbrtOutMaterials)
91
+
92
+ ##############################################
93
+ # Convert geometry -- main file--> element/element_geometry.xml (to be consistent w/ instances)
94
+ if not args.skipObj:
95
+ print "################################################# Converting main element OBJ file: "
96
+ print "Exporting: ", pbrtOutGeometry
97
+ pu.geomToPbrt(objFile, pbrtOutGeometry, "", "../../")
98
+
99
+ ##############################################
100
+ # Convert geometry #2 -- instanced copies with their own geometry (isPalmRig special case code....)
101
+ if instancedCopies:
102
+ print "################################################# Converting Instanced copies OBJ files: "
103
+ for instance, icDict in instancedCopies.iteritems():
104
+ if "geomObjFile" in icDict:
105
+ pbrtOutInstGeometry = os.path.join(elementDir, instance + "_geometry.xml")
106
+ print "Exporting: ", pbrtOutInstGeometry
107
+ pu.geomToPbrt(icDict['geomObjFile'], pbrtOutInstGeometry , "", "../../")
108
+
109
+ ##############################################
110
+ # convert geometry #3 - primitives json files and associated archives --> element/primitive/archive_geometry.xml
111
+ # note: we don't need to run this for instanced copies -- we're assuming they use the same primitives.
112
+ if not args.skipArchives or not instancedPrimitives:
113
+ print "################################################# Converting Instanced JSON files and OBJ archives: "
114
+ for primitiveName, ipDict in instancedPrimitives.iteritems():
115
+ # this file is the instance name and transforms of each archive, keyed by archive (obj)
116
+ if "archives" in ipDict:
117
+ print "Create geometry data for all archives associated with ", primitiveName
118
+ archiveFiles[primitiveName] = []
119
+ for archive in ipDict["archives"]:
120
+ # this is a list of all the archives referenced above.
121
+ base = os.path.basename(archive)[:-4]
122
+ pbrtOutArchiveGeometry = os.path.join(elementDir, primitiveName, base + "_geometry.xml")
123
+ if not os.path.exists(pbrtOutArchiveGeometry):
124
+ print "Exporting: ", pbrtOutArchiveGeometry
125
+ if ipDict["type"] == "archive":
126
+ pu.geomToPbrt(archive, pbrtOutArchiveGeometry, "", "../../../")
127
+ else:
128
+ #variantMatFile = os.path.join(args.outdir, "json", ipDict["element"],"materials.json" )
129
+ variantMatFile = os.path.join("embree", ipDict["element"],"materials.xml" )
130
+ print "...Exporting variant with alternate material file: %s" % variantMatFile
131
+ pu.geomToPbrt(archive, pbrtOutArchiveGeometry, variantMatFile,"../../../")
132
+ archiveFiles[primitiveName].append(pbrtOutArchiveGeometry)
133
+
134
+ else:
135
+ # If we skipped creating archives, re-build the list here here.
136
+ if instancedPrimitives:
137
+ for primitiveName, iDict in instancedPrimitives.iteritems():
138
+ archiveFiles[primitiveName] = [os.path.join(element, primitiveName, x)
139
+ for x in os.listdir(os.path.join(elementDir, primitiveName))
140
+ if x.endswith("geometry.xml")]
141
+
142
+ if not args.skipPrims:
143
+ ##############################################
144
+ # Create primitives #1: element/primitive/instance_primitive.xml. This creates either
145
+ # an archive type or curve type of file. All created files are added to a list for later
146
+ # referencing in the main element pbrt file.
147
+ print "################################################# Creating Primitive reference files: "
148
+ for primitiveName, ipDict in instancedPrimitives.iteritems():
149
+ if primDesc and primDesc != primitiveName:
150
+ continue
151
+ # this file is the instance name and transforms of each archive, keyed by archive (obj)
152
+ print "Create main primitive file for:", primitiveName, "using", ipDict["jsonFile"]
153
+ primitiveFiles.append(pu.jsonPrimitiveToPbrt(ipDict["type"] if "type" in ipDict else "", element, primitiveName, ipDict))
154
+
155
+ #############################################
156
+ # Create primitve #3 -- for all 'element' archive types, create any included primitives associated with
157
+ # them, i.e. - isBayCedarA1_bonsaiA_xgBonsai
158
+ if "type" in ipDict and ipDict["type"] == "element":
159
+ sourceDict = pu.readJsonFile(os.path.join("json", ipDict["element"], ipDict["element"]+".json"))
160
+ for variant, vDict in sourceDict["variants"].iteritems():
161
+ if "instancedPrimitiveJsonFiles" not in vDict:
162
+ continue
163
+ for primitiveName, vipDict in vDict["instancedPrimitiveJsonFiles"].iteritems():
164
+ primitiveFiles.append(pu.jsonPrimitiveToPbrt(vipDict["type"], ipDict["element"], primitiveName, vipDict))
165
+
166
+ ##############################################
167
+ # Create primitives #3 -- instanced copies with their own primitives (i,e, - isPalmRig3 w xgFronds3)
168
+ if instancedCopies:
169
+ print "################################################# Creating instanced copies primitives files: "
170
+ for instance, icDict in instancedCopies.iteritems():
171
+ if "instancedPrimitiveJsonFiles" in icDict:
172
+ for primitiveName, ipDict in icDict["instancedPrimitiveJsonFiles"].iteritems():
173
+ print "Create primitive file for:", primitiveName, "using", ipDict["jsonFile"]
174
+ primitiveFiles.append(pu.jsonPrimitiveToPbrt(ipDict["type"] if "type" in ipDict else "", element, primitiveName, ipDict))
175
+
176
+ else:
177
+ # If we skipped the conversion, build primitiveFiles list here.
178
+ for primitiveName in instancedPrimitives:
179
+ primitiveFiles += [os.path.join(element, primitiveName, x)
180
+ for x in os.listdir(os.path.join(elementDir, primitiveName))
181
+ if x.endswith(".xml") and
182
+ not x.endswith("geometry.xml")]
183
+
184
+ if not args.skipMain:
185
+ ##############################################
186
+ # Create the main pbrt reference file with builds the hierarchy via includes and transform.
187
+ # --> element/element.xml
188
+ print "################################################# Creating main element reference: "
189
+ print "Exporting:", pbrtOutElement
190
+ pu.writeMainElement(pbrtOutElement, pbrtRelOutMaterials, pbrtRelOutGeometry, primitiveFiles,
191
+ sourceJsonFile=jsonFile)
192
+
193
+
194
+ if __name__ == "__main__":
195
+ if main():
196
+ sys.exit(0)
197
+ sys.exit(1)
198
+
199
+
200
+
201
+
vae/Irand/island/scripts/embree/embreeConvertAll.sh ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+ CONVERT=convert
3
+
4
+ ./scripts/embree/embreeConvert.py isHibiscus
5
+ ./scripts/embree/embreeConvert.py isIronwoodA1
6
+ ./scripts/embree/embreeConvert.py isKava
7
+ ./scripts/embree/embreeConvert.py isNaupakaA
8
+ ./scripts/embree/embreeConvert.py isBayCedarA1
9
+ ./scripts/embree/embreeConvert.py isGardeniaA
10
+ ./scripts/embree/embreeConvert.py isHibiscusYoung
11
+ ./scripts/embree/embreeConvert.py isIronwoodB
12
+ ./scripts/embree/embreeConvert.py isLavaRocks
13
+ ./scripts/embree/embreeConvert.py isPalmDead
14
+ ./scripts/embree/embreeConvert.py isPalmRig
15
+ ./scripts/embree/embreeConvert.py isPandanusA
16
+ ./scripts/embree/embreeConvert.py osOcean
17
+ ./scripts/embree/embreeConvert.py isCoral
18
+ ./scripts/embree/embreeConvert.py isBeach
19
+ ./scripts/embree/embreeConvert.py isCoastline
20
+ ./scripts/embree/embreeConvert.py isDunesA
21
+ ./scripts/embree/embreeConvert.py isDunesB
22
+ ./scripts/embree/embreeConvert.py isMountainA
23
+ ./scripts/embree/embreeConvert.py isMountainB
24
+ ./scripts/embree/embreeConvert.py island
25
+
26
+ for f in `find obj -type d`; do echo $f; mkdir xml${f:3}; done
27
+ for f in `find obj/ -type f -name "*.obj" `; do echo $f; $CONVERT -reference-materials -i $f -o xml${f:3:-3}xml; done
28
+
29
+ $CONVERT -i embree/isHibiscus/isHibiscus.xml -o embree/isHibiscus.xml
30
+ $CONVERT -i embree/isIronwoodA1/isIronwoodA1.xml -o embree/isIronwoodA1.xml
31
+ $CONVERT -i embree/isKava/isKava.xml -o embree/isKava.xml
32
+ $CONVERT -i embree/isNaupakaA/isNaupakaA.xml -o embree/isNaupakaA.xml
33
+ $CONVERT -i embree/isBayCedarA1/isBayCedarA1.xml -o embree/isBayCedarA1.xml
34
+ $CONVERT -i embree/isGardeniaA/isGardeniaA.xml -o embree/isGardeniaA.xml
35
+ $CONVERT -i embree/isHibiscusYoung/isHibiscusYoung.xml -o embree/isHibiscusYoung.xml
36
+ $CONVERT -i embree/isIronwoodB/isIronwoodB.xml -o embree/isIronwoodB.xml
37
+ $CONVERT -i embree/isLavaRocks/isLavaRocks.xml -o embree/isLavaRocks.xml
38
+ $CONVERT -i embree/isPalmDead/isPalmDead.xml -o embree/isPalmDead.xml
39
+ $CONVERT -i embree/isPalmRig/isPalmRig.xml -o embree/isPalmRig.xml
40
+ $CONVERT -i embree/isPandanusA/isPandanusA.xml -o embree/isPandanusA.xml
41
+ $CONVERT -i embree/osOcean/osOcean.xml -o embree/osOcean.xml
42
+ $CONVERT -i embree/isCoral/isCoral.xml -o embree/isCoral.xml
43
+ $CONVERT -i embree/isBeach/isBeach.xml -o embree/isBeach.xml
44
+ $CONVERT -i embree/isCoastline/isCoastline.xml -o embree/isCoastline.xml
45
+ $CONVERT -i embree/isDunesA/isDunesA.xml -o embree/isDunesA.xml
46
+ $CONVERT -i embree/isDunesB/isDunesB.xml -o embree/isDunesB.xml
47
+ $CONVERT -i embree/isMountainA/isMountainA.xml -o embree/isMountainA.xml
48
+ $CONVERT -i embree/isMountainB/isMountainB.xml -o embree/isMountainB.xml
49
+
50
+ $CONVERT -i embree/island.xml -flatten-group -o embree/island_flattened.xml
51
+
52
+
vae/Irand/island/scripts/embree/embreeutils.py ADDED
@@ -0,0 +1,896 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import sys
3
+ import fcntl
4
+ import stat
5
+ import json
6
+ import math
7
+ import subprocess
8
+ import fnmatch
9
+ import re
10
+ import tempfile
11
+ import shutil
12
+
13
+ OUTDIR = os.getcwd()
14
+ CAMFILE = OUTDIR + "/json/cameras/shotCam.json"
15
+ LIGHTFILE = OUTDIR + "/json/lights/lights.json"
16
+
17
+ #OBJ2PBRT = shutil.which("obj2pbrt")
18
+ #OCEAN2PBRT = shutil.which("obj2pbrt")
19
+ TMPDIR = '/tmp'
20
+ IDENTITY = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]
21
+
22
+ # DISNEY: Solids has scattrDistR,G and B; Thin has flatness and diffTrans
23
+ # PBRT: difftrans and flatness are specific to the BSDF, enabled by the thin parameter
24
+ DIS2PBRT = {
25
+ "metallic": "float metallic",
26
+ "roughness": "float roughness",
27
+ "anisotropic": "float anisotropic",
28
+ "specularTint": "float speculartint",
29
+ "sheen": "float sheen",
30
+ "sheenTint": "float sheentint",
31
+ "clearcoat" : "float clearcoat",
32
+ "clearcoatGloss": "float clearcoatgloss",
33
+ "specTrans" : "float spectrans",
34
+ "ior" : "float eta"
35
+ }
36
+
37
+
38
+ def mon2lin(color):
39
+ return [math.pow(color[0], 2.2), math.pow(color[1], 2.2), math.pow(color[2], 2.2)]
40
+
41
+
42
+ def readJsonFile(jsonFile):
43
+ """
44
+ Wrapper script to import json file as dict.
45
+ :param jsonFile: file as string
46
+ :return: dict
47
+ """
48
+ with open(os.path.abspath(jsonFile), "r") as jf:
49
+ jsonDict = json.load(jf)
50
+ return jsonDict if jsonDict else {}
51
+
52
+
53
+ def writeEmbreeEcsFile():
54
+ ecsFilePath = os.path.abspath("embree/island.ecs")
55
+ ecsFile = os.open(ecsFilePath, os.O_WRONLY | os.O_CREAT | os.O_TRUNC)
56
+ fcntl.flock(ecsFile, fcntl.LOCK_EX)
57
+ try:
58
+ f = os.fdopen(ecsFile,'w')
59
+ except IOError as (errno, strerror):
60
+ print "Couldn't open %s for write: %s" % (ecsFilePath, strerror)
61
+ return False
62
+
63
+ f.writelines('-i island_flattened.xml --instancing flattened --verbose 1\n')
64
+
65
+ os.fsync(ecsFile)
66
+ fcntl.flock(ecsFile, fcntl.LOCK_UN)
67
+ f.close()
68
+ os.chmod(ecsFilePath, stat.S_IRUSR|stat.S_IWUSR|stat.S_IRGRP|stat.S_IWGRP|stat.S_IROTH|stat.S_IWOTH)
69
+ print "Writing main ECS file: ", ecsFilePath
70
+
71
+ return True
72
+
73
+ def writeMainPbrtFile(outPbrtFile="embree/island.xml"):
74
+ """
75
+ Create the main XML file with has all the camera, lights and geometry includes and WorldBegin/End
76
+ :param outPbrtFile: file to create
77
+ :return: success
78
+ """
79
+ pbrtFile = os.path.abspath(outPbrtFile)
80
+ pbrtFileObj = os.open(pbrtFile, os.O_WRONLY | os.O_CREAT | os.O_TRUNC)
81
+ fcntl.flock(pbrtFileObj, fcntl.LOCK_EX)
82
+
83
+ try:
84
+ f = os.fdopen(pbrtFileObj,'w')
85
+ except IOError as (errno, strerror):
86
+ print "Couldn't open %s for write: %s" % (pbrtFile, strerror)
87
+ return False
88
+
89
+ f.writelines('<?xml version="1.0"?>\n\n')
90
+ f.writelines('<scene>\n')
91
+ #f.writelines(createDefaultHeader())
92
+
93
+ with open(CAMFILE, "r") as cf:
94
+ cameraDict = json.load(cf)
95
+
96
+ f.writelines(' <PerspectiveCamera name="default"\n')
97
+ f.writelines(' from="%f %f %f"\n' % (cameraDict["eye"][0], cameraDict["eye"][1], cameraDict["eye"][2]))
98
+ f.writelines(' to="%f %f %f"\n' % (cameraDict["look"][0], cameraDict["look"][1], cameraDict["look"][2]))
99
+ f.writelines(' up="%f %f %f"\n' % (cameraDict["up"][0], cameraDict["up"][1], cameraDict["up"][2]))
100
+ f.writelines(' fov="%f"\n' % cameraDict["fov"])
101
+ f.writelines(' />\n')
102
+ f.writelines('\n')
103
+
104
+ f.writelines(' <DirectionalLight>\n')
105
+ f.writelines(' <AffineSpace>\n')
106
+ f.writelines(' 1 0 -1 0\n')
107
+ f.writelines(' 0 0 -1 0\n')
108
+ f.writelines(' 0 1 0 0\n')
109
+ f.writelines(' </AffineSpace>\n')
110
+ f.writelines(' <E>10 10 10</E>\n')
111
+ f.writelines(' </DirectionalLight>\n')
112
+ f.writelines('\n')
113
+
114
+ f.writelines(' <AmbientLight>\n')
115
+ f.writelines(' <AffineSpace>\n')
116
+ f.writelines(' 1 0 0 0\n')
117
+ f.writelines(' 0 1 0 0\n')
118
+ f.writelines(' 0 0 1 0\n')
119
+ f.writelines(' </AffineSpace>\n')
120
+ f.writelines(' <L>0.5 0.5 0.5</L>\n')
121
+ f.writelines(' </AmbientLight>\n')
122
+ f.writelines('\n')
123
+
124
+ # recommended after much testing...
125
+ #f.writelines('Sampler "sobol" "integer pixelsamples" 1024\n') # went up to 8192
126
+ #f.writelines('Integrator "volpath" "integer maxdepth" [10]\n')
127
+
128
+ #f.writelines(createLights(LIGHTFILE))
129
+ f.writelines(insertElements())
130
+ f.writelines('</scene>\n\n')
131
+
132
+ os.fsync(pbrtFileObj)
133
+ fcntl.flock(pbrtFileObj, fcntl.LOCK_UN)
134
+ f.close()
135
+ os.chmod(pbrtFile, stat.S_IRUSR|stat.S_IWUSR|stat.S_IRGRP|stat.S_IWGRP|stat.S_IROTH|stat.S_IWOTH)
136
+ print "Writing main XML file: ", pbrtFile
137
+ return True
138
+
139
+
140
+ def createDefaultHeader():
141
+ header = 'Scale -1 1 1\n'
142
+ header += 'Film "image" "string filename" ["island.png"]\n'
143
+ header += ' "integer xresolution" [1024] "integer yresolution" [429]\n'
144
+ header += ' "float maxsampleluminance" 10\n\n'
145
+ return header
146
+
147
+
148
+ def createCamera(f,jsonCamFile):
149
+ """
150
+ :param: camFile: Json file with raw camera data from maya.
151
+ :return:
152
+ """
153
+
154
+ #cameraTxt = "LookAt %f %f %f" % (cameraDict["eye"][0], cameraDict["eye"][1], cameraDict["eye"][2])
155
+ #cameraTxt += " %f %f %f" % (cameraDict["look"][0], cameraDict["look"][1], cameraDict["look"][2])
156
+ #cameraTxt += " %f %f %f\n" % (cameraDict["up"][0], cameraDict["up"][1], cameraDict["up"][2])
157
+ #cameraTxt += """Camera "perspective" "float fov" [%f]\n""" % cameraDict["fov"]
158
+ #cameraTxt += """ "float screenwindow" [%f %f %f %f]\n""" % (cameraDict["screenwindow"][0], cameraDict["screenwindow"][1], cameraDict["screenwindow"][2], cameraDict["screenwindow"][3])
159
+ #cameraTxt += """ "float frameaspectratio" [%f]\n""" % cameraDict["ratio"]
160
+ #cameraTxt += """ "float lensradius" [%f]\n""" % cameraDict["lensRadius"]
161
+ #cameraTxt += """ "float focaldistance" [%f]\n""" % cameraDict["centerOfInterest"]
162
+ #return cameraTxt
163
+
164
+
165
+ def createLights(jsonLightsFile):
166
+ lightText = ""
167
+
168
+ with open(os.path.abspath(jsonLightsFile), "r") as lf:
169
+ lightsDict = json.load(lf)
170
+
171
+ for lightName, lightDict in lightsDict.iteritems():
172
+ # common values
173
+ lc = mon2lin(lightDict["color"])
174
+ le = math.pow(2, lightDict["exposure"])
175
+ rot = lightDict["rotation"]
176
+ loc = lightDict["location"]
177
+ tm = lightDict["translationMatrix"]
178
+
179
+ if lightDict["type"] == "dome":
180
+ #mapname = lightDict["map"]
181
+ mapname = os.path.basename(lightDict["envmapCamera"])
182
+ lightText += "# skydome: %s\n" % lightName
183
+ lightText += "AttributeBegin\n"
184
+ #lightText += " Translate %f %f %f\n" % (loc[0], loc[1], loc[2])
185
+ #lightText += " Rotate %f %f %f 1\n" % (rot[0], rot[1], rot[2])
186
+ # This is what it took to line up our HDR image. YMMV
187
+ lightText += " Scale -1 1 1\n"
188
+ lightText += " Rotate 90 -1 0 0\n"
189
+ lightText += " Rotate 65 0 0 1\n"
190
+ lightText += """ LightSource "infinite" "string mapname" "%s"\n""" % os.path.join("..","textures",mapname)
191
+ lightText += "AttributeEnd\n\n"
192
+
193
+ elif lightDict["type"] == "distant":
194
+ lightText += "# distant light: %s\n" % lightName
195
+ lightText += "AttributeBegin\n"
196
+ lightText += " Translate %f %f %f\n" % (loc[0], loc[1], loc[2])
197
+ lightText += " Rotate %f %f %f 1\n" % (rot[0], rot[1], rot[2])
198
+ lightText += """ LightSource "distant" "point from" [ 0.0 0.0 0.0]\n"""
199
+ lightText += """ "point to" [ 0.0 0.0 -1.0 ]\n"""
200
+ lightText += """ "rgb L" [ %f %f %f ]\n""" % (lc[0], lc[1], lc[2])
201
+ lightText += "AttributeEnd\n\n"
202
+
203
+ elif lightDict["type"] == "quad":
204
+ hw = float(lightDict["width"]) / 2
205
+ hh = float(lightDict["height"]) / 2
206
+ lightText += "# quad light w/ simple triangle mesh: %s\n" % lightName
207
+ lightText += "AttributeBegin\n"
208
+ lightText += """ AreaLightSource "diffuse" "rgb L" [%f %f %f]\n""" % (lc[0]*le, lc[1]*le, lc[2]*le)
209
+ lightText += " Transform [%f %f %f %f %f %f %f %f %f %f %f %f %f %f %f %f]\n" % tuple(tm)
210
+ lightText += """ Shape "trianglemesh" "integer indices" [0 2 1 0 3 2] "float alpha" 0\n"""
211
+ lightText += """ "point P"[%f %f 0 %f %f 0 %f %f 0 %f %f 0]\n""" % (hw, hh, -hw, hh, -hw, -hh, hw, -hh)
212
+ lightText += "AttributeEnd\n\n"
213
+
214
+ else:
215
+ print "Light type not supported:", lightName, lightDict["type"]
216
+
217
+ return lightText
218
+
219
+
220
+ def createDefaultTail():
221
+ return "\nWorldEnd\n"
222
+
223
+
224
+ def createGeometryHeader(gp, jsonFile, materialsName):
225
+ gp.write("<!--Created from %s-->\n" % jsonFile)
226
+ gp.write("AttributeBegin\n")
227
+ gp.write(" Include \"%s\"\n\n" % materialsName)
228
+
229
+
230
+ def createGeometryTail(gp):
231
+ gp.write("AttributeEnd\n")
232
+
233
+
234
+ def insertElements():
235
+ elementText = ''
236
+ for element in os.listdir(os.path.abspath("obj")):
237
+ elementText += ' <xml src="%s"/>\n'% (element + ".xml")
238
+ return elementText
239
+
240
+
241
+ def geomToPbrt(objFile, pbrtFile, matFile, root_folder):
242
+ """
243
+ That's an obj file and converts it to pbrt using 'obj2pbrt'. In addition, to support a binding hack, it comments
244
+ out the MakeNamedMaterial lines left by 'obj2pbrt'. We are just using the bindings, since OBJ format does not
245
+ support our materials.
246
+ [NEW] Added hardcoded materials where a mesh-specific texture is required.
247
+ :param objFile:
248
+ :param pbrtFile:
249
+ :param bakeTextures:
250
+ :return:
251
+ """
252
+ # Make sure we have absolute path to both files.
253
+ fpObjFile = os.path.abspath(objFile)
254
+ fpPbrtFile = os.path.abspath(pbrtFile)
255
+ # in order to find the mtl file, we need to be >in< the obj directory.
256
+ dwd = os.getcwd()
257
+ os.chdir(os.path.dirname(fpObjFile))
258
+ print "Creating pbrt geometry from", objFile
259
+
260
+ xmlFile = "xml/"+objFile[4:-4]+".xml"
261
+
262
+ f = open(pbrtFile,'w')
263
+ f.writelines('<?xml version="1.0"?>\n\n')
264
+ f.writelines('<scene>\n');
265
+ if matFile != "": f.writelines(' <xml src="'+root_folder+'%s"/>\n' % matFile);
266
+ f.writelines(' <xml src="'+root_folder+'%s"/>\n' % xmlFile);
267
+ f.writelines('</scene>\n');
268
+ f.close()
269
+
270
+ os.chdir(dwd)
271
+
272
+ # if we're using textures, we need to insert the texture overrides directly into the geom.
273
+ #insertTextureOverrides(fpPbrtFile, matFile)
274
+
275
+ def writeMaterial(f, matName, valueDict):
276
+
277
+ f.writelines('<assign type="material" id="%s">\n'%matName)
278
+ f.writelines(' <material>\n')
279
+ f.writelines(' <code>"OBJ"</code>\n')
280
+ f.writelines(' <parameters>\n')
281
+
282
+ if 'baseColor' in valueDict:
283
+ color = mon2lin(valueDict['baseColor'])
284
+ f.writelines(' <float3 name="Kd">%1.2f %1.2f %1.2f</float3>\n'% (color[0], color[1],color[2]))
285
+ else:
286
+ print "WARNING WARNING WARNING: Can not find 'baseColor' in", element, matName
287
+ f.writelines(' <float3 name="Kd">1 0 0</float3>\n')
288
+
289
+ #for val in valueDict:
290
+ # if val in DIS2PBRT:
291
+ # # common parameters
292
+ # f.writelines(' "%s" [%1.2f]\n' % (DIS2PBRT[val], valueDict[val]))
293
+
294
+ #if "type" in valueDict and valueDict["type"] == "thin":
295
+ # f.writelines(' "bool thin" ["true"]\n')
296
+ # f.writelines(' "float difftrans" [%1.2f]\n' % valueDict["diffTrans"])
297
+ # f.writelines(' "float flatness" [%1.2f]\n\n' % valueDict['flatness'])
298
+ #else: # solid
299
+ # f.writelines(' "rgb scatterdistance" [%1.2f %1.2f %1.2f]\n\n' % (valueDict["scatterDistance"][0],
300
+ # valueDict["scatterDistance"][1],
301
+ # valueDict["scatterDistance"][2]))
302
+
303
+ f.writelines(' </parameters>\n')
304
+ f.writelines(' </material>\n\n')
305
+ f.writelines('</assign>\n\n')
306
+
307
+ def matToPbrt(element, matFile, pbrtFile):
308
+ """
309
+ Take a json file and convert it into a pbrt "Named" material file which will be used for reference.
310
+ :param element: Element name -- Used for error codes and top-of-file comments.
311
+ :param matFile: Json material file to be parsed.
312
+ :param pbrtFile: Pbrt material file to be output.
313
+ :return: None
314
+ """
315
+ with open(matFile, "r") as jf:
316
+ matDict = json.load(jf)
317
+
318
+ if not matDict:
319
+ print "ERROR: Unable to parse matfile: ", matFile
320
+ return
321
+ print "Converting ", matFile
322
+
323
+ pbrtFileObj = os.open(pbrtFile, os.O_WRONLY | os.O_CREAT | os.O_TRUNC)
324
+ fcntl.flock(pbrtFileObj, fcntl.LOCK_EX)
325
+
326
+ try:
327
+ f = os.fdopen(pbrtFileObj,'w')
328
+ except IOError as (errno, strerror):
329
+ print "Couldn't open %s for write: %s" % (pbrtFile, strerror)
330
+ return
331
+
332
+ f.writelines('<?xml version="1.0"?>\n\n')
333
+ f.writelines("<!--Materials for %s-->\n"%element)
334
+ f.writelines("<!--Converted from %s-->\n\n"%matFile)
335
+
336
+ f.writelines('<scene>\n\n')
337
+
338
+ f.writelines('<assign type="material" id="default">\n')
339
+ f.writelines(' <material>\n')
340
+ f.writelines(' <code>"OBJ"</code>\n')
341
+ f.writelines(' <parameters>\n')
342
+ f.writelines(' <float3 name="Kd">1 0 0</float3>\n')
343
+ f.writelines(' </parameters>\n')
344
+ f.writelines(' </material>\n\n')
345
+ f.writelines('</assign>\n\n')
346
+
347
+ for matName, valueDict in matDict.iteritems():
348
+
349
+ if matName == "hidden":
350
+ f.writelines('<assign type="material" id="%s">\n'%matName)
351
+ f.writelines(' <material>\n')
352
+ f.writelines(' <code>"OBJ"</code>\n')
353
+ f.writelines(' <parameters>\n')
354
+ f.writelines(' <float3 name="Kd">1 0 0</float3>\n')
355
+ f.writelines(' </parameters>\n')
356
+ f.writelines(' </material>\n')
357
+ f.writelines('</assign>\n\n')
358
+ continue
359
+
360
+ writeMaterial(f,matName,valueDict)
361
+
362
+ f.writelines('</scene>\n\n')
363
+
364
+ os.fsync(pbrtFileObj)
365
+ fcntl.flock(pbrtFileObj, fcntl.LOCK_UN)
366
+ f.close()
367
+ os.chmod(pbrtFile, stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP | stat.S_IWGRP | stat.S_IROTH | stat.S_IWOTH)
368
+ print "Writing XML file: ", pbrtFile
369
+
370
+
371
+ def jsonPrimitiveToPbrt(primType, element, primitiveName, iDict):
372
+ if primType == "curve":
373
+ return jsonPrimitiveCurveToPbrt(element, primitiveName, iDict)
374
+ elif primType == "element":
375
+ return jsonPrimitiveElementToPbrt(element, primitiveName, iDict)
376
+ else:
377
+ return jsonPrimitiveArchiveToPbrt(element, primitiveName, primitiveJsonFile=iDict["jsonFile"])
378
+
379
+
380
+ def jsonPrimitiveArchiveToPbrt(element, primitiveName, primitiveJsonFile):
381
+ """
382
+ Create the pbrt reference file for a particular primitive instance. This will be a raw list
383
+ of all the instances that make up this particular primitive with the transformations.
384
+ :param element: The name of the element (used the build paths)
385
+ :param primitiveName: The name of the primitive description we're converting.
386
+ :param primitiveJsonFile: Json file containing the archives and all instances of them.
387
+ :return: The 'short' path name, which is the partial path without the pbrt directory in front
388
+ """
389
+ fileName = os.path.basename(primitiveJsonFile)[:-4] + "xml" if primitiveJsonFile else primitiveName + ".xml"
390
+ pbrtPrimitiveFile = os.path.join("embree", element, primitiveName, fileName)
391
+ root = "../../"
392
+ shortFileName = os.path.join(element, primitiveName, fileName)
393
+ iDict = readJsonFile(primitiveJsonFile)
394
+
395
+ pbrtFileObj = os.open(pbrtPrimitiveFile, os.O_WRONLY | os.O_CREAT | os.O_TRUNC)
396
+ fcntl.flock(pbrtFileObj, fcntl.LOCK_EX)
397
+
398
+ try:
399
+ f = os.fdopen(pbrtFileObj,'w')
400
+ except IOError as (errno, strerror):
401
+ print "Couldn't open %s for write: %s" % (pbrtPrimitiveFile, strerror)
402
+ return
403
+
404
+ f.writelines('<?xml version="1.0"?>\n\n')
405
+ f.writelines("<!--Converted from %s-->\n\n" % primitiveJsonFile)
406
+ f.writelines('<scene>\n\n')
407
+
408
+ for archive, primitiveDict in iDict.iteritems():
409
+ # Create one file per archive xgen Description
410
+ archiveName = os.path.basename(archive)[:-4]
411
+ for instanceName, transform in primitiveDict.iteritems():
412
+ writeInstance(f, root, archiveName, instanceName, transform, concat=True)
413
+
414
+ f.writelines('</scene>\n\n')
415
+ os.fsync(pbrtFileObj)
416
+ fcntl.flock(pbrtFileObj, fcntl.LOCK_UN)
417
+ f.close()
418
+ os.chmod(pbrtPrimitiveFile, stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP | stat.S_IWGRP | stat.S_IROTH | stat.S_IWOTH)
419
+ print "Writing primitive archive XML file: ", pbrtPrimitiveFile
420
+ return shortFileName
421
+
422
+
423
+ def jsonPrimitiveCurveToPbrt(element, primitiveName, cDict):
424
+ """
425
+ Convert json primitive curve to pbrt curve
426
+ :param element: used to find json files
427
+ :param primitiveName: used to find json files
428
+ :param cDict: dictionary of all curves
429
+ :return:
430
+ """
431
+ primitiveJsonFile = cDict["jsonFile"]
432
+ matFile = os.path.join("json", element, "materials.json")
433
+ fileName = os.path.basename(primitiveJsonFile)[:-4] + "xml" if primitiveJsonFile else primitiveName + ".xml"
434
+ pbrtPrimitiveFile = os.path.join("embree", element, primitiveName, fileName)
435
+ shortFileName = os.path.join(element, primitiveName, fileName)
436
+ curveList = readJsonFile(primitiveJsonFile)
437
+
438
+ pbrtFileObj = os.open(pbrtPrimitiveFile, os.O_WRONLY | os.O_CREAT | os.O_TRUNC)
439
+ fcntl.flock(pbrtFileObj, fcntl.LOCK_EX)
440
+
441
+ try:
442
+ f = os.fdopen(pbrtFileObj,'w')
443
+ except IOError as (errno, strerror):
444
+ print "Couldn't open %s for write: %s" % (pbrtPrimitiveFile, strerror)
445
+ return
446
+
447
+ f.writelines('<?xml version="1.0"?>\n\n')
448
+ f.writelines("<!--Converted from %s-->\n\n" % primitiveJsonFile)
449
+ f.writelines('<scene>\n\n')
450
+
451
+ f.writelines(' <Curves type="round" basis="bspline">\n\n')
452
+
453
+ # Curves don't inherit materials like the OBJs so, so we need to insert the material at the top.
454
+ mat = findMaterial(primitiveName, readJsonFile(matFile))
455
+ if mat:
456
+ f.writelines(' <material id="%s"/>\n'%mat)
457
+ else:
458
+ f.writelines(' <material id="default"/>\n')
459
+ print "WARNING: curve has no material"
460
+ f.writelines('\n')
461
+
462
+ i=0
463
+ f.writelines(' <indices>\n')
464
+ for curve in curveList:
465
+ i=writeCurveIndices(f, i, curve, cDict)
466
+ f.writelines('\n')
467
+ f.writelines(' </indices>\n')
468
+ f.writelines('\n')
469
+
470
+ f.writelines(' <positions>\n')
471
+ for curve in curveList:
472
+ writeCurveVertices(f, curve, cDict)
473
+ f.writelines('\n')
474
+ f.writelines(' </positions>\n')
475
+
476
+ f.writelines(' </Curves>\n\n')
477
+
478
+ f.writelines('</scene>\n\n')
479
+ os.fsync(pbrtFileObj)
480
+ fcntl.flock(pbrtFileObj, fcntl.LOCK_UN)
481
+ f.close()
482
+ os.chmod(pbrtPrimitiveFile, stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP | stat.S_IWGRP | stat.S_IROTH | stat.S_IWOTH)
483
+ print "Writing primitive curve XML file: ", pbrtPrimitiveFile
484
+ return shortFileName
485
+
486
+
487
+ def jsonPrimitiveElementToPbrt(element, primitiveName, eDict):
488
+ """
489
+ The primitive being instanced around is a copy of another element, which could include its own primitive data.
490
+ :param element: The name of the element (used the build paths)
491
+ :param primitiveName: The name of the primitive description we're converting.
492
+ :param eDict: Dictionary includes reference element, possible variant and the source json file with the transforms
493
+ by variant. "base" variant is assumed to the the top level element definition.
494
+ :return: The 'short' path name, which is the partial path without the pbrt directory in front
495
+ """
496
+ primitiveJsonFile = eDict["jsonFile"]
497
+ fileName = os.path.basename(primitiveJsonFile)[:-4] + "xml" if primitiveJsonFile else primitiveName + ".xml"
498
+ pbrtPrimitiveFile = os.path.join("embree", element, primitiveName, fileName)
499
+ root = "../../"
500
+ shortFileName = os.path.join(element, primitiveName, fileName)
501
+ iDict = readJsonFile(primitiveJsonFile)
502
+
503
+ # we also need to load the source element json file so we can access it's information for inclusion.
504
+ sourceJsonFile = os.path.abspath(os.path.join("json", eDict["element"], eDict["element"] + ".json"))
505
+ sourceDict = readJsonFile(sourceJsonFile)
506
+
507
+ pbrtFileObj = os.open(pbrtPrimitiveFile, os.O_WRONLY | os.O_CREAT | os.O_TRUNC)
508
+ fcntl.flock(pbrtFileObj, fcntl.LOCK_EX)
509
+
510
+ try:
511
+ f = os.fdopen(pbrtFileObj,'w')
512
+ except IOError as (errno, strerror):
513
+ print "Couldn't open %s for write: %s" % (pbrtPrimitiveFile, strerror)
514
+ return
515
+
516
+ f.writelines('<?xml version="1.0"?>\n\n')
517
+ f.writelines("<!--Converted from %s-->\n\n" % primitiveJsonFile)
518
+ f.writelines('<scene>\n\n')
519
+
520
+ for variant, primitiveDict in iDict.iteritems(): # each variant is the key to a dictionary of instance name/transforms
521
+ inclFileList = [] # TODO:
522
+ if variant == "base":
523
+ instanceRef = os.path.basename(sourceDict["geomObjFile"])[:-4]
524
+ if "instancedPrimitiveJsonFiles" in sourceDict:
525
+ for primitiveName, ipDict in sourceDict["instancedPrimitiveJsonFiles"].iteritems():
526
+ fileName = os.path.basename(ipDict["jsonFile"])[:-4] + "xml"
527
+ inclFileList.append(os.path.join(eDict["element"], primitiveName, fileName))
528
+
529
+ elif variant in sourceDict["variants"]:
530
+ instanceRef = os.path.basename(sourceDict["variants"][variant]["geomObjFile"])[:-4]
531
+ if "instancedPrimitiveJsonFiles" in sourceDict["variants"][variant]:
532
+ for primitiveName, ipDict in sourceDict["variants"][variant]["instancedPrimitiveJsonFiles"].iteritems():
533
+ fileName = os.path.basename(ipDict["jsonFile"])[:-4] + "xml"
534
+ inclFileList.append(os.path.join(eDict["element"], primitiveName, fileName))
535
+
536
+ else:
537
+ print "Error: Problems finding variant %s for element %s\n" %(variant, eDict["element"])
538
+ sys.exit()
539
+
540
+ for instanceName, transform in primitiveDict.iteritems():
541
+ writeInstance(f, root, instanceRef, instanceName, transform, inclFileList=inclFileList, concat=True)
542
+
543
+ f.writelines('</scene>\n\n')
544
+ os.fsync(pbrtFileObj)
545
+ fcntl.flock(pbrtFileObj, fcntl.LOCK_UN)
546
+ f.close()
547
+ os.chmod(pbrtPrimitiveFile, stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP | stat.S_IWGRP | stat.S_IROTH | stat.S_IWOTH)
548
+ print "Writing primitive archive embree file: ", pbrtPrimitiveFile
549
+ return shortFileName
550
+
551
+
552
+ def writeObject(f, objectName, pbrtGeometryFile, matFile=None):
553
+ """
554
+ Create named object definition around single geometry file.
555
+ :param f:
556
+ :param objectName: What to call the object
557
+ :param pbrtGeometryFile: The file being referenced
558
+ :param matFile: Some variants need a separate matFile, include override for that here.
559
+ :return:
560
+ """
561
+ f.writelines(' <assign type="scene" id="%s">\n' % objectName)
562
+ f.writelines(' <xml src="../%s"/>\n' % pbrtGeometryFile)
563
+ f.writelines(' </assign>\n')
564
+
565
+ def writeInstance(f, root, objectName, instanceName, xfm, inclFileList=[], concat=False):
566
+ """
567
+ Create instances of previously named object
568
+ :param f:
569
+ :param objectName: Name of object
570
+ :param instanceName: Name of instance (for reference back to json file)
571
+ :param transform: Transform
572
+ :param inclFileList: For primitive files that need to be referenced after object
573
+ :param concat: Use ConcatTransform to properly inherit final instance position of copies of elements.
574
+ :return:
575
+ """
576
+ f.writelines('<!-- %s -->\n' % instanceName)
577
+ f.writelines('<Transform>\n')
578
+ if concat:
579
+ f.writelines(' <AffineSpace>%f %f %f %f %f %f %f %f %f %f %f %f</AffineSpace>\n' % (xfm[0],xfm[4],xfm[8],xfm[12],xfm[1],xfm[5],xfm[9],xfm[13],xfm[2],xfm[6],xfm[10],xfm[14]) )
580
+ else:
581
+ f.writelines(' <AffineSpace>%f %f %f %f %f %f %f %f %f %f %f %f</AffineSpace>\n' % (xfm[0],xfm[4],xfm[8],xfm[12],xfm[1],xfm[5],xfm[9],xfm[13],xfm[2],xfm[6],xfm[10],xfm[14]) )
582
+ f.writelines(' <ref id="%s"/>\n' % objectName)
583
+ for inclFile in inclFileList:
584
+ f.writelines(' <xml src="' + root + '%s"/>\n' % inclFile)
585
+ f.writelines('</Transform>\n\n')
586
+
587
+
588
+ def writeCurveIndices(f, i, curve, cDict):
589
+ for j in range(0, len(curve)-1):
590
+ f.writelines(' %i\n'%i)
591
+ i = i+1
592
+ i = i+3
593
+ return i
594
+
595
+ def writeCurveVertices(f, curve, cDict):
596
+ """
597
+ Updated to work with new pbrt bspline format.
598
+ :param f:
599
+ :return:
600
+ """
601
+ w0 = cDict["widthRoot"]
602
+ w1 = cDict["widthTip"]
603
+ # TODO: Should be change cylinder to flat?
604
+ # ctype = "cylinder" if cDict["faceCamera"] else "flat"
605
+
606
+ i=0
607
+ f.writelines(' %f %f %f %f\n' % (curve[0][0], curve[0][1], curve[0][2], w0)) # stack
608
+ for p in curve:
609
+ x=i/float(len(curve)-1)
610
+ w=(1-x)*w0 + x*w1
611
+ f.writelines(' %f %f %f %f\n' % (p[0], p[1], p[2], w))
612
+ i=i+1
613
+ f.writelines(' %f %f %f %f\n' % (curve[-1][0], curve[-1][1], curve[-1][2], w1)) # stack
614
+
615
+ def writeObjectFile(element, pbrtOutGeometry, instCopies = None, primDict = None):
616
+ """
617
+ Keep all the object references in a single file to keep the main element file readable. Because we can't embed
618
+ instances in pbrt, we need to include all references here, both the main element and all primitives or variants
619
+ it might be referring too.
620
+ :param element: main element
621
+ :param pbrtOutGeometry: main element geometry file
622
+ :param instCopies: if an instanced copy has its own geometry, we need to reference that as well.
623
+ :param primDict: And all primitives used by the geometry.
624
+ :return:
625
+ """
626
+ # put all the primitive objects at the top of the file since we can embed objects within objects.
627
+ if not pbrtOutGeometry and not primDict and not instCopies:
628
+ return ""
629
+
630
+ shortName = os.path.join(element, "objects.xml")
631
+ pbrtOutObjects = os.path.abspath(os.path.join("embree", shortName))
632
+
633
+ pbrtFileObj = os.open(pbrtOutObjects, os.O_WRONLY | os.O_CREAT | os.O_TRUNC)
634
+ fcntl.flock(pbrtFileObj, fcntl.LOCK_EX)
635
+
636
+ try:
637
+ f = os.fdopen(pbrtFileObj,'w')
638
+ except IOError as (errno, strerror):
639
+ print "Couldn't open %s for write: %s" % (pbrtOutObjects, strerror)
640
+ return
641
+
642
+ f.writelines('<?xml version="1.0"?>\n\n')
643
+ f.writelines('<scene>\n\n')
644
+
645
+ # there are all the archives used by the primitive description
646
+ if primDict:
647
+ for primName, primInstanceDict in primDict.iteritems(): # for each xgen description
648
+ f.writelines("\n<!-- archives used by %s -->\n" % primName)
649
+ # for each archives used by this description
650
+ if "archives" in primInstanceDict:
651
+ for archive in primInstanceDict["archives"]:
652
+ # the object reference is the archive or geo file base name
653
+ archiveName = os.path.basename(archive)[:-4]
654
+ # the object file is the archive or geo file base name + _geometry
655
+ pbrtArchiveFile = os.path.join(element, primName, archiveName + "_geometry.xml")
656
+ # if this is type 'element', we need to drop in the element's material file #HACKY
657
+ matFile = os.path.join(primInstanceDict["element"], "materials.xml")\
658
+ if primInstanceDict["type"] == "element" else ""
659
+ writeObject(f, archiveName, pbrtArchiveFile, matFile=matFile)
660
+
661
+ # This is the main element object
662
+ if pbrtOutGeometry:
663
+ f.writelines("\n<!-- main object for the element: %s -->\n" % element)
664
+ writeObject(f, element, pbrtOutGeometry)
665
+
666
+ # Instanced copies here.
667
+ if instCopies:
668
+ f.writelines("\n<!-- instanced copies of the element with their own geometry -->\n")
669
+ for instanceName, icDict in instCopies.iteritems():
670
+ if "geomObjFile" in icDict and icDict["geomObjFile"]:
671
+ # convert obj name to pbrt location
672
+ pbrtOutFile =icDict["geomObjFile"][4:-4] + "_geometry.xml"
673
+ writeObject(f, icDict["name"], pbrtOutFile)
674
+
675
+ f.writelines('</scene>\n\n')
676
+ os.fsync(pbrtFileObj)
677
+ fcntl.flock(pbrtFileObj, fcntl.LOCK_UN)
678
+ f.close()
679
+ os.chmod(pbrtOutObjects, stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP | stat.S_IWGRP | stat.S_IROTH | stat.S_IWOTH)
680
+ print "Writing XML file: ", pbrtOutObjects
681
+ return shortName
682
+
683
+
684
+ def writeMainElement(pbrtOutElement, pbrtOutMaterials, pbrtOutGeometry, primitiveFiles, sourceJsonFile=""):
685
+
686
+ jDict = readJsonFile(sourceJsonFile)
687
+ element = jDict["name"]
688
+ transform = jDict["transformMatrix"]
689
+
690
+ pbrtFileObj = os.open(pbrtOutElement, os.O_WRONLY | os.O_CREAT | os.O_TRUNC)
691
+ fcntl.flock(pbrtFileObj, fcntl.LOCK_EX)
692
+
693
+ try:
694
+ f = os.fdopen(pbrtFileObj,'w')
695
+ except IOError as (errno, strerror):
696
+ print "Couldn't open %s for write: %s" % (pbrtOutElement, strerror)
697
+ return
698
+
699
+ f.writelines('<?xml version="1.0"?>\n\n')
700
+ f.writelines('<scene>\n\n')
701
+
702
+ if sourceJsonFile:
703
+ f.writelines("<!-- Converted from %s -->\n\n" % sourceJsonFile)
704
+
705
+ ################################## Materials
706
+
707
+ #f.writelines("AttributeBegin\n\n")
708
+ f.writelines("<xml src=\"../%s\"/>\n" % pbrtOutMaterials)
709
+
710
+ ################################## Objects
711
+ # Notes about objects: Since pbrt can instance within an instance, only _geometry files should be defined as objects.
712
+ # For simplicity, lets defines all _geometry files as objects.
713
+
714
+ primitiveDict = jDict["instancedPrimitiveJsonFiles"] if "instancedPrimitiveJsonFiles" in jDict else {}
715
+ instancedCopiesDict = jDict["instancedCopies"] if "instancedCopies" in jDict else {}
716
+
717
+ objectsFile = writeObjectFile(element, pbrtOutGeometry, instCopies=instancedCopiesDict, primDict=primitiveDict)
718
+ if objectsFile:
719
+ f.writelines("<xml src=\"../%s\"/>\n" % objectsFile)
720
+
721
+ ############################ Main elements
722
+
723
+ f.writelines("\n<!-- Main element -->\n\n")
724
+
725
+ primList = [] # a list of all the primitive names associated with this element, i.e. xgBonsai, xgGrass, xgShells
726
+ primFileList = [] # a list of the primitive files, i.e. isBayCedarA1/xgBonsai/isBayCedarA1_xgBonsai.xml
727
+ if primitiveDict:
728
+ for primName, primInstanceDict in primitiveDict.iteritems():
729
+ primList.append(primName)
730
+ primFileList.append(os.path.join(element, primName, element + "_" + primName + ".xml"))
731
+
732
+ # create the default instance (we have at least once instance of every element)
733
+ writeInstance(f, "../", element, element, transform, primFileList)
734
+
735
+ if instancedCopiesDict:
736
+ f.writelines("\n<!-- Instanced copies of main element -->\n\n")
737
+
738
+ # all the other instances of the element and all primitive files used by element
739
+ # Note: we can't instance the primitive files themsevles, because they contain references to instanced archives.
740
+ for instance, icDict in instancedCopiesDict.iteritems():
741
+ primOverrides = icDict["instancedPrimitiveJsonFiles"].keys() if "instancedPrimitiveJsonFiles" in icDict else []
742
+ includedPrimFileList = []
743
+ for prim in primList: # For each primitive associated with this element,
744
+ # is the primName the instance or element? Depends on is the instancedCopies instance
745
+ if prim in primOverrides:
746
+ primName = instance + '_' + prim + ".xml"
747
+ else:
748
+ primName = element + '_' + prim + ".xml"
749
+ includedPrimFileList.append(os.path.join(element, prim, primName)) # isBayCedarA2/xgBonsai/isBayCedarA2_xgBonsai.xml
750
+ if "geomObjFile" in icDict and icDict["geomObjFile"]:
751
+ # print "This instance has its own geometry."
752
+ writeInstance(f, "../", instance, instance, icDict["transformMatrix"], includedPrimFileList)
753
+ else:
754
+ writeInstance(f, "../", element, instance, icDict["transformMatrix"], includedPrimFileList)
755
+
756
+ #f.writelines("AttributeEnd\n")
757
+
758
+ f.writelines('</scene>\n\n')
759
+ os.fsync(pbrtFileObj)
760
+ fcntl.flock(pbrtFileObj, fcntl.LOCK_UN)
761
+ f.close()
762
+ os.chmod(pbrtOutElement, stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP | stat.S_IWGRP | stat.S_IROTH | stat.S_IWOTH)
763
+ print "Writing XML file: ", pbrtOutElement
764
+ return pbrtOutElement
765
+
766
+
767
+ def findMaterial(mesh, matDict, hierDict="", quiet=False):
768
+ """
769
+ Given a patch, a materials dictionary and an optional hierarchy dictionary, this finds the correct
770
+ material for that patch.
771
+ :param mesh: The name of the mesh
772
+ :param matDict: A dictionary of materials, created from the json materials file.
773
+ :param hierDict: A dictionary of hierarchy expansions, created from the json .hier file.
774
+ :param quiet: Suppress the no bindings error message
775
+ :return: Matching material as string
776
+ """
777
+ longNameMesh = hierDict[mesh] + '|' + mesh if mesh in hierDict else mesh
778
+
779
+ found = []
780
+ for k, v in matDict.iteritems():
781
+ # find an assignment that matches
782
+ bindings = v['assignment']
783
+ for binding in bindings:
784
+ if fnmatch.fnmatchcase(longNameMesh, "*" + binding + "*"):
785
+ found.append(k)
786
+ if found:
787
+ # if there's only one match, we found the binding.
788
+ if len(found) == 1:
789
+ return found[0]
790
+ else:
791
+ # if one is an exact string match, return that one (or the first
792
+ # occurrence of an exact string match)
793
+ for f in found:
794
+ if mesh in matDict[f]['assignment']:
795
+ return f
796
+ # if there's not an exact string match, go for the match furthest up the hierarchy chain (this will solve
797
+ # a problem with the bonsai matching for trunks vs branches vs tips.
798
+ for f in found:
799
+ print "f"
800
+ sys.exit()
801
+ # otherwise, return the last match. #makingshitup
802
+ return found[-1]
803
+ else:
804
+ if not quiet:
805
+ print "ERROR: Unable to find binding for mesh: ", mesh
806
+ return ""
807
+
808
+
809
+ def insertTextureOverrides(pbrtGeomFile, matFile):
810
+ """
811
+ Find a mesh that's using a material with a texture and insert the texture override that includes the specific
812
+ mesh name. i.e. textures/isGardeniaA/Color/archiveflowerbud0001_geo.ptx
813
+ :param pbrtGeomFile: The pbrt geometry file created with obj2pbrt
814
+ :param matFile: The json material file
815
+ :param hierFile: The file containing the full hierarchy of the meshes (stripped out to create the obj files)
816
+ :return: None
817
+ """
818
+ COMMENT = "# Inserted materials directly above Shape for custom texture per mesh. v2.\n"
819
+ handle, tempPbrtFile = tempfile.mkstemp(prefix='IS', suffix='.xml', dir=TMPDIR)
820
+ tof = open(tempPbrtFile,"w")
821
+ print "Inserting pbrt materials into: ", tempPbrtFile
822
+
823
+ # Create a sub-dictionary of just the materials with textures.
824
+ mDict = readJsonFile(matFile) # keys are primitive description name, i.e. xgGrass.
825
+ textureMats = [key for key in mDict if "colorMap" in mDict[key] and mDict[key]["colorMap"]] # keys with materials
826
+ matDict = {mat: mDict[mat] for mat in textureMats}
827
+
828
+ # warning. these can be big files!
829
+ with open(os.path.abspath(pbrtGeomFile), "r") as pgf:
830
+ tof.write(COMMENT)
831
+ meshName = ""
832
+ colorName = ""
833
+ dispName = ""
834
+ colorMap = ""
835
+ dispMap = ""
836
+ material = ""
837
+ for line in pgf.xreadlines(): # use generator
838
+ if line.startswith(COMMENT[:20]):
839
+ # Don't duplicate the comment.
840
+ continue
841
+
842
+ if line.startswith("# Name"):
843
+ m = re.search('# Name "(.+?)"$', line)
844
+ if not m:
845
+ tof.write(line)
846
+ continue
847
+ meshName = m.group(1)
848
+ tof.write(line)
849
+ continue
850
+
851
+ if line.startswith("NamedMaterial"):
852
+ m = re.search('^NamedMaterial "(.+?)"$', line)
853
+ if not m:
854
+ tof.write(line)
855
+ continue
856
+ material = m.group(1)
857
+ if material not in matDict:
858
+ material = ""
859
+ tof.write(line)
860
+ continue
861
+ colorMap = matDict[material]["colorMap"] if "colorMap" in matDict[material] else ""
862
+ dispMap = matDict[material]["displacementMap"]if "displacementMap" in matDict[material] else ""
863
+ if colorMap:
864
+ colorName = material + "_Color"
865
+ texPath = os.path.join("..", os.path.dirname(colorMap),meshName + ".ptx")
866
+ tof.write('Texture "%s" "color" "ptex"\n' % colorName)
867
+ tof.write(' "string filename" ["%s"]\n\n'%texPath)
868
+ if dispMap:
869
+ dispName = material + "_Disp"
870
+ texPath = os.path.join("..", os.path.dirname(dispMap),meshName + ".ptx")
871
+ tof.write('Texture "%s" "float" "ptex"\n' % dispName)
872
+ tof.write(' "string filename" ["%s"]\n\n'%texPath)
873
+ # write back the original NamedMaterial line
874
+ tof.write(line)
875
+ continue
876
+
877
+ if line.startswith("Shape") and meshName and material:
878
+ tof.write(line)
879
+ m = re.search('^Shape "trianglemesh"$', line)
880
+ if not m: continue
881
+ if colorMap:
882
+ tof.write(' "texture color" "%s"\n' % colorName)
883
+ colorMap = ""
884
+ if dispMap:
885
+ tof.write(' "texture bumpmap" "%s"\n' % dispName)
886
+ dispMap = ""
887
+ continue
888
+
889
+ # everything else just goes into the tempfile
890
+ tof.write(line)
891
+
892
+ tof.close()
893
+
894
+ # copy temp file over old one
895
+ print "Replacing ", pbrtGeomFile
896
+ shutil.copy2(tempPbrtFile, os.path.abspath(pbrtGeomFile))
vae/Irand/island/textures/isPalmDead/Color/rootball0001_geo.ptx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a3d8f4bc8c8e6379d87f72339ceb565a79ceacd8134ff1fae5c030fd34048ca6
3
+ size 7396823
vae/Irand/island/textures/isPalmDead/Color/trunk0001_geo.ptx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6795e910b91db67800bbeca7641c74860770e57d9be509042dae60e0db16b7e0
3
+ size 10387895
vae/Irand/island/textures/isPalmDead/Displacement/rootball0001_geo.ptx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b8d077f55601064fdbc923a651aec4003ba6ac80090b0f7bc9d13584dc6c7508
3
+ size 3294182
vae/Irand/island/textures/isPalmDead/Displacement/trunk0001_geo.ptx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:1b9de237c6f5a6eae8b953e90c6fb180d87ccd0385966f768d5bdf927c7af793
3
+ size 48879070