Replace .obj models with .iqm (#232)

http://sauerbraten.org/iqm/

The iqms were converted from the objs with the official iqm "compiler",
but can be also exported directly from Blender with a script from the
SDK.

In addition, indexed rendering was fixed (it's not useless anymore), and
the winding order convention changed from counter-clockwise to clockwise
to facilitate faster model loading.

A limited subset of IQM functionality is currently supported:
	- One mesh per model.
	- Only floating point data in vertex arrays.
	- Only standard vertex arrays: positions, UVs, normals,
	tangents.
	- No animations etc.

The "standard" shader interface now receives an additional vec4 tangent
attribute. This attribute is currently ignored by shaders. The bitangent
vector can be computed in a vertex shader as:
	vec3 bitangent = cross(normal, tangent.xyz) * tangent.w;

* iqm: remove axis scrambling and re-export models

* remove debug stuff
This commit is contained in:
Andrei Alexeyev 2020-06-06 18:27:08 +03:00 committed by GitHub
parent d9ba91ecac
commit ee3bec1c22
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
30 changed files with 671 additions and 7158 deletions

Binary file not shown.

View file

@ -1,28 +0,0 @@
# Blender v2.79 (sub 0) OBJ File: 'hud.blend'
# www.blender.org
v -400.000000 300.000000 0.000000
v 400.000000 300.000000 0.000000
v -400.000000 -300.000000 0.000000
v 400.000000 -300.000000 0.000000
v -360.000000 -280.000000 0.000000
v 120.000000 280.000000 0.000000
v 120.000000 -280.000000 0.000000
v -360.000000 280.000000 0.000000
vt 1.000000 0.000000
vt 0.650000 0.966667
vt 0.650000 0.033333
vt 0.000000 1.000000
vt 0.000000 0.000000
vt 0.050000 0.966667
vt 0.050000 0.033333
vt 1.000000 1.000000
vn 0.0000 0.0000 -1.0000
s off
f 2/1/1 7/2/1 6/3/1
f 3/4/1 1/5/1 5/6/1
f 8/7/1 1/5/1 6/3/1
f 1/5/1 2/1/1 6/3/1
f 2/1/1 4/8/1 7/2/1
f 1/5/1 8/7/1 5/6/1
f 5/6/1 7/2/1 3/4/1
f 7/2/1 4/8/1 3/4/1

Binary file not shown.

View file

@ -1,789 +0,0 @@
# Blender v2.63 (sub 0) OBJ File: 'lake.blend'
# www.blender.org
v 28.047695 -8.000000 1.000000
v -28.044088 -8.000000 1.000000
v 8.613546 8.125398 1.249045
v -8.609940 8.125398 1.249045
v 0.001803 -22.534513 0.000000
v 0.001803 8.125398 1.249045
v -15.773268 0.125398 1.249045
v 15.776874 0.125398 1.249045
v 0.001803 0.000000 0.000000
v -27.685486 -22.534513 0.000000
v -4.304069 8.125398 1.249045
v -22.258490 -3.874603 1.249045
v 11.466192 4.125398 1.249045
v 27.689091 -22.534513 0.000000
v 4.307674 8.126955 1.254609
v -11.462585 4.125398 1.249045
v 22.262096 -3.874603 1.249045
v 0.001803 -4.000000 0.000000
v 0.001803 4.000000 0.000000
v 7.889338 0.000000 0.000000
v -7.885732 0.000000 0.000000
v -11.128344 -4.000000 0.000000
v 11.131949 -4.000000 0.000000
v 5.162551 3.442316 0.868348
v -5.350373 3.546700 0.593759
v -6.457005 8.125398 1.249045
v 10.039868 6.125398 1.249045
v 6.460610 8.125476 1.249325
v -10.036263 6.125398 1.249045
v 0.007152 5.898179 2.160872
v 11.800315 -0.013914 2.003766
v -2.151133 8.125398 1.249045
v -19.015879 -1.874603 1.249045
v 13.621532 2.125398 1.249045
v 2.154739 8.125398 1.249045
v -13.617926 2.125398 1.249045
v 19.019485 -1.874603 1.249045
v -11.796035 -0.015248 2.008227
v -9.507038 -2.000000 0.000000
v -16.693413 -4.000005 1.932348
v 9.510644 -2.000000 0.000000
v 16.674873 -4.021495 2.048647
v 6.811667 2.000000 0.000000
v 5.008836 5.851763 2.317612
v 8.361708 3.912450 2.310017
v 2.867900 4.000000 0.000000
v -6.808062 2.000000 0.000000
v -4.955305 5.858686 2.409195
v -2.864294 4.000000 0.000000
v -8.549683 3.975393 2.036206
v -10.199676 1.995572 1.960016
v -14.231349 -2.015420 2.015471
v 14.092648 -2.084994 2.405016
v 10.054428 1.945146 2.215192
v 7.530234 5.999910 1.933195
v 2.511842 5.902708 2.146255
v -2.485534 5.864730 2.217485
v -7.520859 5.997010 2.005464
v -7.533472 8.125398 1.249045
v 9.326708 7.125398 1.249045
v 7.537078 8.125398 1.249045
v -9.323102 7.125398 1.249045
v 0.004778 7.009606 1.959076
v 13.803661 -0.000386 1.957398
v -1.074665 8.125398 1.249045
v -17.394573 -0.874603 1.249045
v 14.699203 1.125398 1.249045
v 1.078271 8.125398 1.249045
v -14.695596 1.125398 1.249045
v 17.398178 -0.874603 1.249045
v -13.801384 0.000000 1.932335
v 19.479559 -4.000000 1.932335
v 4.664135 7.073699 2.302470
v 10.039702 4.002751 1.962669
v -4.652912 7.059561 2.269006
v -5.380536 8.125398 1.249045
v 10.753031 5.125398 1.249045
v 5.384142 8.126296 1.252257
v -10.749424 5.125398 1.249045
v -3.227601 8.125398 1.249045
v -20.637184 -2.874603 1.249045
v 12.543862 3.125398 1.249045
v 3.231207 8.125398 1.249045
v -12.540256 3.125398 1.249045
v 20.640791 -2.874603 1.249045
v -19.475952 -4.000000 1.932335
v -10.055403 4.006605 1.987963
v -10.973898 0.984441 2.026963
v -9.314640 2.971722 2.068004
v -12.024987 2.055977 2.245435
v -15.338201 -3.077687 2.279938
v -13.021359 -1.012260 1.987184
v -16.638670 -2.000000 1.932335
v 15.426720 -3.026804 2.087381
v 12.950060 -1.048433 2.213986
v 16.646940 -1.996545 1.950439
v 10.967306 0.977752 2.061487
v 9.184906 2.920122 2.368515
v 11.918808 1.999978 1.934776
v 7.877609 4.979561 2.606477
v 6.985831 6.987241 1.895367
v 8.785110 6.000000 1.932335
v 6.255460 5.993293 1.960896
v 2.307205 7.064669 2.127093
v 3.763148 5.845556 2.314202
v 1.256305 5.984866 1.967049
v -2.314948 7.085443 2.209995
v -1.240716 5.893699 2.167759
v -3.738394 5.807237 2.426590
v -7.987367 4.928787 2.300467
v -6.995922 7.030600 2.057511
v -6.210736 5.933118 2.243284
v -8.814359 6.011505 1.987418
v -12.876128 1.008055 1.981794
v -18.057310 -3.000000 1.932335
v -9.437740 5.008054 1.996903
v -10.992486 3.009463 1.984373
v -15.220027 -1.000000 1.932335
v 18.060917 -3.000000 1.932335
v 15.232511 -0.993150 1.971483
v 12.862029 1.000000 1.932335
v 10.974896 2.999971 1.944919
v 9.411054 5.001438 1.948722
v 8.151854 6.991313 1.903792
v 5.828595 7.056609 2.179435
v 3.497751 7.046204 2.208520
v 1.164830 7.022400 1.996840
v -1.154450 7.058635 2.114583
v -3.495976 7.048450 2.195051
v -5.821334 7.067568 2.215290
v -8.177136 7.016252 1.976118
v 28.047695 37.753166 1.000000
v -28.044088 37.753166 1.000000
v 14.699203 37.657745 1.249045
v -6.457005 37.657364 1.249045
v 2.154739 37.657547 1.249045
v -9.323102 37.657318 1.249045
v 10.753031 37.657677 1.249045
v -22.258490 37.657154 1.249045
v 22.262096 37.657936 1.249045
v -17.394573 37.657257 1.249045
v 17.398178 37.657791 1.249045
v 3.231207 37.657532 1.249045
v 4.307674 37.657551 1.249045
v 13.621532 37.657730 1.249045
v -15.773268 37.657234 1.249045
v -10.749424 37.657295 1.249045
v -4.304069 37.657394 1.249045
v -13.617926 37.657261 1.249045
v 15.776874 37.657806 1.249045
v 9.326708 37.657692 1.249045
v -11.462585 37.657291 1.249045
v -1.074665 37.657452 1.249045
v -8.609940 37.657372 1.249045
v 11.466192 37.657726 1.249045
v 7.537078 37.657658 1.249045
v -2.151133 37.657433 1.249045
v -19.015879 37.657192 1.249045
v 19.019485 37.657867 1.249045
v -5.380536 37.657425 1.249045
v 12.543862 37.657745 1.249045
v 1.078271 37.657494 1.249045
v -10.036263 37.657352 1.249045
v 10.039868 37.657700 1.249045
v -20.637184 37.657234 1.249045
v 20.640791 37.657845 1.249045
v 8.613546 37.657631 1.249045
v 0.001803 37.657509 1.249045
v 5.384142 37.657616 1.249045
v -7.533472 37.657349 1.249045
v -14.695596 37.657288 1.249045
v 6.460610 37.657589 1.249045
v -3.227601 37.657455 1.249045
v -12.540256 37.657314 1.249045
vt 0.676493 0.301859
vt 0.498150 0.299438
vt 0.499797 -0.000084
vt 0.948665 0.005109
vt 0.542459 0.424219
vt 0.498002 0.424705
vt 0.498006 0.362497
vt 0.603173 0.394359
vt 0.622232 0.364470
vt 0.319596 0.300146
vt 0.050360 -0.000086
vt 0.373494 0.363517
vt 0.346634 0.332034
vt 0.649499 0.333309
vt 0.453728 0.423749
vt 0.392145 0.394141
vt 0.179449 0.305483
vt 0.133100 0.307749
vt 0.039504 0.237554
vt 0.224691 0.305676
vt 0.286340 0.388579
vt 0.254332 0.392436
vt 0.236871 0.375937
vt 0.270831 0.372092
vt 0.202339 0.322030
vt 0.158889 0.324985
vt 0.816951 0.308687
vt 0.956999 0.242031
vt 0.863289 0.311288
vt 0.771605 0.308645
vt 0.730858 0.341435
vt 0.751283 0.325011
vt 0.663489 0.406077
vt 0.678632 0.389927
vt 0.692815 0.373474
vt 0.601982 0.472519
vt 0.581460 0.467987
vt 0.626880 0.454585
vt 0.581228 0.423573
vt 0.635493 0.437654
vt 0.518474 0.469608
vt 0.497095 0.469925
vt 0.540209 0.469070
vt 0.413555 0.421512
vt 0.456252 0.468917
vt 0.436139 0.468772
vt 0.416976 0.468410
vt 0.343811 0.454123
vt 0.318906 0.458508
vt 0.306940 0.442061
vt 0.333015 0.437518
vt 0.330445 0.403573
vt 0.317162 0.387398
vt 0.303513 0.371573
vt 0.358481 0.436334
vt 0.345058 0.420101
vt 0.317104 0.420765
vt 0.289214 0.425697
vt 0.271827 0.409064
vt 0.301097 0.404504
vt 0.263799 0.338866
vt 0.245444 0.322434
vt 0.283600 0.355328
vt 0.247682 0.355449
vt 0.210753 0.359142
vt 0.184828 0.342050
vt 0.224728 0.339170
vt 0.794207 0.325159
vt 0.748981 0.358606
vt 0.712429 0.357213
vt 0.771308 0.341746
vt 0.710226 0.390786
vt 0.725960 0.374647
vt 0.678885 0.423728
vt 0.649297 0.422067
vt 0.694461 0.407191
vt 0.652824 0.456450
vt 0.663504 0.440231
vt 0.631873 0.488871
vt 0.612886 0.489091
vt 0.621939 0.473276
vt 0.642166 0.472747
vt 0.593590 0.488542
vt 0.575240 0.487694
vt 0.560966 0.468282
vt 0.556503 0.487759
vt 0.536843 0.488239
vt 0.517414 0.488102
vt 0.497568 0.488644
vt 0.476710 0.469611
vt 0.477975 0.488655
vt 0.459074 0.488624
vt 0.440048 0.488341
vt 0.421479 0.487718
vt 0.396687 0.469596
vt 0.375334 0.470823
vt 0.368379 0.452576
vt 0.402938 0.487718
vt 0.383835 0.487593
vt 0.364699 0.487146
vt 0.342913 0.491800
vt 0.330873 0.475127
vt 0.354263 0.470822
vt 0.837423 0.328295
vt 0.811480 0.345170
vt 0.785494 0.362023
vt 0.759577 0.378824
vt 0.742106 0.395062
vt 0.724480 0.411381
vt 0.706853 0.427847
vt 0.689282 0.444380
vt 0.677427 0.460720
vt 0.665449 0.477114
vt 0.653355 0.493556
vt 0.640891 0.509994
vt 0.622737 0.510578
vt 0.604815 0.510955
vt 0.587039 0.511350
vt 0.569343 0.511432
vt 0.551604 0.511288
vt 0.533756 0.511049
vt 0.515820 0.510875
vt 0.497844 0.510980
vt 0.479931 0.511234
vt 0.462127 0.511465
vt 0.444416 0.511509
vt 0.426766 0.511368
vt 0.409129 0.510977
vt 0.391425 0.510310
vt 0.373561 0.509500
vt 0.355370 0.508475
vt 0.587629 0.999599
vt 0.569541 0.999703
vt 0.352224 0.999302
vt 0.340153 0.999177
vt 0.328062 0.999043
vt 0.315965 0.998897
vt 0.623785 0.999327
vt 0.605711 0.999472
vt 0.150044 0.996867
vt 0.122991 0.996481
vt 0.285715 0.998548
vt 0.267571 0.998344
vt 0.204210 0.997575
vt 0.177116 0.997232
vt 0.653889 0.998996
vt 0.641851 0.999162
vt 0.406561 0.999694
vt 0.388447 0.999582
vt 0.551448 0.999787
vt 0.497132 0.999914
vt 0.479019 0.999914
vt 0.533347 0.999851
vt 0.515241 0.999892
vt 0.249443 0.998128
vt 0.231325 0.997897
vt 0.690049 0.998454
vt 0.677998 0.998641
vt 0.665942 0.998823
vt 0.442792 0.999850
vt 0.424677 0.999783
vt 0.460906 0.999893
vt 0.869948 0.996261
vt 0.843061 0.996613
vt 0.762240 0.997554
vt 0.744214 0.997795
vt 0.816149 0.996950
vt 0.789210 0.997263
vt 0.026789 0.996639
vt 0.303867 0.998742
vt 0.965582 0.996778
vt 0.708120 0.998250
vt 0.726174 0.998029
vt 0.370335 0.999451
vn 0.000000 -0.000000 1.000000
vn -0.060183 0.059053 0.996429
vn -0.006439 -0.023072 0.999695
vn 0.041810 -0.101016 0.993988
vn 0.057649 -0.155705 0.986114
vn 0.141667 -0.162908 0.976409
vn 0.037416 -0.068789 0.996918
vn -0.203162 0.124332 0.971191
vn -0.178289 0.150273 0.972411
vn -0.151921 0.204199 0.967040
vn -0.162908 0.165838 0.972594
vn -0.151799 0.166540 0.974242
vn -0.112980 0.171758 0.978607
vn 0.057619 0.069979 0.995880
vn -0.041719 -0.103397 0.993744
vn 0.006500 -0.024415 0.999664
vn -0.061922 -0.108249 0.992187
vn -0.140019 -0.185217 0.972655
vn -0.037385 -0.070406 0.996796
vn -0.137730 -0.129551 0.981933
vn -0.215003 -0.194464 0.957030
vn -0.123478 -0.225898 0.966277
vn -0.154210 -0.207251 0.966033
vn -0.260048 -0.338389 0.904324
vn -0.227088 -0.180273 0.957030
vn -0.194403 -0.183294 0.963622
vn -0.224708 -0.162664 0.960723
vn -0.004547 -0.083743 0.996460
vn -0.078280 -0.268685 0.960021
vn 0.023377 0.048708 0.998535
vn -0.326395 -0.627308 0.707022
vn -0.061647 -0.249550 0.966369
vn -0.021485 -0.354930 0.934629
vn 0.040345 -0.364208 0.930418
vn 0.003876 -0.406476 0.913633
vn -0.122715 -0.371563 0.920225
vn -0.095218 -0.428419 0.898526
vn 0.072329 -0.440565 0.894772
vn 0.260292 -0.577746 0.773553
vn 0.246864 -0.271798 0.930113
vn 0.087497 -0.382305 0.919858
vn 0.122837 -0.327219 0.936918
vn 0.078463 -0.273080 0.958770
vn -0.292978 0.169164 0.941008
vn -0.232734 0.154393 0.960173
vn -0.223304 0.196234 0.954772
vn -0.241127 0.163640 0.956572
vn 0.257424 -0.200201 0.945311
vn 0.215827 -0.162175 0.962859
vn 0.254769 -0.206915 0.944578
vn 0.211615 -0.200720 0.956511
vn 0.125034 -0.291910 0.948210
vn 0.197668 -0.237465 0.951048
vn -0.187017 0.241798 0.952116
vn -0.205542 0.255806 0.944609
vn -0.215217 0.186010 0.958678
vn -0.186804 0.193213 0.963195
vn 0.197516 -0.203833 0.958861
vn 0.168798 -0.153630 0.973571
vn 0.144505 -0.116825 0.982574
vn 0.186163 -0.185492 0.964843
vn -0.148747 0.227699 0.962279
vn -0.129154 0.196295 0.971984
vn -0.120579 0.183264 0.975616
vn -0.157659 0.281655 0.946440
vn 0.149998 0.194037 0.969451
vn 0.195288 0.326731 0.924680
vn -0.192541 -0.072665 0.978576
vn 0.190283 0.215033 0.957884
vn 0.193426 0.177007 0.964995
vn 0.173315 0.244819 0.953917
vn 0.280129 0.242286 0.928861
vn -0.102664 -0.230506 0.967620
vn 0.237159 0.192450 0.952208
vn 0.349803 0.227577 0.908750
vn 0.315958 0.225471 0.921567
vn 0.150395 0.284097 0.946898
vn 0.066591 0.281045 0.957366
vn 0.070376 0.260689 0.962828
vn 0.292428 0.299661 0.908078
vn 0.138829 0.332774 0.932707
vn 0.035737 0.372692 0.927244
vn -0.163305 -0.326395 0.930998
vn -0.057588 0.369823 0.927305
vn -0.081362 0.336009 0.938322
vn -0.036042 0.316660 0.947844
vn 0.047060 0.342479 0.938322
vn 0.042695 -0.383648 0.922483
vn 0.062044 0.358715 0.931364
vn 0.040651 0.378491 0.924680
vn 0.033509 0.410565 0.911191
vn -0.009522 0.418928 0.907956
vn -0.002014 -0.145970 0.989257
vn -0.109561 0.148106 0.982879
vn 0.009247 -0.134648 0.990844
vn -0.082888 0.394391 0.915189
vn -0.084902 0.340831 0.936247
vn -0.189184 0.309549 0.931852
vn -0.207556 0.195349 0.958495
vn -0.243446 0.165166 0.955718
vn -0.286203 0.234565 0.928983
vn 0.113407 0.171392 0.978637
vn 0.123386 0.182623 0.975402
vn 0.134739 0.201575 0.970153
vn 0.154271 0.217383 0.963805
vn 0.159459 0.165014 0.973296
vn 0.168584 0.169347 0.971007
vn 0.181677 0.180548 0.966613
vn 0.212348 0.186468 0.959227
vn 0.217536 0.149236 0.964538
vn 0.223243 0.154668 0.962401
vn 0.187475 0.179052 0.965789
vn 0.082919 0.148412 0.985412
vn 0.041841 0.241218 0.969543
vn 0.038667 0.297830 0.953825
vn 0.041169 0.352062 0.935057
vn -0.002686 0.367626 0.929929
vn -0.016999 0.353893 0.935118
vn -0.021973 0.328623 0.944182
vn -0.019379 0.299417 0.953917
vn 0.013611 0.296213 0.955016
vn 0.029176 0.326029 0.944884
vn 0.007569 0.353221 0.935484
vn 0.001801 0.359691 0.933042
vn 0.005158 0.363781 0.931455
vn -0.018586 0.360485 0.932554
vn -0.027589 0.332041 0.942839
vn -0.058931 0.282449 0.957457
vn -0.092410 0.165380 0.981872
vn 0.001221 0.000092 0.999969
vn -0.000732 0.000092 0.999969
vn 0.000000 0.000000 0.999969
vn 0.000061 0.000000 1.000000
vn 0.000732 0.000031 0.999969
vn -0.021607 0.000000 0.999756
vn -0.001282 0.000031 0.999969
vn 0.021607 0.000000 0.999756
vn -0.043001 0.000000 0.999054
vn 0.043001 0.000000 0.999054
s off
f 23/1/1 18/2/1 5/3/1
f 23/1/1 5/3/1 14/4/1
f 46/5/1 19/6/1 9/7/1
f 46/5/1 9/7/1 43/8/1
f 9/7/1 20/9/1 43/8/1
f 18/2/1 22/10/1 10/11/1
f 18/2/1 10/11/1 5/3/1
f 9/7/1 21/12/1 39/13/1
f 9/7/1 39/13/1 18/2/1
f 39/13/1 22/10/1 18/2/1
f 20/9/1 9/7/1 18/2/1
f 20/9/1 18/2/1 41/14/1
f 18/2/1 23/1/1 41/14/1
f 19/6/1 49/15/1 47/16/1
f 19/6/1 47/16/1 9/7/1
f 47/16/1 21/12/1 9/7/1
s 1
f 86/17/2 12/18/3 2/19/4
f 40/20/5 86/17/2 2/19/4
f 22/10/6 40/20/5 10/11/7
f 40/20/5 2/19/4 10/11/7
f 114/21/8 69/22/9 7/23/10
f 114/21/8 7/23/10 71/24/11
f 115/25/12 81/26/13 12/18/3
f 115/25/12 12/18/3 86/17/2
f 72/27/14 1/28/15 17/29/16
f 42/30/17 23/1/18 14/4/19
f 42/30/17 1/28/15 72/27/14
f 14/4/19 1/28/15 42/30/17
f 53/31/20 41/14/21 23/1/18
f 53/31/20 23/1/18 94/32/22
f 23/1/18 42/30/17 94/32/22
f 54/33/23 43/8/24 20/9/25
f 54/33/23 20/9/25 97/34/26
f 20/9/25 31/35/27 97/34/26
f 103/36/28 44/37/29 100/38/30
f 44/37/29 24/39/31 100/38/30
f 24/39/31 45/40/32 100/38/30
f 106/41/33 30/42/34 19/6/35
f 56/43/36 106/41/33 46/5/37
f 106/41/33 19/6/35 46/5/37
f 49/15/38 25/44/39 47/16/40
f 57/45/41 109/46/42 48/47/43
f 57/45/41 48/47/43 25/44/39
f 57/45/41 25/44/39 49/15/38
f 116/48/44 79/49/45 16/50/46
f 116/48/44 16/50/46 87/51/47
f 24/39/31 46/5/37 43/8/24
f 47/16/40 51/52/48 21/12/49
f 51/52/48 88/53/50 21/12/49
f 88/53/50 38/54/51 21/12/49
f 25/44/39 50/55/52 89/56/53
f 25/44/39 89/56/53 47/16/40
f 89/56/53 51/52/48 47/16/40
f 117/57/54 84/58/55 36/59/56
f 117/57/54 36/59/56 90/60/57
f 39/13/58 52/61/59 22/10/6
f 52/61/59 91/62/60 22/10/6
f 91/62/60 40/20/5 22/10/6
f 21/12/49 38/54/51 39/13/58
f 38/54/51 92/63/61 39/13/58
f 92/63/61 52/61/59 39/13/58
f 118/64/62 66/65/63 33/66/64
f 118/64/62 33/66/64 93/67/65
f 119/68/66 94/32/22 42/30/17
f 119/68/66 42/30/17 72/27/14
f 120/69/67 95/70/68 53/31/20
f 120/69/67 53/31/20 96/71/69
f 31/35/27 20/9/25 41/14/21
f 31/35/27 41/14/21 95/70/68
f 41/14/21 53/31/20 95/70/68
f 121/72/70 97/34/26 31/35/27
f 121/72/70 31/35/27 64/73/71
f 122/74/72 98/75/73 54/33/23
f 122/74/72 54/33/23 99/76/74
f 45/40/32 24/39/31 98/75/73
f 24/39/31 43/8/24 98/75/73
f 43/8/24 54/33/23 98/75/73
f 123/77/75 100/38/30 45/40/32
f 123/77/75 45/40/32 74/78/76
f 124/79/77 101/80/78 55/81/79
f 124/79/77 55/81/79 102/82/80
f 125/83/81 73/84/82 44/37/29
f 125/83/81 44/37/29 103/36/28
f 105/85/83 56/43/36 46/5/37
f 44/37/29 105/85/83 24/39/31
f 105/85/83 46/5/37 24/39/31
f 126/86/84 104/87/85 56/43/36
f 126/86/84 56/43/36 105/85/83
f 127/88/86 63/89/87 30/42/34
f 127/88/86 30/42/34 106/41/33
f 108/90/88 57/45/41 49/15/38
f 30/42/34 108/90/88 49/15/38
f 30/42/34 49/15/38 19/6/35
f 128/91/89 107/92/90 57/45/41
f 128/91/89 57/45/41 108/90/88
f 129/93/91 75/94/92 48/47/43
f 129/93/91 48/47/43 109/46/42
f 112/95/93 58/96/94 110/97/95
f 130/98/96 111/99/97 58/96/94
f 130/98/96 58/96/94 112/95/93
f 131/100/98 62/101/99 29/102/100
f 131/100/98 29/102/100 113/103/101
f 88/53/50 114/21/8 71/24/11
f 88/53/50 71/24/11 38/54/51
f 51/52/48 90/60/57 114/21/8
f 51/52/48 114/21/8 88/53/50
f 90/60/57 36/59/56 69/22/9
f 90/60/57 69/22/9 114/21/8
f 91/62/60 115/25/12 86/17/2
f 91/62/60 86/17/2 40/20/5
f 52/61/59 93/67/65 115/25/12
f 52/61/59 115/25/12 91/62/60
f 93/67/65 33/66/64 81/26/13
f 93/67/65 81/26/13 115/25/12
f 55/81/79 103/36/28 100/38/30
f 110/97/95 116/48/44 87/51/47
f 110/97/95 87/51/47 50/55/52
f 58/96/94 113/103/101 116/48/44
f 58/96/94 116/48/44 110/97/95
f 113/103/101 29/102/100 79/49/45
f 113/103/101 79/49/45 116/48/44
f 89/56/53 117/57/54 90/60/57
f 89/56/53 90/60/57 51/52/48
f 50/55/52 87/51/47 117/57/54
f 50/55/52 117/57/54 89/56/53
f 87/51/47 16/50/46 84/58/55
f 87/51/47 84/58/55 117/57/54
f 92/63/61 118/64/62 93/67/65
f 92/63/61 93/67/65 52/61/59
f 38/54/51 71/24/11 118/64/62
f 38/54/51 118/64/62 92/63/61
f 71/24/11 7/23/10 66/65/63
f 71/24/11 66/65/63 118/64/62
f 85/104/102 119/68/66 72/27/14
f 85/104/102 72/27/14 17/29/16
f 37/105/103 96/71/69 119/68/66
f 37/105/103 119/68/66 85/104/102
f 96/71/69 53/31/20 94/32/22
f 96/71/69 94/32/22 119/68/66
f 70/106/104 120/69/67 96/71/69
f 70/106/104 96/71/69 37/105/103
f 8/107/105 64/73/71 120/69/67
f 8/107/105 120/69/67 70/106/104
f 64/73/71 31/35/27 95/70/68
f 64/73/71 95/70/68 120/69/67
f 67/108/106 121/72/70 64/73/71
f 67/108/106 64/73/71 8/107/105
f 34/109/107 99/76/74 121/72/70
f 34/109/107 121/72/70 67/108/106
f 99/76/74 54/33/23 97/34/26
f 99/76/74 97/34/26 121/72/70
f 82/110/108 122/74/72 99/76/74
f 82/110/108 99/76/74 34/109/107
f 13/111/109 74/78/76 122/74/72
f 13/111/109 122/74/72 82/110/108
f 74/78/76 45/40/32 98/75/73
f 74/78/76 98/75/73 122/74/72
f 77/112/110 123/77/75 74/78/76
f 77/112/110 74/78/76 13/111/109
f 27/113/111 102/82/80 123/77/75
f 27/113/111 123/77/75 77/112/110
f 102/82/80 55/81/79 100/38/30
f 102/82/80 100/38/30 123/77/75
f 60/114/112 124/79/77 102/82/80
f 60/114/112 102/82/80 27/113/111
f 3/115/113 61/116/114 124/79/77
f 3/115/113 124/79/77 60/114/112
f 61/116/114 28/117/115 101/80/78
f 61/116/114 101/80/78 124/79/77
f 101/80/78 125/83/81 103/36/28
f 101/80/78 103/36/28 55/81/79
f 28/117/115 78/118/116 125/83/81
f 28/117/115 125/83/81 101/80/78
f 78/118/116 15/119/117 73/84/82
f 78/118/116 73/84/82 125/83/81
f 73/84/82 126/86/84 105/85/83
f 73/84/82 105/85/83 44/37/29
f 15/119/117 83/120/118 126/86/84
f 15/119/117 126/86/84 73/84/82
f 83/120/118 35/121/119 104/87/85
f 83/120/118 104/87/85 126/86/84
f 104/87/85 127/88/86 106/41/33
f 104/87/85 106/41/33 56/43/36
f 35/121/119 68/122/120 127/88/86
f 35/121/119 127/88/86 104/87/85
f 68/122/120 6/123/121 63/89/87
f 68/122/120 63/89/87 127/88/86
f 63/89/87 128/91/89 108/90/88
f 63/89/87 108/90/88 30/42/34
f 6/123/121 65/124/122 128/91/89
f 6/123/121 128/91/89 63/89/87
f 65/124/122 32/125/123 107/92/90
f 65/124/122 107/92/90 128/91/89
f 107/92/90 129/93/91 109/46/42
f 107/92/90 109/46/42 57/45/41
f 32/125/123 80/126/124 129/93/91
f 32/125/123 129/93/91 107/92/90
f 80/126/124 11/127/125 75/94/92
f 80/126/124 75/94/92 129/93/91
f 48/47/43 112/95/93 110/97/95
f 48/47/43 110/97/95 25/44/39
f 110/97/95 50/55/52 25/44/39
f 75/94/92 130/98/96 112/95/93
f 75/94/92 112/95/93 48/47/43
f 11/127/125 76/128/126 130/98/96
f 11/127/125 130/98/96 75/94/92
f 76/128/126 26/129/127 111/99/97
f 76/128/126 111/99/97 130/98/96
f 111/99/97 131/100/98 113/103/101
f 111/99/97 113/103/101 58/96/94
f 26/129/127 59/130/128 131/100/98
f 26/129/127 131/100/98 111/99/97
f 59/130/128 4/131/129 62/101/99
f 59/130/128 62/101/99 131/100/98
f 169/132/130 144/133/131 15/119/117
f 169/132/130 15/119/117 78/118/116
f 62/101/99 4/131/129 154/134/1
f 62/101/99 154/134/1 137/135/1
f 79/49/45 29/102/100 163/136/1
f 79/49/45 163/136/1 147/137/132
f 156/138/133 172/139/134 28/117/115
f 156/138/133 28/117/115 61/116/114
f 165/140/1 139/141/135 12/18/3
f 165/140/1 12/18/3 81/26/13
f 174/142/1 149/143/1 36/59/56
f 174/142/1 36/59/56 84/58/55
f 141/144/1 158/145/132 33/66/64
f 141/144/1 33/66/64 66/65/63
f 151/146/132 167/147/1 3/115/113
f 151/146/132 3/115/113 60/114/112
f 160/148/1 135/149/1 26/129/127
f 160/148/1 26/129/127 76/128/126
f 81/26/13 33/66/64 158/145/132
f 81/26/13 158/145/132 165/140/1
f 83/120/118 15/119/117 144/133/131
f 83/120/118 144/133/131 143/150/136
f 65/124/122 6/123/121 168/151/1
f 65/124/122 168/151/1 153/152/132
f 68/122/120 35/121/119 136/153/1
f 68/122/120 136/153/1 162/154/1
f 171/155/1 146/156/1 7/23/10
f 171/155/1 7/23/10 69/22/9
f 77/112/110 13/111/109 155/157/1
f 77/112/110 155/157/1 138/158/1
f 61/116/114 3/115/113 167/147/1
f 61/116/114 167/147/1 156/138/133
f 78/118/116 28/117/115 172/139/134
f 78/118/116 172/139/134 169/132/130
f 60/114/112 27/113/111 164/159/1
f 60/114/112 164/159/1 151/146/132
f 173/160/1 148/161/1 11/127/125
f 173/160/1 11/127/125 80/126/124
f 143/150/136 136/153/1 35/121/119
f 143/150/136 35/121/119 83/120/118
f 153/152/132 157/162/1 32/125/123
f 153/152/132 32/125/123 65/124/122
f 85/104/102 17/29/16 140/163/137
f 85/104/102 140/163/137 166/164/1
f 67/108/106 8/107/105 150/165/1
f 67/108/106 150/165/1 134/166/1
f 70/106/104 37/105/103 159/167/132
f 70/106/104 159/167/132 142/168/1
f 133/169/138 2/19/4 12/18/3
f 133/169/138 12/18/3 139/141/135
f 147/137/132 152/170/1 16/50/46
f 147/137/132 16/50/46 79/49/45
f 17/29/16 1/28/15 132/171/139
f 17/29/16 132/171/139 140/163/137
f 80/126/124 32/125/123 157/162/1
f 80/126/124 157/162/1 173/160/1
f 137/135/1 163/136/1 29/102/100
f 137/135/1 29/102/100 62/101/99
f 161/172/1 155/157/1 13/111/109
f 161/172/1 13/111/109 82/110/108
f 166/164/1 159/167/132 37/105/103
f 166/164/1 37/105/103 85/104/102
f 134/166/1 145/173/1 34/109/107
f 134/166/1 34/109/107 67/108/106
f 162/154/1 168/151/1 6/123/121
f 162/154/1 6/123/121 68/122/120
f 76/128/126 11/127/125 148/161/1
f 76/128/126 148/161/1 160/148/1
f 138/158/1 164/159/1 27/113/111
f 138/158/1 27/113/111 77/112/110
f 59/130/128 26/129/127 135/149/1
f 59/130/128 135/149/1 170/174/132
f 82/110/108 34/109/107 145/173/1
f 82/110/108 145/173/1 161/172/1
f 84/58/55 16/50/46 152/170/1
f 84/58/55 152/170/1 174/142/1
f 66/65/63 7/23/10 146/156/1
f 66/65/63 146/156/1 141/144/1
f 69/22/9 36/59/56 149/143/1
f 69/22/9 149/143/1 171/155/1
f 142/168/1 150/165/1 8/107/105
f 142/168/1 8/107/105 70/106/104
f 170/174/132 154/134/1 4/131/129
f 170/174/132 4/131/129 59/130/128

Binary file not shown.

View file

@ -1,195 +0,0 @@
# Blender v2.63 (sub 0) OBJ File: 'mansion.blend'
# www.blender.org
v 7.200000 15.051811 0.000000
v 7.200000 -4.703387 0.000000
v -7.200001 -4.703386 0.000000
v -7.199998 15.051812 0.000000
v 7.200004 15.051809 5.216212
v 7.199996 -4.703390 5.216212
v -7.200003 -4.703385 5.216212
v -7.200000 15.051811 5.216212
v 9.173008 16.890579 4.248897
v 9.172999 -6.542161 4.248897
v -9.173006 -6.542155 4.248897
v -9.173003 16.890583 4.248897
v 6.059046 16.611769 6.134467
v 6.059039 -3.958062 6.134467
v -6.059045 -3.958058 6.134467
v -6.059043 16.611771 6.134467
v 9.399996 17.248425 0.000000
v 9.399996 -6.900001 0.000000
v -9.400002 -6.900000 0.000000
v -9.399999 17.248426 0.000000
v 10.399996 18.248425 0.000000
v 10.399996 -7.900001 0.000000
v -10.400002 -7.900000 0.000000
v -10.399999 18.248426 0.000000
v 10.399996 18.248425 -1.114107
v 10.399996 -7.900001 -1.114107
v -10.400002 -7.900000 -1.114107
v -10.399999 18.248426 -1.114107
v -3.010826 -4.703386 5.216212
v -3.010877 -4.703386 0.000000
v 2.982398 -4.703389 5.216212
v 2.982400 -4.703386 0.000000
v -4.000000 -7.900000 -1.114107
v -4.000000 -7.900000 0.000000
v 4.016253 -7.900001 -1.114107
v 4.016253 -7.900001 0.000000
v -4.000000 -7.900000 -0.557054
v 4.016253 -7.900001 -0.557054
v -4.000000 -9.076103 -1.114107
v 4.016253 -9.076104 -1.114107
v -4.000000 -9.076103 -0.557054
v 4.016253 -9.076104 -0.557054
v -3.010837 -4.703386 4.142046
v 2.982398 -4.703388 4.142024
v 2.853450 -6.900000 0.000000
v -2.883174 -6.900000 0.000000
vt 0.162027 0.621535
vt 0.536231 0.621536
vt 0.577840 0.648759
vt 0.120418 0.648758
vt 0.939245 0.646629
vt 0.939245 0.786154
vt 0.737148 0.786155
vt 0.897110 0.646629
vt 0.737147 0.646631
vt 0.052205 0.319428
vt 0.000000 0.295014
vt 0.000000 0.294973
vt 0.000000 0.169018
vt 0.000000 0.116829
vt 0.052205 0.092415
vt 0.093487 0.365928
vt 0.537355 0.365928
vt 0.502525 0.411843
vt 0.128318 0.411843
vt 0.537355 0.045915
vt 0.093487 0.045915
vt 0.128318 0.000000
vt 0.502525 0.000000
vt 0.532074 0.130947
vt 0.532074 0.280896
vt 0.142436 0.280896
vt 0.142436 0.130947
vt 0.577637 0.763083
vt 0.120210 0.763082
vt 0.101270 0.750710
vt 0.596577 0.750710
vt 0.676708 0.859429
vt 0.676707 0.642378
vt 0.536028 0.790305
vt 0.161819 0.790305
vt 0.101472 0.661134
vt 0.596784 0.661134
vt 0.596784 0.705922
vt 0.101472 0.705922
vt 0.677516 0.858032
vt 0.677516 0.858167
vt 0.636175 0.891472
vt 0.677516 0.450055
vt 0.677516 0.232010
vt 0.636176 0.198703
vt 0.636175 0.411322
vt 0.101270 0.705922
vt 0.596577 0.705923
vt 0.022278 0.661134
vt 0.022278 0.683528
vt 0.022278 0.705922
vt 0.939245 0.306546
vt 0.939245 0.447018
vt 0.897109 0.447018
vt 0.737148 0.306545
vt 0.737147 0.447017
vt 0.022278 0.750709
vt 0.022278 0.728316
vt 0.000000 0.728316
vt 0.000000 0.705922
vt 0.000000 0.683528
vt 0.676707 0.451312
vt 0.676708 0.233271
vt 0.537355 0.044672
vt 0.537355 0.022394
vt 0.636548 0.022394
vt 0.636548 0.044672
vt 0.537355 0.000000
vt 0.636548 0.000000
vt 0.636548 0.067066
vt 0.537355 0.067066
vn -0.000000 0.000000 1.000000
vn -0.000000 -1.000000 0.000000
vn 0.000000 0.465574 -0.885009
vn 0.440215 -0.000000 -0.897892
vn -0.440215 0.000000 -0.897892
vn -0.000000 -0.589444 0.807809
vn -0.517964 0.000000 0.855402
vn 0.517964 -0.000000 0.855402
vn -1.000000 0.000000 0.000000
vn 1.000000 0.000000 -0.000000
vn -0.000000 -1.000000 -0.000001
s off
f 3/1/1 4/2/1 20/3/1
f 3/1/1 20/3/1 19/4/1
f 29/5/2 7/6/2 3/7/2
f 43/8/2 29/5/2 3/7/2
f 30/9/2 43/8/2 3/7/2
f 11/10/3 7/11/3 29/12/3
f 11/10/3 29/12/3 31/13/3
f 11/10/3 31/13/3 6/14/3
f 10/15/3 11/10/3 6/14/3
f 11/16/4 12/17/4 8/18/4
f 11/16/4 8/18/4 7/19/4
f 9/20/5 10/21/5 6/22/5
f 9/20/5 6/22/5 5/23/5
f 13/24/1 16/25/1 15/26/1
f 13/24/1 15/26/1 14/27/1
f 14/27/6 15/26/6 11/10/6
f 14/27/6 11/10/6 10/15/6
f 15/26/7 16/25/7 12/17/7
f 15/26/7 12/17/7 11/16/7
f 13/24/8 14/27/8 10/21/8
f 13/24/8 10/21/8 9/20/8
f 17/28/1 18/29/1 22/30/1
f 17/28/1 22/30/1 21/31/1
f 30/9/1 3/7/1 19/32/1
f 30/9/1 19/32/1 46/33/1
f 1/34/1 2/35/1 18/29/1
f 1/34/1 18/29/1 17/28/1
f 23/36/9 24/37/9 28/38/9
f 23/36/9 28/38/9 27/39/9
f 46/40/1 19/41/1 23/42/1
f 45/43/1 46/40/1 23/42/1
f 18/44/1 45/43/1 23/42/1
f 18/44/1 23/42/1 22/45/1
f 23/42/1 34/42/1 22/45/1
f 34/42/1 36/46/1 22/45/1
f 19/4/1 20/3/1 24/37/1
f 19/4/1 24/37/1 23/36/1
f 21/31/10 22/30/10 26/47/10
f 21/31/10 26/47/10 25/48/10
f 34/49/2 23/36/2 27/39/2
f 34/49/2 27/39/2 37/50/2
f 27/39/2 33/51/2 37/50/2
f 6/52/11 31/53/11 44/54/11
f 2/55/11 6/52/11 44/54/11
f 2/55/2 44/54/2 32/56/2
f 22/30/2 36/57/2 38/58/2
f 22/30/2 38/58/2 26/47/2
f 38/58/2 35/51/2 26/47/2
f 42/59/10 40/60/10 35/51/10
f 42/59/10 35/51/10 38/58/10
f 37/50/9 33/51/9 39/60/9
f 37/50/9 39/60/9 41/61/9
f 44/54/2 31/53/2 29/5/2
f 44/54/2 29/5/2 43/8/2
f 2/55/1 32/56/1 45/62/1
f 2/55/1 45/62/1 18/63/1
f 32/56/1 30/9/1 46/33/1
f 32/56/1 46/33/1 45/62/1
f 37/64/1 41/65/1 42/66/1
f 37/64/1 42/66/1 38/67/1
f 42/66/2 41/65/2 39/68/2
f 42/66/2 39/68/2 40/69/2
f 37/64/2 38/67/2 36/70/2
f 37/64/2 36/70/2 34/71/2

Binary file not shown.

View file

@ -1,636 +0,0 @@
# Blender v2.63 (sub 14) OBJ File: 'skysphere.blend'
# www.blender.org
v -0.382683 0.000000 0.923880
v -0.707107 0.000000 0.707107
v -1.000000 0.000000 -0.000000
v -0.923880 0.000000 -0.382684
v -0.382683 0.000000 -0.923880
v -0.000000 0.000000 -1.000000
v -0.356842 0.138241 0.923880
v -0.659357 0.255436 0.707107
v -0.861492 0.333744 0.382683
v -0.932472 0.361242 -0.000000
v -0.861492 0.333744 -0.382684
v -0.659357 0.255436 -0.707107
v -0.356842 0.138241 -0.923880
v -0.282807 0.257812 0.923880
v -0.522558 0.476375 0.707107
v -0.682755 0.622414 0.382683
v -0.739009 0.673696 -0.000000
v -0.682755 0.622414 -0.382684
v -0.522558 0.476375 -0.707107
v -0.282807 0.257812 -0.923880
v -0.170577 0.342564 0.923880
v -0.315185 0.632976 0.707107
v -0.411809 0.827023 0.382683
v -0.445738 0.895163 -0.000000
v -0.411809 0.827023 -0.382684
v -0.315185 0.632976 -0.707107
v -0.170577 0.342564 -0.923880
v -0.035310 0.381051 0.923880
v -0.065244 0.704090 0.707107
v -0.085245 0.919938 0.382683
v -0.092268 0.995734 -0.000000
v -0.085245 0.919938 -0.382684
v -0.065244 0.704090 -0.707107
v -0.035310 0.381051 -0.923880
v -0.000000 -0.000000 1.000000
v 0.104726 0.368075 0.923880
v 0.193509 0.680113 0.707107
v 0.252831 0.888611 0.382683
v 0.273663 0.961826 -0.000000
v 0.252831 0.888611 -0.382684
v 0.193509 0.680113 -0.707107
v 0.104726 0.368075 -0.923880
v 0.230618 0.305388 0.923880
v 0.426127 0.564283 0.707107
v 0.556762 0.737272 0.382683
v 0.602634 0.798017 -0.000000
v 0.556762 0.737272 -0.382684
v 0.426127 0.564283 -0.707107
v 0.230618 0.305388 -0.923880
v 0.325364 0.201457 0.923880
v 0.601194 0.372244 0.707107
v 0.785498 0.486360 0.382683
v 0.850217 0.526432 -0.000000
v 0.785498 0.486360 -0.382684
v 0.601194 0.372244 -0.707107
v 0.325364 0.201457 -0.923880
v 0.376167 0.070318 0.923880
v 0.695067 0.129930 0.707107
v 0.908148 0.169762 0.382683
v 0.982973 0.183749 -0.000000
v 0.908148 0.169762 -0.382684
v 0.695067 0.129931 -0.707107
v 0.376167 0.070318 -0.923880
v 0.376167 -0.070318 0.923880
v 0.695067 -0.129931 0.707107
v 0.908148 -0.169762 0.382683
v 0.982973 -0.183750 -0.000000
v 0.908148 -0.169762 -0.382684
v 0.695067 -0.129930 -0.707107
v 0.376167 -0.070318 -0.923880
v 0.325364 -0.201457 0.923880
v 0.601194 -0.372244 0.707107
v 0.785498 -0.486360 0.382683
v 0.850217 -0.526432 -0.000000
v 0.785498 -0.486360 -0.382684
v 0.601194 -0.372244 -0.707107
v 0.325364 -0.201457 -0.923880
v 0.230618 -0.305388 0.923880
v 0.426127 -0.564283 0.707107
v 0.556762 -0.737272 0.382683
v 0.602634 -0.798017 -0.000000
v 0.556761 -0.737272 -0.382684
v 0.426127 -0.564283 -0.707107
v 0.230618 -0.305388 -0.923880
v 0.104726 -0.368075 0.923880
v 0.193509 -0.680113 0.707107
v 0.252831 -0.888611 0.382683
v 0.273663 -0.961825 -0.000000
v 0.252831 -0.888611 -0.382684
v 0.193509 -0.680113 -0.707107
v 0.104726 -0.368075 -0.923880
v -0.035310 -0.381051 0.923880
v -0.065244 -0.704090 0.707107
v -0.085245 -0.919938 0.382683
v -0.092269 -0.995734 -0.000000
v -0.085245 -0.919938 -0.382684
v -0.065244 -0.704090 -0.707107
v -0.035310 -0.381051 -0.923880
v -0.170577 -0.342564 0.923880
v -0.315185 -0.632976 0.707107
v -0.411809 -0.827023 0.382683
v -0.445738 -0.895163 -0.000000
v -0.411809 -0.827023 -0.382684
v -0.315185 -0.632976 -0.707107
v -0.170577 -0.342564 -0.923880
v -0.282807 -0.257812 0.923880
v -0.522558 -0.476375 0.707107
v -0.682755 -0.622414 0.382683
v -0.739009 -0.673695 -0.000000
v -0.682755 -0.622413 -0.382684
v -0.522558 -0.476375 -0.707107
v -0.282807 -0.257812 -0.923880
v -0.356842 -0.138241 0.923880
v -0.659357 -0.255436 0.707107
v -0.861492 -0.333744 0.382683
v -0.932472 -0.361242 -0.000000
v -0.861492 -0.333744 -0.382684
v -0.659357 -0.255436 -0.707107
v -0.356842 -0.138241 -0.923880
v -0.923880 0.000000 0.382683
v -0.707107 -0.000000 -0.707107
vt 0.250000 0.600586
vt 0.231445 0.597656
vt 0.216309 0.699219
vt 0.254395 0.706055
vt 0.674316 0.017578
vt 0.591797 0.101562
vt 0.643555 0.234375
vt 0.698730 0.180664
vt 0.318359 0.799805
vt 0.259277 0.832031
vt 0.267578 1.000000
vt 0.356445 0.950195
vt 0.752441 0.294922
vt 0.715332 0.302734
vt 0.729980 0.403320
vt 0.748535 0.400391
vt 0.291016 0.687500
vt 0.759766 0.169922
vt 0.268066 0.590820
vt 0.766602 0.000000
vt 0.367188 0.727539
vt 0.430664 0.840820
vt 0.789062 0.315430
vt 0.766113 0.411133
vt 0.320801 0.640625
vt 0.818848 0.204102
vt 0.282715 0.568359
vt 0.855957 0.050781
vt 0.399902 0.624023
vt 0.479492 0.683594
vt 0.819824 0.360352
vt 0.780762 0.433594
vt 0.342285 0.577148
vt 0.867188 0.278320
vt 0.292480 0.537109
vt 0.929688 0.163086
vt 0.412109 0.503906
vt 0.497070 0.501953
vt 0.839844 0.424805
vt 0.790527 0.464844
vt 0.348633 0.501953
vt 0.898926 0.382812
vt 0.295898 0.500977
vt 0.978027 0.320312
vt 0.400879 0.381836
vt 0.480469 0.318359
vt 0.846680 0.500000
vt 0.793945 0.500977
vt 0.341309 0.427734
vt 0.909668 0.503906
vt 0.292969 0.464844
vt 0.994629 0.501953
vt 0.368652 0.276367
vt 0.431152 0.159180
vt 0.839844 0.574219
vt 0.790039 0.538086
vt 0.322754 0.363281
vt 0.897949 0.623047
vt 0.283203 0.432617
vt 0.977051 0.683594
vt 0.319824 0.203125
vt 0.356445 0.048828
vt 0.820312 0.638672
vt 0.780273 0.569336
vt 0.292480 0.316406
vt 0.865234 0.726562
vt 0.268555 0.411133
vt 0.928223 0.839844
vt 0.261230 0.168945
vt 0.267090 0.000000
vt 0.790039 0.685547
vt 0.765625 0.590820
vt 0.255859 0.293945
vt 0.815918 0.798828
vt 0.250977 0.400391
vt 0.854492 0.950195
vt 0.200195 0.180664
vt 0.175293 0.018555
vt 0.753418 0.706055
vt 0.747559 0.600586
vt 0.218262 0.302734
vt 0.757324 0.831055
vt 0.232422 0.403320
vt 0.766113 1.000000
vt 0.145508 0.235352
vt 0.093262 0.102539
vt 0.715820 0.699219
vt 0.729492 0.596680
vt 0.184082 0.334961
vt 0.696777 0.819336
vt 0.215820 0.418945
vt 0.674316 0.982422
vt 0.104492 0.325195
vt 0.032227 0.240234
vt 0.681641 0.666016
vt 0.712891 0.580078
vt 0.157715 0.389648
vt 0.642090 0.763672
vt 0.203125 0.445312
vt 0.592285 0.899414
vt 0.082520 0.437500
vt 0.000000 0.410156
vt 0.655762 0.610352
vt 0.700684 0.552734
vt 0.143555 0.460938
vt 0.601562 0.672852
vt 0.196289 0.480469
vt 0.530273 0.763672
vt 0.082031 0.558594
vt 0.000000 0.591797
vt 0.642090 0.539062
vt 0.693848 0.518555
vt 0.143555 0.538086
vt 0.580078 0.558594
vt 0.195801 0.517578
vt 0.497070 0.591797
vt 0.103516 0.671875
vt 0.032715 0.761719
vt 0.641602 0.462891
vt 0.693848 0.481445
vt 0.157715 0.608398
vt 0.580566 0.437500
vt 0.202637 0.551758
vt 0.497070 0.408203
vt 0.144531 0.763672
vt 0.094238 0.899414
vt 0.655273 0.391602
vt 0.700684 0.446289
vt 0.183105 0.664062
vt 0.602539 0.324219
vt 0.214844 0.580078
vt 0.530273 0.237305
vt 0.713379 0.419922
vt 0.743652 0.500000
vt 0.245605 0.500000
vt 0.198730 0.819336
vt 0.176270 0.982422
vt 0.680664 0.334961
vn 0.552598 -0.103298 -0.827022
vn 0.964706 -0.180335 0.191892
vn 0.834417 -0.516649 -0.191892
vn 0.477967 -0.295944 0.827021
vn 0.710643 -0.440011 -0.548979
vn 0.710642 -0.440011 0.548979
vn 0.477967 -0.295944 -0.827022
vn 0.834417 -0.516649 0.191892
vn 0.591435 -0.783187 -0.191892
vn 0.338783 -0.448622 0.827022
vn 0.503704 -0.667012 -0.548979
vn 0.503704 -0.667012 0.548979
vn 0.338783 -0.448622 -0.827022
vn 0.591435 -0.783187 0.191892
vn 0.268577 -0.943951 -0.191892
vn 0.153845 -0.540710 0.827022
vn 0.228738 -0.803929 -0.548979
vn 0.228737 -0.803929 0.548979
vn 0.153845 -0.540710 -0.827022
vn 0.268577 -0.943951 0.191892
vn -0.090554 -0.977229 -0.191892
vn -0.051871 -0.559772 0.827021
vn -0.077121 -0.832271 -0.548979
vn -0.077121 -0.832271 0.548979
vn -0.051871 -0.559772 -0.827022
vn -0.090554 -0.977230 0.191892
vn -0.437455 -0.878528 -0.191892
vn -0.250581 -0.503234 0.827021
vn -0.372564 -0.748210 -0.548979
vn -0.372564 -0.748210 0.548979
vn -0.250581 -0.503234 -0.827022
vn -0.437455 -0.878528 0.191892
vn -0.725275 -0.661176 -0.191892
vn -0.415449 -0.378732 0.827022
vn -0.617691 -0.563099 -0.548978
vn -0.617691 -0.563099 0.548979
vn -0.415449 -0.378732 -0.827022
vn -0.725275 -0.661175 0.191892
vn -0.915143 -0.354528 -0.191892
vn -0.524208 -0.203079 0.827021
vn -0.779394 -0.301939 -0.548979
vn -0.779394 -0.301939 0.548979
vn -0.524208 -0.203079 -0.827022
vn -0.915143 -0.354528 0.191892
vn -0.981416 0.000000 -0.191892
vn -0.562170 0.000000 0.827021
vn -0.835836 0.000000 -0.548979
vn -0.835836 0.000000 0.548979
vn -0.562170 0.000000 -0.827022
vn -0.981416 0.000000 0.191892
vn -0.915143 0.354529 -0.191892
vn -0.524208 0.203079 0.827021
vn -0.779394 0.301939 -0.548979
vn -0.779394 0.301939 0.548979
vn -0.524208 0.203079 -0.827022
vn -0.915143 0.354528 0.191892
vn -0.725275 0.661176 -0.191892
vn -0.415449 0.378732 0.827021
vn -0.617691 0.563099 -0.548979
vn -0.617691 0.563099 0.548979
vn -0.415449 0.378732 -0.827022
vn -0.725275 0.661176 0.191892
vn -0.437455 0.878528 -0.191892
vn -0.250581 0.503234 0.827022
vn -0.372564 0.748210 -0.548979
vn -0.372564 0.748210 0.548979
vn -0.250581 0.503234 -0.827022
vn -0.437455 0.878528 0.191892
vn -0.090554 0.977230 -0.191891
vn -0.051871 0.559772 0.827022
vn -0.077121 0.832271 -0.548979
vn -0.077121 0.832271 0.548978
vn -0.051871 0.559772 -0.827022
vn -0.090553 0.977230 0.191892
vn 0.268577 0.943951 -0.191891
vn 0.153845 0.540710 0.827022
vn 0.228738 0.803929 -0.548979
vn 0.228738 0.803929 0.548978
vn 0.153845 0.540710 -0.827022
vn 0.268577 0.943951 0.191892
vn 0.591435 0.783187 -0.191891
vn 0.338783 0.448621 0.827022
vn 0.503704 0.667012 -0.548979
vn 0.503704 0.667012 0.548978
vn 0.338783 0.448622 -0.827022
vn 0.591435 0.783187 0.191892
vn 0.834417 0.516649 -0.191891
vn 0.477967 0.295944 0.827022
vn 0.710642 0.440011 -0.548979
vn 0.710643 0.440011 0.548978
vn 0.477967 0.295944 -0.827022
vn 0.834417 0.516649 0.191892
vn 0.194961 -0.036444 0.980134
vn 0.194961 -0.036444 -0.980134
vn 0.964706 -0.180335 -0.191892
vn 0.552598 -0.103299 0.827022
vn 0.821605 -0.153585 -0.548979
vn 0.821605 -0.153585 0.548979
vn 0.168630 -0.104411 0.980134
vn 0.168630 -0.104411 -0.980134
vn 0.119525 -0.158277 0.980134
vn 0.119525 -0.158277 -0.980134
vn 0.054278 -0.190766 0.980134
vn 0.054278 -0.190766 -0.980134
vn -0.018300 -0.197492 0.980134
vn -0.018300 -0.197491 -0.980134
vn -0.088407 -0.177545 0.980134
vn -0.088407 -0.177544 -0.980134
vn -0.146574 -0.133619 0.980134
vn -0.146573 -0.133619 -0.980134
vn -0.184945 -0.071648 0.980134
vn -0.184944 -0.071648 -0.980134
vn -0.198338 0.000000 0.980134
vn -0.198338 0.000000 -0.980134
vn -0.184945 0.071648 0.980134
vn -0.184944 0.071648 -0.980134
vn -0.146573 0.133619 0.980134
vn -0.146573 0.133619 -0.980134
vn -0.088407 0.177545 0.980134
vn -0.088407 0.177545 -0.980134
vn -0.018300 0.197492 0.980134
vn -0.018300 0.197492 -0.980134
vn 0.054278 0.190766 0.980134
vn 0.054278 0.190766 -0.980134
vn 0.119525 0.158277 0.980134
vn 0.119525 0.158277 -0.980134
vn 0.168630 0.104411 0.980134
vn 0.168630 0.104411 -0.980134
vn 0.194961 0.036444 0.980134
vn 0.194961 0.036444 -0.980134
vn 0.964706 0.180335 -0.191891
vn 0.552598 0.103299 0.827022
vn 0.821605 0.153584 -0.548979
vn 0.821605 0.153585 0.548979
vn 0.552598 0.103298 -0.827022
vn 0.964706 0.180335 0.191892
s off
f 7/1/1 1/2/1 2/3/1
f 7/1/1 2/3/1 8/4/1
f 10/5/2 3/6/2 4/7/2
f 10/5/2 4/7/2 11/8/2
f 16/9/3 9/10/3 10/11/3
f 16/9/3 10/11/3 17/12/3
f 19/13/4 12/14/4 13/15/4
f 19/13/4 13/15/4 20/16/4
f 15/17/5 8/4/5 9/10/5
f 15/17/5 9/10/5 16/9/5
f 18/18/6 11/8/6 12/14/6
f 18/18/6 12/14/6 19/13/6
f 14/19/7 7/1/7 8/4/7
f 14/19/7 8/4/7 15/17/7
f 17/20/8 10/5/8 11/8/8
f 17/20/8 11/8/8 18/18/8
f 23/21/9 16/9/9 17/12/9
f 23/21/9 17/12/9 24/22/9
f 26/23/10 19/13/10 20/16/10
f 26/23/10 20/16/10 27/24/10
f 22/25/11 15/17/11 16/9/11
f 22/25/11 16/9/11 23/21/11
f 25/26/12 18/18/12 19/13/12
f 25/26/12 19/13/12 26/23/12
f 21/27/13 14/19/13 15/17/13
f 21/27/13 15/17/13 22/25/13
f 24/28/14 17/20/14 18/18/14
f 24/28/14 18/18/14 25/26/14
f 30/29/15 23/21/15 24/22/15
f 30/29/15 24/22/15 31/30/15
f 33/31/16 26/23/16 27/24/16
f 33/31/16 27/24/16 34/32/16
f 29/33/17 22/25/17 23/21/17
f 29/33/17 23/21/17 30/29/17
f 32/34/18 25/26/18 26/23/18
f 32/34/18 26/23/18 33/31/18
f 28/35/19 21/27/19 22/25/19
f 28/35/19 22/25/19 29/33/19
f 31/36/20 24/28/20 25/26/20
f 31/36/20 25/26/20 32/34/20
f 38/37/21 30/29/21 31/30/21
f 38/37/21 31/30/21 39/38/21
f 41/39/22 33/31/22 34/32/22
f 41/39/22 34/32/22 42/40/22
f 37/41/23 29/33/23 30/29/23
f 37/41/23 30/29/23 38/37/23
f 40/42/24 32/34/24 33/31/24
f 40/42/24 33/31/24 41/39/24
f 36/43/25 28/35/25 29/33/25
f 36/43/25 29/33/25 37/41/25
f 39/44/26 31/36/26 32/34/26
f 39/44/26 32/34/26 40/42/26
f 45/45/27 38/37/27 39/38/27
f 45/45/27 39/38/27 46/46/27
f 48/47/28 41/39/28 42/40/28
f 48/47/28 42/40/28 49/48/28
f 44/49/29 37/41/29 38/37/29
f 44/49/29 38/37/29 45/45/29
f 47/50/30 40/42/30 41/39/30
f 47/50/30 41/39/30 48/47/30
f 43/51/31 36/43/31 37/41/31
f 43/51/31 37/41/31 44/49/31
f 46/52/32 39/44/32 40/42/32
f 46/52/32 40/42/32 47/50/32
f 52/53/33 45/45/33 46/46/33
f 52/53/33 46/46/33 53/54/33
f 55/55/34 48/47/34 49/48/34
f 55/55/34 49/48/34 56/56/34
f 51/57/35 44/49/35 45/45/35
f 51/57/35 45/45/35 52/53/35
f 54/58/36 47/50/36 48/47/36
f 54/58/36 48/47/36 55/55/36
f 50/59/37 43/51/37 44/49/37
f 50/59/37 44/49/37 51/57/37
f 53/60/38 46/52/38 47/50/38
f 53/60/38 47/50/38 54/58/38
f 59/61/39 52/53/39 53/54/39
f 59/61/39 53/54/39 60/62/39
f 62/63/40 55/55/40 56/56/40
f 62/63/40 56/56/40 63/64/40
f 58/65/41 51/57/41 52/53/41
f 58/65/41 52/53/41 59/61/41
f 61/66/42 54/58/42 55/55/42
f 61/66/42 55/55/42 62/63/42
f 57/67/43 50/59/43 51/57/43
f 57/67/43 51/57/43 58/65/43
f 60/68/44 53/60/44 54/58/44
f 60/68/44 54/58/44 61/66/44
f 66/69/45 59/61/45 60/62/45
f 66/69/45 60/62/45 67/70/45
f 69/71/46 62/63/46 63/64/46
f 69/71/46 63/64/46 70/72/46
f 65/73/47 58/65/47 59/61/47
f 65/73/47 59/61/47 66/69/47
f 68/74/48 61/66/48 62/63/48
f 68/74/48 62/63/48 69/71/48
f 64/75/49 57/67/49 58/65/49
f 64/75/49 58/65/49 65/73/49
f 67/76/50 60/68/50 61/66/50
f 67/76/50 61/66/50 68/74/50
f 73/77/51 66/69/51 67/70/51
f 73/77/51 67/70/51 74/78/51
f 76/79/52 69/71/52 70/72/52
f 76/79/52 70/72/52 77/80/52
f 72/81/53 65/73/53 66/69/53
f 72/81/53 66/69/53 73/77/53
f 75/82/54 68/74/54 69/71/54
f 75/82/54 69/71/54 76/79/54
f 71/83/55 64/75/55 65/73/55
f 71/83/55 65/73/55 72/81/55
f 74/84/56 67/76/56 68/74/56
f 74/84/56 68/74/56 75/82/56
f 80/85/57 73/77/57 74/78/57
f 80/85/57 74/78/57 81/86/57
f 83/87/58 76/79/58 77/80/58
f 83/87/58 77/80/58 84/88/58
f 79/89/59 72/81/59 73/77/59
f 79/89/59 73/77/59 80/85/59
f 82/90/60 75/82/60 76/79/60
f 82/90/60 76/79/60 83/87/60
f 78/91/61 71/83/61 72/81/61
f 78/91/61 72/81/61 79/89/61
f 81/92/62 74/84/62 75/82/62
f 81/92/62 75/82/62 82/90/62
f 87/93/63 80/85/63 81/86/63
f 87/93/63 81/86/63 88/94/63
f 90/95/64 83/87/64 84/88/64
f 90/95/64 84/88/64 91/96/64
f 86/97/65 79/89/65 80/85/65
f 86/97/65 80/85/65 87/93/65
f 89/98/66 82/90/66 83/87/66
f 89/98/66 83/87/66 90/95/66
f 85/99/67 78/91/67 79/89/67
f 85/99/67 79/89/67 86/97/67
f 88/100/68 81/92/68 82/90/68
f 88/100/68 82/90/68 89/98/68
f 94/101/69 87/93/69 88/94/69
f 94/101/69 88/94/69 95/102/69
f 97/103/70 90/95/70 91/96/70
f 97/103/70 91/96/70 98/104/70
f 93/105/71 86/97/71 87/93/71
f 93/105/71 87/93/71 94/101/71
f 96/106/72 89/98/72 90/95/72
f 96/106/72 90/95/72 97/103/72
f 92/107/73 85/99/73 86/97/73
f 92/107/73 86/97/73 93/105/73
f 95/108/74 88/100/74 89/98/74
f 95/108/74 89/98/74 96/106/74
f 101/109/75 94/101/75 95/102/75
f 101/109/75 95/102/75 102/110/75
f 104/111/76 97/103/76 98/104/76
f 104/111/76 98/104/76 105/112/76
f 100/113/77 93/105/77 94/101/77
f 100/113/77 94/101/77 101/109/77
f 103/114/78 96/106/78 97/103/78
f 103/114/78 97/103/78 104/111/78
f 99/115/79 92/107/79 93/105/79
f 99/115/79 93/105/79 100/113/79
f 102/116/80 95/108/80 96/106/80
f 102/116/80 96/106/80 103/114/80
f 108/117/81 101/109/81 102/110/81
f 108/117/81 102/110/81 109/118/81
f 111/119/82 104/111/82 105/112/82
f 111/119/82 105/112/82 112/120/82
f 107/121/83 100/113/83 101/109/83
f 107/121/83 101/109/83 108/117/83
f 110/122/84 103/114/84 104/111/84
f 110/122/84 104/111/84 111/119/84
f 106/123/85 99/115/85 100/113/85
f 106/123/85 100/113/85 107/121/85
f 109/124/86 102/116/86 103/114/86
f 109/124/86 103/114/86 110/122/86
f 115/125/87 108/117/87 109/118/87
f 115/125/87 109/118/87 116/126/87
f 118/127/88 111/119/88 112/120/88
f 118/127/88 112/120/88 119/128/88
f 114/129/89 107/121/89 108/117/89
f 114/129/89 108/117/89 115/125/89
f 117/130/90 110/122/90 111/119/90
f 117/130/90 111/119/90 118/127/90
f 113/131/91 106/123/91 107/121/91
f 113/131/91 107/121/91 114/129/91
f 116/132/92 109/124/92 110/122/92
f 116/132/92 110/122/92 117/130/92
f 13/15/93 5/133/93 6/134/93
f 35/135/94 1/2/94 7/1/94
f 9/10/95 120/136/95 3/137/95
f 9/10/95 3/137/95 10/11/95
f 12/14/96 121/138/96 5/133/96
f 12/14/96 5/133/96 13/15/96
f 8/4/97 2/3/97 120/136/97
f 8/4/97 120/136/97 9/10/97
f 11/8/98 4/7/98 121/138/98
f 11/8/98 121/138/98 12/14/98
f 20/16/99 13/15/99 6/134/99
f 35/135/100 7/1/100 14/19/100
f 27/24/101 20/16/101 6/134/101
f 35/135/102 14/19/102 21/27/102
f 34/32/103 27/24/103 6/134/103
f 35/135/104 21/27/104 28/35/104
f 42/40/105 34/32/105 6/134/105
f 35/135/106 28/35/106 36/43/106
f 49/48/107 42/40/107 6/134/107
f 35/135/108 36/43/108 43/51/108
f 56/56/109 49/48/109 6/134/109
f 35/135/110 43/51/110 50/59/110
f 63/64/111 56/56/111 6/134/111
f 35/135/112 50/59/112 57/67/112
f 70/72/113 63/64/113 6/134/113
f 35/135/114 57/67/114 64/75/114
f 77/80/115 70/72/115 6/134/115
f 35/135/116 64/75/116 71/83/116
f 84/88/117 77/80/117 6/134/117
f 35/135/118 71/83/118 78/91/118
f 91/96/119 84/88/119 6/134/119
f 35/135/120 78/91/120 85/99/120
f 98/104/121 91/96/121 6/134/121
f 35/135/122 85/99/122 92/107/122
f 105/112/123 98/104/123 6/134/123
f 35/135/124 92/107/124 99/115/124
f 112/120/125 105/112/125 6/134/125
f 35/135/126 99/115/126 106/123/126
f 119/128/127 112/120/127 6/134/127
f 35/135/128 106/123/128 113/131/128
f 5/133/129 119/128/129 6/134/129
f 113/131/130 1/2/130 35/135/130
f 120/136/131 115/125/131 116/126/131
f 120/136/131 116/126/131 3/137/131
f 121/138/132 118/127/132 119/128/132
f 121/138/132 119/128/132 5/133/132
f 2/3/133 114/129/133 115/125/133
f 2/3/133 115/125/133 120/136/133
f 4/7/134 117/130/134 118/127/134
f 4/7/134 118/127/134 121/138/134
f 1/2/135 113/131/135 114/129/135
f 1/2/135 114/129/135 2/3/135
f 3/6/136 116/132/136 117/130/136
f 3/6/136 117/130/136 4/7/136

Binary file not shown.

View file

@ -1,945 +0,0 @@
# Blender v2.63 (sub 14) OBJ File: 'tower.blend'
# www.blender.org
v 1.950901 -9.807853 10.000000
v -0.000003 -10.000000 -10.000000
v -0.000003 -10.000000 10.000000
v -1.950907 -9.807852 -10.000000
v 0.000000 10.000000 0.000000
v 1.950903 9.807853 0.000000
v -1.950888 9.807856 0.000000
v -7.071059 7.071077 -2.500000
v -8.314690 5.555713 -2.500000
v 9.807853 1.950904 5.000000
v -5.555707 -8.314693 -7.500000
v -7.071073 -7.071063 -7.500000
v -8.314700 -5.555696 -7.500000
v 8.314696 5.555702 2.500000
v 7.071068 7.071068 2.500000
v -9.807851 1.950914 -5.000000
v 8.314696 -5.555702 7.500000
v 5.555702 -8.314696 7.500000
v 7.071068 -7.071068 7.500000
v 9.807853 -1.950902 5.000000
v 10.000000 0.000001 5.000000
v -10.000000 0.000010 -5.000000
v -5.555691 8.314704 -2.500000
v 5.555702 8.314696 2.500000
v -1.950907 -9.807852 -8.750000
v -3.826839 -9.238794 -8.750000
v -5.555707 -8.314693 -8.750000
v -5.555691 8.314704 -1.250000
v -3.826821 9.238801 -1.250000
v -1.950888 9.807856 -1.250000
v -9.807855 -1.950895 -6.250000
v -8.314700 -5.555696 -6.250000
v -9.238798 -3.826827 -6.250000
v -8.314690 5.555713 -3.750000
v -9.807851 1.950914 -3.750000
v -9.238791 3.826845 -3.750000
v 5.555702 -8.314696 8.750000
v 3.826833 -9.238795 8.750000
v 1.950901 -9.807853 8.750000
v 9.807853 1.950904 3.750000
v 8.314696 5.555702 3.750000
v 9.238795 3.826834 3.750000
v 3.826835 9.238795 1.250000
v 1.950903 9.807853 1.250000
v 5.555702 8.314696 1.250000
v 8.314696 -5.555702 6.250000
v 9.238795 -3.826833 6.250000
v 9.807853 -1.950902 6.250000
v -0.000003 -10.000000 -9.375000
v -1.950907 -9.807852 -9.375000
v -3.826839 -9.238794 -9.375000
v -9.238791 3.826845 -4.375000
v -9.807851 1.950914 -4.375000
v 6.865497 1.334705 3.750000
v 5.820288 3.858064 3.750000
v 6.467157 2.647857 3.750000
v 2.678784 6.436230 1.250000
v -7.071059 7.071077 -3.125000
v -9.238791 3.826845 -3.125000
v -8.314690 5.555713 -3.125000
v 1.950901 -9.807853 9.375000
v 3.826833 -9.238795 9.375000
v -7.071073 -7.071063 -6.875000
v -9.238798 -3.826827 -6.875000
v -8.314700 -5.555696 -6.875000
v -7.071073 -7.071063 -8.125000
v -5.555707 -8.314693 -8.125000
v -3.826839 -9.238794 -8.125000
v -9.807855 -1.950895 -5.625000
v -9.238798 -3.826827 -5.625000
v -10.000000 0.000010 -5.625000
v -7.071059 7.071077 -1.875000
v 9.238795 3.826834 4.375000
v 9.807853 1.950904 4.375000
v 3.826835 9.238795 1.875000
v 5.555702 8.314696 1.875000
v 7.000000 -0.030926 4.375000
v -1.365621 6.834572 -0.625000
v -2.678774 6.436234 -0.625000
v 0.000000 6.969073 -0.625000
v -10.000000 0.000010 -4.375000
v -0.000002 -7.030927 9.375000
v 4.949747 -4.980674 6.875000
v 2.678783 -6.498084 8.125000
v 3.888991 -5.851214 8.125000
v 7.071068 7.071068 3.125000
v 8.314696 5.555702 3.125000
v 9.238795 3.826834 3.125000
v -3.826821 9.238801 -1.875000
v -5.555691 8.314704 -1.875000
v 4.949748 4.918820 1.875000
v -3.888984 5.789366 -1.875000
v -2.678774 6.436234 -1.875000
v 6.467157 2.647857 3.125000
v -6.999999 -0.030920 -5.625000
v -6.467159 -2.709706 -5.625000
v -6.865498 -1.396553 -5.625000
v -2.678787 -6.498082 -8.125000
v 7.071068 7.071068 1.875000
v 6.865497 -1.396558 5.625000
v 6.467157 -2.709710 5.625000
v 5.820288 -3.919918 6.875000
v 6.467157 -2.709710 6.875000
v 3.888992 5.789361 1.875000
v -6.999999 -0.030920 -4.375000
v 4.949748 4.918820 3.125000
v 5.820288 3.858064 3.125000
v -5.820290 -3.919914 -6.250000
v -6.467159 -2.709706 -6.250000
v -5.820282 3.858072 -3.750000
v -6.865495 1.334713 -3.750000
v 0.000000 10.000000 -0.625000
v -3.826821 9.238801 -0.625000
v -1.950888 9.807856 -0.625000
v 10.000000 0.000001 4.375000
v 3.826835 9.238795 0.625000
v 0.000000 10.000000 0.625000
v 1.950903 9.807853 0.625000
v 10.000000 0.000001 5.625000
v 9.807853 -1.950902 5.625000
v 9.238795 -3.826833 5.625000
v 8.314696 -5.555702 6.875000
v 9.238795 -3.826833 6.875000
v 2.678784 6.436230 1.875000
v 6.865497 1.334705 4.375000
v 6.467157 2.647857 4.375000
v -4.949741 4.918827 -1.875000
v 1.365631 -6.896424 10.000000
v -0.000002 -7.030927 -10.000000
v -0.000002 -7.030927 10.000000
v -1.365635 -6.896423 -10.000000
v -5.820282 3.858072 -3.125000
v 1.365631 -6.896424 9.375000
v 2.678783 -6.498084 9.375000
v -4.949750 -4.980671 -6.875000
v 6.865497 -1.396558 5.000000
v 4.949747 -4.980674 7.500000
v 3.888991 -5.851214 7.500000
v 5.820288 -3.919918 7.500000
v 4.949747 -4.980674 8.125000
v -0.000003 -10.000000 9.375000
v 2.678784 6.436230 0.625000
v 0.000000 6.969073 0.625000
v 1.365633 6.834569 0.625000
v 7.000000 -0.030926 5.625000
v 7.071068 -7.071068 6.875000
v -5.820290 -3.919914 -7.500000
v 5.820288 3.858064 2.500000
v 4.949748 4.918820 2.500000
v -6.865495 1.334713 -5.000000
v 3.826833 -9.238795 8.125000
v 5.555702 -8.314696 8.125000
v 7.071068 -7.071068 8.125000
v -3.888984 5.789366 -2.500000
v -6.865498 -1.396553 -5.000000
v -6.999999 -0.030920 -5.000000
v 7.000000 -0.030926 5.000000
v 6.467157 -2.709710 6.250000
v 5.820288 -3.919918 6.250000
v 3.888992 5.789361 1.250000
v 1.365633 6.834569 1.250000
v -6.467154 2.647864 -3.125000
v -4.949741 4.918827 -3.125000
v -6.865495 1.334713 -4.375000
v -6.467154 2.647864 -4.375000
v -5.820282 3.858072 -2.500000
v 6.865497 1.334705 5.000000
v -3.888995 -5.851212 -7.500000
v -4.949750 -4.980671 -7.500000
v 6.865497 -1.396558 6.250000
v -0.000002 -7.030927 -9.375000
v -1.365635 -6.896423 -9.375000
v -2.678787 -6.498082 -9.375000
v 3.888992 5.789361 2.500000
v -1.365635 -6.896423 -8.750000
v -2.678787 -6.498082 -8.750000
v -3.888995 -5.851212 -8.750000
v -3.888984 5.789366 -1.250000
v -2.678774 6.436234 -1.250000
v -1.365621 6.834572 -1.250000
v -6.865498 -1.396553 -6.250000
v -4.949741 4.918827 -2.500000
v -1.365621 6.834572 0.000000
v 1.365633 6.834569 0.000000
v 0.000000 6.969073 0.000000
v 1.365631 -6.896424 8.750000
v 2.678783 -6.498084 8.750000
v 3.888991 -5.851214 8.750000
v -6.467154 2.647864 -3.750000
v -3.888995 -5.851212 -8.125000
v -4.949750 -4.980671 -8.125000
v -5.820290 -3.919914 -6.875000
v -6.467159 -2.709706 -6.875000
v -0.000001 9.999997 -10.000000
v -0.000001 9.999997 10.000000
v 1.950902 9.807850 -10.000000
v 1.950902 9.807850 10.000000
v 3.826834 9.238792 -10.000000
v 3.826834 9.238792 10.000000
v 5.555702 8.314693 -10.000000
v 5.555702 8.314693 10.000000
v 7.071067 7.071065 -10.000000
v 7.071067 7.071065 10.000000
v 8.314695 5.555699 -10.000000
v 8.314695 5.555699 10.000000
v 9.238795 3.826832 -10.000000
v 9.238795 3.826832 10.000000
v 9.807852 1.950901 -10.000000
v 9.807852 1.950901 10.000000
v 9.999999 -0.000002 -10.000000
v 9.999999 -0.000002 10.000000
v 9.807853 -1.950905 -10.000000
v 9.807853 -1.950905 10.000000
v 9.238795 -3.826835 -10.000000
v 9.238795 -3.826835 10.000000
v 8.314696 -5.555705 -10.000000
v 8.314696 -5.555705 10.000000
v 7.071067 -7.071071 -10.000000
v 7.071067 -7.071071 10.000000
v 5.555701 -8.314699 -10.000000
v 5.555701 -8.314699 10.000000
v 3.826832 -9.238798 -10.000000
v 3.826832 -9.238798 10.000000
v 1.950900 -9.807856 -10.000000
v 1.950900 -9.807856 10.000000
v -0.000004 -10.000004 -10.000000
v -0.000004 -10.000004 10.000000
v -1.950908 -9.807855 -10.000000
v -1.950908 -9.807855 10.000000
v -3.826839 -9.238797 -10.000000
v -3.826839 -9.238797 10.000000
v -5.555708 -8.314696 -10.000000
v -5.555708 -8.314696 10.000000
v -7.071073 -7.071066 -10.000000
v -7.071073 -7.071066 10.000000
v -8.314701 -5.555699 -10.000000
v -8.314701 -5.555699 10.000000
v -9.238800 -3.826829 -10.000000
v -9.238800 -3.826829 10.000000
v -9.807855 -1.950897 -10.000000
v -9.807855 -1.950897 10.000000
v -10.000001 0.000007 -10.000000
v -10.000001 0.000007 10.000000
v -9.807852 1.950911 -10.000000
v -9.807852 1.950911 10.000000
v -9.238791 3.826842 -10.000000
v -9.238791 3.826842 10.000000
v -8.314690 5.555710 -10.000000
v -8.314690 5.555710 10.000000
v -7.071060 7.071074 -10.000000
v -7.071060 7.071074 10.000000
v -5.555692 8.314701 -10.000000
v -5.555692 8.314701 10.000000
v -3.826821 9.238798 -10.000000
v -3.826821 9.238798 10.000000
v -1.950889 9.807854 -10.000000
v -1.950889 9.807854 10.000000
v -9.807855 -1.950895 -5.000000
v -0.000001 9.999997 0.000000
v 1.950902 9.807850 0.000000
v 3.826834 9.238792 0.000000
v 5.555702 8.314693 0.000000
v 7.071067 7.071065 0.000000
v 8.314695 5.555699 0.000000
v 9.238795 3.826832 0.000000
v 9.807852 1.950901 0.000000
v 9.999999 -0.000002 0.000000
v 9.807853 -1.950905 0.000000
v 9.238795 -3.826835 0.000000
v 8.314696 -5.555705 0.000000
v 7.071067 -7.071071 0.000000
v 5.555701 -8.314699 0.000000
v 3.826832 -9.238798 0.000000
v 1.950900 -9.807856 0.000000
v -0.000004 -10.000004 0.000000
v -1.950908 -9.807855 0.000000
v -3.826839 -9.238797 0.000000
v -5.555708 -8.314696 0.000000
v -7.071073 -7.071066 0.000000
v -8.314701 -5.555699 0.000000
v -9.238800 -3.826829 0.000000
v -9.807855 -1.950897 0.000000
v -10.000001 0.000007 0.000000
v -9.807852 1.950911 0.000000
v -9.238791 3.826842 0.000000
v -8.314690 5.555710 0.000000
v -7.071060 7.071074 0.000000
v -5.555692 8.314701 0.000000
v -3.826821 9.238798 0.000000
v -1.950889 9.807854 0.000000
vt 0.753906 0.821289
vt 0.930664 0.805664
vt 0.930664 0.918945
vt 0.753906 0.902344
vt 0.265625 0.908203
vt 0.074219 0.924805
vt 0.074219 0.800781
vt 0.265625 0.818359
vt 0.539062 0.805664
vt 0.718750 0.821289
vt 0.718750 0.902344
vt 0.539062 0.918945
vt 0.925781 0.956055
vt 0.751953 0.937500
vt 0.542969 0.767578
vt 0.719727 0.782227
vt 0.079102 0.760742
vt 0.268555 0.778320
vt 0.493164 0.966797
vt 0.299805 0.944336
vt 0.304688 0.908203
vt 0.496094 0.924805
vt 0.304688 0.818359
vt 0.496094 0.800781
vt 0.621094 0.243164
vt 0.681641 0.243164
vt 0.681641 0.478516
vt 0.621094 0.478516
vt 0.743164 0.243164
vt 0.743164 0.478516
vt 0.804688 0.243164
vt 0.804688 0.478516
vt 0.866211 0.243164
vt 0.866211 0.478516
vt 0.926758 0.243164
vt 0.926758 0.478516
vt 0.988281 0.243164
vt 0.988281 0.478516
vt 0.559570 0.243164
vt 0.559570 0.478516
vt 0.498047 0.243164
vt 0.498047 0.478516
vt 0.437500 0.243164
vt 0.437500 0.478516
vt 0.375977 0.243164
vt 0.375977 0.478516
vt 0.314453 0.243164
vt 0.314453 0.478516
vt 0.252930 0.243164
vt 0.252930 0.478516
vt 0.192383 0.243164
vt 0.192383 0.478516
vt 0.130859 0.243164
vt 0.130859 0.478516
vt 0.069336 0.243164
vt 0.069336 0.478516
vt 0.008789 0.243164
vt 0.008789 0.478516
vt 0.621094 0.007812
vt 0.681641 0.007812
vt 0.743164 0.007812
vt 0.804688 0.007812
vt 0.866211 0.007812
vt 0.926758 0.007812
vt 0.988281 0.007812
vt 0.559570 0.007812
vt 0.498047 0.007812
vt 0.437500 0.007812
vt 0.375977 0.007812
vt 0.314453 0.007812
vt 0.252930 0.007812
vt 0.192383 0.007812
vt 0.130859 0.007812
vt 0.069336 0.007812
vt 0.008789 0.007812
vn 0.000000 -0.000000 -1.000000
vn 0.000000 -0.000000 1.000000
vn 0.834612 0.550839 0.000000
vn 0.828246 -0.560364 0.000000
vn 1.000000 -0.000000 0.000000
vn -0.185143 0.982711 0.000000
vn -0.922348 0.386361 0.000000
vn -0.701895 -0.712280 0.000000
vn -0.204977 0.978767 0.000000
vn 0.562637 0.826704 0.000000
vn -0.980387 -0.197082 0.000000
vn -0.980387 0.197083 0.000000
vn 0.922348 -0.386361 0.000000
vn -1.000000 0.000000 0.000000
vn -0.548382 -0.836228 0.000000
vn 0.701895 -0.712280 0.000000
vn 0.956940 -0.290285 0.000000
vn -0.010309 -0.999947 0.000000
vn -0.925368 -0.379069 0.000000
vn -0.995185 -0.098017 0.000000
vn 0.922348 0.386360 0.000000
vn -0.391432 -0.920207 0.000000
vn 0.471395 -0.881922 0.000000
vn -0.773011 -0.634393 0.000000
vn 0.981172 -0.193137 0.000000
vn 0.471397 0.881921 0.000000
vn 0.391432 0.920207 0.000000
vn -0.881921 -0.471397 0.000000
vn -0.995185 0.098017 0.000000
vn 0.712205 -0.701971 0.000000
vn 0.995185 -0.098018 0.000000
vn 0.010309 -0.999947 0.000000
vn -0.098017 -0.995185 0.000000
vn -0.956940 -0.290285 0.000000
vn 0.881921 -0.471398 0.000000
vn -0.185144 -0.982711 0.000000
vn 0.995185 0.098016 0.000000
vn -0.701895 0.712280 0.000000
vn -0.098017 0.995185 0.000000
vn -0.290284 -0.956940 0.000000
vn -0.290285 0.956940 0.000000
vn -0.634393 0.773010 0.000000
vn 0.098017 0.995185 0.000000
vn -0.634393 -0.773010 0.000000
vn 0.773011 0.634393 0.000000
vn 0.773010 -0.634394 0.000000
vn 0.290283 -0.956941 0.000000
vn 0.634394 0.773010 0.000000
vn 0.634392 -0.773011 0.000000
vn -0.881922 0.471396 0.000000
vn -0.391430 0.920208 0.000000
vn -0.956940 0.290285 0.000000
vn -0.981172 -0.193136 0.000000
vn 0.712206 0.701970 0.000000
vn 0.834611 -0.550840 0.000000
vn 0.956941 0.290284 0.000000
vn -0.773010 0.634394 0.000000
vn 0.290285 0.956940 0.000000
vn -0.562636 0.826705 0.000000
vn 0.098016 -0.995185 0.000000
vn -0.712205 0.701971 0.000000
vn 0.881921 0.471396 0.000000
vn -0.471397 -0.881921 0.000000
vn 0.925368 0.379069 0.000000
vn -0.471397 0.881921 0.000000
vn 0.373832 -0.927497 0.000000
vn 0.701895 0.712280 0.000000
vn -0.834612 -0.550839 0.000000
vn 0.185144 0.982711 0.000000
vn -0.712206 -0.701970 0.000000
vn 0.562636 -0.826705 0.000000
vn -0.922348 -0.386360 0.000000
vn 0.981172 0.193136 0.000000
vn -0.373832 0.927497 0.000000
vn 0.010309 0.999947 0.000000
vn 0.925368 -0.379070 0.000000
vn -0.562637 -0.826704 0.000000
vn -0.010309 0.999947 0.000000
vn -0.828246 0.560364 0.000000
vn 0.204977 -0.978767 0.000000
vn -0.548381 0.836228 0.000000
vn 0.373832 0.927496 0.000000
vn 0.980387 0.197082 0.000000
vn -0.925368 0.379070 0.000000
vn 0.980387 -0.197083 0.000000
vn 0.204978 0.978767 0.000000
vn -0.828246 -0.560364 0.000000
vn 0.548382 0.836228 0.000000
vn -0.373832 -0.927496 0.000000
vn -0.204978 -0.978767 0.000000
vn -0.834611 0.550840 0.000000
vn 0.548381 -0.836228 0.000000
vn -0.981172 0.193137 0.000000
vn 0.828246 0.560364 0.000000
vn 0.391430 -0.920208 0.000000
vn 0.000000 -1.000000 0.000000
vn -0.195074 -0.980773 0.000000
vn -0.382672 -0.923856 0.000000
vn -0.555559 -0.831446 0.000000
vn -0.707083 -0.707083 0.000000
vn -0.831446 -0.555559 0.000000
vn -0.923856 -0.382672 0.000000
vn -0.980773 -0.195074 0.000000
vn -0.980773 0.195074 0.000000
vn -0.923856 0.382672 0.000000
vn -0.831446 0.555559 0.000000
vn -0.707083 0.707083 0.000000
vn -0.555559 0.831446 0.000000
vn -0.382672 0.923856 0.000000
vn -0.195074 0.980773 0.000000
vn 0.000000 0.999969 0.000000
vn 0.195074 0.980773 0.000000
vn 0.382672 0.923856 0.000000
vn 0.555559 0.831446 0.000000
vn 0.707083 0.707083 0.000000
vn 0.831446 0.555559 0.000000
vn 0.923856 0.382672 0.000000
vn 0.980773 0.195074 0.000000
vn 0.999969 0.000000 0.000000
vn 0.980773 -0.195074 0.000000
vn 0.923856 -0.382672 0.000000
vn 0.831446 -0.555559 0.000000
vn 0.707083 -0.707083 0.000000
vn 0.555559 -0.831446 0.000000
vn 0.382672 -0.923856 0.000000
vn 0.195074 -0.980773 0.000000
vn 0.185143 -0.982711 0.000000
s off
f 97/1/1 69/2/1 71/3/1
f 97/1/1 71/3/1 95/4/1
f 125/5/1 74/6/1 115/7/1
f 125/5/1 115/7/1 77/8/1
f 123/9/2 103/10/2 102/11/2
f 123/9/2 102/11/2 122/12/2
f 137/11/1 19/12/1 18/9/1
f 137/11/1 18/9/1 138/10/1
f 90/13/3 92/14/3 154/4/3
f 90/13/3 154/4/3 23/3/3
f 67/15/4 190/16/4 168/10/4
f 67/15/4 168/10/4 11/9/4
f 171/4/5 49/3/5 2/13/5
f 171/4/5 2/13/5 129/14/5
f 49/3/2 171/4/2 172/1/2
f 49/3/2 172/1/2 50/2/2
f 69/13/6 97/14/6 181/4/6
f 69/13/6 181/4/6 31/3/6
f 173/8/7 51/7/7 26/17/7
f 173/8/7 26/17/7 176/18/7
f 83/10/8 146/9/8 19/15/8
f 83/10/8 19/15/8 137/16/8
f 92/1/1 90/2/1 89/3/1
f 92/1/1 89/3/1 93/4/1
f 74/19/9 125/20/9 167/21/9
f 74/19/9 167/21/9 10/22/9
f 104/11/1 76/12/1 99/9/1
f 104/11/1 99/9/1 91/10/1
f 60/13/10 132/14/10 110/4/10
f 60/13/10 110/4/10 34/3/10
f 17/3/2 139/4/2 137/1/2
f 17/3/2 137/1/2 19/2/2
f 68/9/2 98/10/2 190/11/2
f 68/9/2 190/11/2 67/12/2
f 61/15/11 133/16/11 186/10/11
f 61/15/11 186/10/11 39/9/11
f 50/15/12 172/16/12 131/10/12
f 50/15/12 131/10/12 4/9/12
f 144/23/1 118/24/1 116/22/1
f 144/23/1 116/22/1 142/21/1
f 98/10/13 68/9/13 26/15/13
f 98/10/13 26/15/13 176/16/13
f 82/10/14 141/9/14 3/15/14
f 82/10/14 3/15/14 130/16/14
f 80/8/5 112/7/5 5/17/5
f 80/8/5 5/17/5 185/18/5
f 122/13/15 102/14/15 159/4/15
f 122/13/15 159/4/15 46/3/15
f 185/1/1 5/2/1 6/3/1
f 185/1/1 6/3/1 184/4/1
f 156/5/1 22/6/1 16/7/1
f 156/5/1 16/7/1 150/8/1
f 135/10/16 63/9/16 12/15/16
f 135/10/16 12/15/16 169/16/16
f 187/11/1 38/12/1 39/9/1
f 187/11/1 39/9/1 186/10/1
f 164/5/17 165/8/17 189/23/17
f 164/5/17 189/23/17 111/21/17
f 105/21/18 81/22/18 22/19/18
f 105/21/18 22/19/18 156/20/18
f 79/4/19 113/3/19 29/13/19
f 79/4/19 29/13/19 179/14/19
f 125/5/20 77/8/20 157/23/20
f 125/5/20 157/23/20 167/21/20
f 134/4/21 62/3/21 38/13/21
f 134/4/21 38/13/21 187/14/21
f 44/7/2 161/8/2 57/5/2
f 44/7/2 57/5/2 43/6/2
f 162/10/22 59/9/22 36/15/22
f 162/10/22 36/15/22 189/16/22
f 92/1/23 93/4/23 179/11/23
f 92/1/23 179/11/23 178/10/23
f 149/5/24 148/8/24 107/23/24
f 149/5/24 107/23/24 106/21/24
f 118/13/25 144/14/25 184/4/25
f 118/13/25 184/4/25 6/3/25
f 176/1/26 177/4/26 190/11/26
f 176/1/26 190/11/26 98/10/26
f 165/8/27 52/7/27 36/17/27
f 165/8/27 36/17/27 189/18/27
f 107/1/28 94/4/28 56/11/28
f 107/1/28 56/11/28 55/10/28
f 157/23/29 136/21/29 100/5/29
f 157/23/29 100/5/29 145/8/29
f 91/10/30 99/9/30 15/15/30
f 91/10/30 15/15/30 149/16/30
f 156/5/31 150/8/31 164/23/31
f 156/5/31 164/23/31 105/21/31
f 77/8/32 115/7/32 21/17/32
f 77/8/32 21/17/32 157/18/32
f 10/22/2 167/21/2 157/23/2
f 10/22/2 157/23/2 21/24/2
f 72/9/2 127/10/2 92/11/2
f 72/9/2 92/11/2 90/12/2
f 185/1/33 184/4/33 144/11/33
f 185/1/33 144/11/33 143/10/33
f 57/1/1 43/2/1 45/3/1
f 57/1/1 45/3/1 160/4/1
f 129/11/1 2/12/1 4/9/1
f 129/11/1 4/9/1 131/10/1
f 56/11/34 54/10/34 125/1/34
f 56/11/34 125/1/34 126/4/34
f 189/1/35 110/4/35 132/11/35
f 189/1/35 132/11/35 162/10/35
f 120/19/36 100/20/36 136/21/36
f 120/19/36 136/21/36 20/22/36
f 97/1/37 95/4/37 156/11/37
f 97/1/37 156/11/37 155/10/37
f 191/4/38 66/3/38 12/13/38
f 191/4/38 12/13/38 169/14/38
f 25/22/2 175/21/2 176/23/2
f 25/22/2 176/23/2 26/24/2
f 24/3/2 174/4/2 149/1/2
f 24/3/2 149/1/2 15/2/2
f 133/11/39 82/10/39 130/1/39
f 133/11/39 130/1/39 128/4/39
f 7/22/2 183/21/2 185/23/2
f 7/22/2 185/23/2 5/24/2
f 144/23/40 142/21/40 57/5/40
f 144/23/40 57/5/40 161/8/40
f 11/9/2 168/10/2 169/11/2
f 11/9/2 169/11/2 12/12/2
f 187/11/41 186/10/41 133/1/41
f 187/11/41 133/1/41 134/4/41
f 137/11/42 138/10/42 85/1/42
f 137/11/42 85/1/42 140/4/42
f 129/11/43 131/10/43 172/1/43
f 129/11/43 172/1/43 171/4/43
f 104/11/44 91/10/44 149/1/44
f 104/11/44 149/1/44 174/4/44
f 169/1/45 147/4/45 192/11/45
f 169/1/45 192/11/45 135/10/45
f 37/9/2 188/10/2 187/11/2
f 37/9/2 187/11/2 38/12/2
f 132/11/46 163/10/46 182/1/46
f 132/11/46 182/1/46 166/4/46
f 179/11/47 180/10/47 78/1/47
f 179/11/47 78/1/47 79/4/47
f 158/1/1 47/2/1 46/3/1
f 158/1/1 46/3/1 159/4/1
f 100/23/1 120/24/1 121/22/1
f 100/23/1 121/22/1 101/21/1
f 190/1/48 191/4/48 169/11/48
f 190/1/48 169/11/48 168/10/48
f 132/11/1 60/12/1 58/9/1
f 132/11/1 58/9/1 163/10/1
f 182/1/49 154/4/49 92/11/49
f 182/1/49 92/11/49 127/10/49
f 158/1/50 159/4/50 102/11/50
f 158/1/50 102/11/50 103/10/50
f 126/4/51 73/3/51 42/13/51
f 126/4/51 42/13/51 56/14/51
f 100/23/52 101/21/52 158/5/52
f 100/23/52 158/5/52 170/8/52
f 109/1/1 33/2/1 31/3/1
f 109/1/1 31/3/1 181/4/1
f 114/19/53 78/20/53 183/21/53
f 114/19/53 183/21/53 7/22/53
f 70/9/2 96/10/2 97/11/2
f 70/9/2 97/11/2 69/12/2
f 163/10/54 58/9/54 8/15/54
f 163/10/54 8/15/54 182/16/54
f 86/22/2 106/21/2 107/23/2
f 86/22/2 107/23/2 87/24/2
f 56/11/1 42/12/1 40/9/1
f 56/11/1 40/9/1 54/10/1
f 76/13/55 104/14/55 160/4/55
f 76/13/55 160/4/55 45/3/55
f 109/1/56 181/4/56 97/11/56
f 109/1/56 97/11/56 96/10/56
f 102/11/57 83/10/57 137/1/57
f 102/11/57 137/1/57 139/4/57
f 172/5/58 173/8/58 176/23/58
f 172/5/58 176/23/58 175/21/58
f 87/15/59 107/16/59 55/10/59
f 87/15/59 55/10/59 41/9/59
f 182/1/1 8/2/1 23/3/1
f 182/1/1 23/3/1 154/4/1
f 78/5/60 80/8/60 185/23/60
f 78/5/60 185/23/60 183/21/60
f 106/21/61 86/22/61 15/19/61
f 106/21/61 15/19/61 149/20/61
f 192/23/62 193/21/62 109/5/62
f 192/23/62 109/5/62 108/8/62
f 57/1/63 160/4/63 104/11/63
f 57/1/63 104/11/63 124/10/63
f 93/4/64 89/3/64 29/13/64
f 93/4/64 29/13/64 179/14/64
f 85/1/65 84/4/65 187/11/65
f 85/1/65 187/11/65 188/10/65
f 9/3/2 166/4/2 182/1/2
f 9/3/2 182/1/2 8/2/2
f 35/22/2 111/21/2 189/23/2
f 35/22/2 189/23/2 36/24/2
f 143/10/14 117/9/14 5/15/14
f 143/10/14 5/15/14 185/16/14
f 133/11/1 61/12/1 141/9/1
f 133/11/1 141/9/1 82/10/1
f 59/9/2 162/10/2 132/11/2
f 59/9/2 132/11/2 60/12/2
f 28/9/2 178/10/2 179/11/2
f 28/9/2 179/11/2 29/12/2
f 73/3/2 126/4/2 125/1/2
f 73/3/2 125/1/2 74/2/2
f 96/10/66 70/9/66 33/15/66
f 96/10/66 33/15/66 109/16/66
f 140/4/67 153/3/67 19/13/67
f 140/4/67 19/13/67 137/14/67
f 90/15/68 92/16/68 178/10/68
f 90/15/68 178/10/68 28/9/68
f 48/7/2 170/8/2 158/5/2
f 48/7/2 158/5/2 47/6/2
f 120/17/69 100/18/69 170/8/69
f 120/17/69 170/8/69 48/7/69
f 127/10/70 72/9/70 8/15/70
f 127/10/70 8/15/70 182/16/70
f 153/3/2 140/4/2 85/1/2
f 153/3/2 85/1/2 152/2/2
f 87/17/71 107/18/71 148/8/71
f 87/17/71 148/8/71 14/7/71
f 84/4/72 151/3/72 38/13/72
f 84/4/72 38/13/72 187/14/72
f 119/7/2 145/8/2 100/5/2
f 119/7/2 100/5/2 120/6/2
f 114/15/73 78/16/73 180/10/73
f 114/15/73 180/10/73 30/9/73
f 41/9/2 55/10/2 56/11/2
f 41/9/2 56/11/2 42/12/2
f 193/21/74 64/22/74 33/19/74
f 193/21/74 33/19/74 109/20/74
f 95/4/75 71/3/75 22/13/75
f 95/4/75 22/13/75 156/14/75
f 142/21/76 116/22/76 43/19/76
f 142/21/76 43/19/76 57/20/76
f 172/5/1 50/6/1 51/7/1
f 172/5/1 51/7/1 173/8/1
f 63/9/2 135/10/2 192/11/2
f 63/9/2 192/11/2 65/12/2
f 60/13/77 132/14/77 166/4/77
f 60/13/77 166/4/77 9/3/77
f 189/1/1 36/2/1 34/3/1
f 189/1/1 34/3/1 110/4/1
f 145/8/78 119/7/78 21/17/78
f 145/8/78 21/17/78 157/18/78
f 78/5/1 114/6/1 112/7/1
f 78/5/1 112/7/1 80/8/1
f 67/13/79 190/14/79 177/4/79
f 67/13/79 177/4/79 27/3/79
f 74/15/80 125/16/80 54/10/80
f 74/15/80 54/10/80 40/9/80
f 102/11/1 122/12/1 146/9/1
f 102/11/1 146/9/1 83/10/1
f 75/9/2 124/10/2 104/11/2
f 75/9/2 104/11/2 76/12/2
f 65/13/81 192/14/81 147/4/81
f 65/13/81 147/4/81 13/3/81
f 32/7/2 108/8/2 109/5/2
f 32/7/2 109/5/2 33/6/2
f 169/1/1 12/2/1 13/3/1
f 169/1/1 13/3/1 147/4/1
f 103/10/82 123/9/82 47/15/82
f 103/10/82 47/15/82 158/16/82
f 113/3/2 79/4/2 78/1/2
f 113/3/2 78/1/2 114/2/2
f 190/1/1 67/2/1 66/3/1
f 190/1/1 66/3/1 191/4/1
f 128/4/83 1/3/83 61/13/83
f 128/4/83 61/13/83 133/14/83
f 164/5/1 53/6/1 52/7/1
f 164/5/1 52/7/1 165/8/1
f 124/10/84 75/9/84 43/15/84
f 124/10/84 43/15/84 57/16/84
f 50/19/85 172/20/85 175/21/85
f 50/19/85 175/21/85 25/22/85
f 85/1/1 152/2/1 151/3/1
f 85/1/1 151/3/1 84/4/1
f 179/11/1 29/12/1 30/9/1
f 179/11/1 30/9/1 180/10/1
f 53/17/86 164/18/86 150/8/86
f 53/17/86 150/8/86 16/7/86
f 1/3/2 128/4/2 130/1/2
f 1/3/2 130/1/2 3/2/2
f 149/5/1 15/6/1 14/7/1
f 149/5/1 14/7/1 148/8/1
f 152/15/87 85/16/87 138/10/87
f 152/15/87 138/10/87 18/9/87
f 117/9/2 143/10/2 144/11/2
f 117/9/2 144/11/2 118/12/2
f 122/13/88 102/14/88 139/4/88
f 122/13/88 139/4/88 17/3/88
f 101/21/89 121/22/89 47/19/89
f 101/21/89 47/19/89 158/20/89
f 53/19/90 164/20/90 111/21/90
f 53/19/90 111/21/90 35/22/90
f 62/3/2 134/4/2 133/1/2
f 62/3/2 133/1/2 61/2/2
f 76/13/91 104/14/91 174/4/91
f 76/13/91 174/4/91 24/3/91
f 157/23/1 21/24/1 20/22/1
f 157/23/1 20/22/1 136/21/1
f 176/1/1 26/2/1 27/3/1
f 176/1/1 27/3/1 177/4/1
f 192/23/1 65/24/1 64/22/1
f 192/23/1 64/22/1 193/21/1
f 65/17/92 192/18/92 108/8/92
f 65/17/92 108/8/92 32/7/92
f 118/17/93 144/18/93 161/8/93
f 118/17/93 161/8/93 44/7/93
f 152/15/94 85/16/94 188/10/94
f 152/15/94 188/10/94 37/9/94
f 81/22/2 105/21/2 164/23/2
f 81/22/2 164/23/2 53/24/2
f 94/4/95 88/3/95 42/13/95
f 94/4/95 42/13/95 56/14/95
f 107/1/1 87/2/1 88/3/1
f 107/1/1 88/3/1 94/4/1
s 1
f 259/25/96 260/26/97 197/27/97
f 259/25/96 197/27/97 195/28/96
f 260/26/97 261/29/98 199/30/98
f 260/26/97 199/30/98 197/27/97
f 261/29/98 262/31/99 201/32/99
f 261/29/98 201/32/99 199/30/98
f 262/31/99 263/33/100 203/34/100
f 262/31/99 203/34/100 201/32/99
f 263/33/100 264/35/101 205/36/101
f 263/33/100 205/36/101 203/34/100
f 264/35/101 265/37/102 207/38/102
f 264/35/101 207/38/102 205/36/101
f 265/37/102 266/35/103 209/36/103
f 265/37/102 209/36/103 207/38/102
f 266/35/103 267/33/14 211/34/14
f 266/35/103 211/34/14 209/36/103
f 267/33/14 268/31/104 213/32/104
f 267/33/14 213/32/104 211/34/14
f 268/31/104 269/29/105 215/30/105
f 268/31/104 215/30/105 213/32/104
f 269/29/105 270/26/106 217/27/106
f 269/29/105 217/27/106 215/30/105
f 270/26/106 271/25/107 219/28/107
f 270/26/106 219/28/107 217/27/106
f 271/25/107 272/39/108 221/40/108
f 271/25/107 221/40/108 219/28/107
f 272/39/108 273/41/109 223/42/109
f 272/39/108 223/42/109 221/40/108
f 273/41/109 274/43/110 225/44/110
f 273/41/109 225/44/110 223/42/109
f 274/43/110 275/45/111 227/46/111
f 274/43/110 227/46/111 225/44/110
f 275/45/111 276/47/112 229/48/112
f 275/45/111 229/48/112 227/46/111
f 276/47/112 277/49/113 231/50/113
f 276/47/112 231/50/113 229/48/112
f 277/49/113 278/51/114 233/52/114
f 277/49/113 233/52/114 231/50/113
f 278/51/114 279/53/115 235/54/115
f 278/51/114 235/54/115 233/52/114
f 279/53/115 280/55/116 237/56/116
f 279/53/115 237/56/116 235/54/115
f 280/55/116 281/57/117 239/58/117
f 280/55/116 239/58/117 237/56/116
f 281/57/117 282/55/118 241/56/118
f 281/57/117 241/56/118 239/58/117
f 282/55/118 283/53/119 243/54/119
f 282/55/118 243/54/119 241/56/118
f 283/53/119 284/51/120 245/52/120
f 283/53/119 245/52/120 243/54/119
f 284/51/120 285/49/121 247/50/121
f 284/51/120 247/50/121 245/52/120
f 285/49/121 286/47/122 249/48/122
f 285/49/121 249/48/122 247/50/121
f 286/47/122 287/45/123 251/46/123
f 286/47/122 251/46/123 249/48/122
f 287/45/123 288/43/124 253/44/124
f 287/45/123 253/44/124 251/46/123
f 288/43/124 289/41/125 255/42/125
f 288/43/124 255/42/125 253/44/124
f 290/39/126 259/25/96 195/28/96
f 290/39/126 195/28/96 257/40/126
f 289/41/125 290/39/126 257/40/126
f 289/41/125 257/40/126 255/42/125
f 194/59/96 196/60/97 260/26/97
f 194/59/96 260/26/97 259/25/96
f 196/60/97 198/61/98 261/29/98
f 196/60/97 261/29/98 260/26/97
f 198/61/98 200/62/99 262/31/99
f 198/61/98 262/31/99 261/29/98
f 200/62/99 202/63/100 263/33/100
f 200/62/99 263/33/100 262/31/99
f 202/63/100 204/64/101 264/35/101
f 202/63/100 264/35/101 263/33/100
f 204/64/101 206/65/102 265/37/102
f 204/64/101 265/37/102 264/35/101
f 206/65/102 208/64/103 266/35/103
f 206/65/102 266/35/103 265/37/102
f 208/64/103 210/63/14 267/33/14
f 208/64/103 267/33/14 266/35/103
f 210/63/14 212/62/104 268/31/104
f 210/63/14 268/31/104 267/33/14
f 212/62/104 214/61/105 269/29/105
f 212/62/104 269/29/105 268/31/104
f 214/61/105 216/60/106 270/26/106
f 214/61/105 270/26/106 269/29/105
f 216/60/106 218/59/107 271/25/107
f 216/60/106 271/25/107 270/26/106
f 218/59/107 220/66/108 272/39/108
f 218/59/107 272/39/108 271/25/107
f 220/66/108 222/67/109 273/41/109
f 220/66/108 273/41/109 272/39/108
f 222/67/109 224/68/110 274/43/110
f 222/67/109 274/43/110 273/41/109
f 224/68/110 226/69/111 275/45/111
f 224/68/110 275/45/111 274/43/110
f 226/69/111 228/70/112 276/47/112
f 226/69/111 276/47/112 275/45/111
f 228/70/112 230/71/113 277/49/113
f 228/70/112 277/49/113 276/47/112
f 230/71/113 232/72/114 278/51/114
f 230/71/113 278/51/114 277/49/113
f 232/72/114 234/73/115 279/53/115
f 232/72/114 279/53/115 278/51/114
f 234/73/115 236/74/116 280/55/116
f 234/73/115 280/55/116 279/53/115
f 236/74/116 238/75/117 281/57/117
f 236/74/116 281/57/117 280/55/116
f 238/75/117 240/74/118 282/55/118
f 238/75/117 282/55/118 281/57/117
f 240/74/118 242/73/119 283/53/119
f 240/74/118 283/53/119 282/55/118
f 242/73/119 244/72/120 284/51/120
f 242/73/119 284/51/120 283/53/119
f 244/72/120 246/71/121 285/49/121
f 244/72/120 285/49/121 284/51/120
f 246/71/121 248/70/122 286/47/122
f 246/71/121 286/47/122 285/49/121
f 248/70/122 250/69/123 287/45/123
f 248/70/122 287/45/123 286/47/122
f 250/69/123 252/68/124 288/43/124
f 250/69/123 288/43/124 287/45/123
f 252/68/124 254/67/125 289/41/125
f 252/68/124 289/41/125 288/43/124
f 256/66/126 194/59/96 259/25/96
f 256/66/126 259/25/96 290/39/126
f 254/67/125 256/66/126 290/39/126
f 254/67/125 290/39/126 289/41/125
s off
f 156/11/2 22/12/2 258/9/2
f 156/11/2 258/9/2 155/10/2
f 97/16/127 155/10/127 258/9/127
f 97/16/127 258/9/127 69/15/127

Binary file not shown.

File diff suppressed because it is too large Load diff

Binary file not shown.

File diff suppressed because it is too large Load diff

Binary file not shown.

View file

@ -1,197 +0,0 @@
# Blender v2.63 (sub 17) OBJ File: 'towerwall.blend'
# www.blender.org
v 0.000000 5.000000 -5.000000
v 0.000000 5.000000 5.000000
v 0.975452 4.903926 -5.000000
v 0.975452 4.903926 5.000000
v 1.913417 4.619398 -5.000000
v 1.913417 4.619398 5.000000
v 2.777851 4.157348 -5.000000
v 2.777851 4.157348 5.000000
v 3.535534 3.535534 -5.000000
v 3.535534 3.535534 5.000000
v 4.157348 2.777851 -5.000000
v 4.157348 2.777851 5.000000
v 4.619398 1.913417 -5.000000
v 4.619398 1.913417 5.000000
v 4.903926 0.975452 -5.000000
v 4.903926 0.975452 5.000000
v 5.000000 0.000000 -5.000000
v 5.000000 0.000000 5.000000
v 4.903926 -0.975451 -5.000000
v 4.903926 -0.975451 5.000000
v 4.619398 -1.913416 -5.000000
v 4.619398 -1.913416 5.000000
v 4.157348 -2.777851 -5.000000
v 4.157348 -2.777851 5.000000
v 3.535534 -3.535534 -5.000000
v 3.535534 -3.535534 5.000000
v 2.777851 -4.157348 -5.000000
v 2.777851 -4.157348 5.000000
v 1.913416 -4.619398 -5.000000
v 1.913416 -4.619398 5.000000
v 0.975450 -4.903926 -5.000000
v 0.975450 -4.903926 5.000000
v -0.000002 -5.000000 -5.000000
v -0.000002 -5.000000 5.000000
v -0.975454 -4.903926 -5.000000
v -0.975454 -4.903926 5.000000
v -1.913419 -4.619397 -5.000000
v -1.913419 -4.619397 5.000000
v -2.777853 -4.157347 -5.000000
v -2.777853 -4.157347 5.000000
v -3.535536 -3.535532 -5.000000
v -3.535536 -3.535532 5.000000
v -4.157350 -2.777848 -5.000000
v -4.157350 -2.777848 5.000000
v -4.619399 -1.913413 -5.000000
v -4.619399 -1.913413 5.000000
v -4.903927 -0.975447 -5.000000
v -4.903927 -0.975447 5.000000
v -5.000000 0.000005 -5.000000
v -5.000000 0.000005 5.000000
v -4.903925 0.975457 -5.000000
v -4.903925 0.975457 5.000000
v -4.619395 1.913422 -5.000000
v -4.619395 1.913422 5.000000
v -4.157345 2.777856 -5.000000
v -4.157345 2.777856 5.000000
v -3.535529 3.535539 -5.000000
v -3.535529 3.535539 5.000000
v -2.777846 4.157352 -5.000000
v -2.777846 4.157352 5.000000
v -1.913410 4.619401 -5.000000
v -1.913410 4.619401 5.000000
v -0.975444 4.903928 -5.000000
v -0.975444 4.903928 5.000000
vt 0.621094 0.029297
vt 0.621094 0.962891
vt 0.559570 0.962891
vt 0.559570 0.029297
vt 0.499023 0.962891
vt 0.499023 0.029297
vt 0.437500 0.962891
vt 0.437500 0.029297
vt 0.376953 0.962891
vt 0.376953 0.029297
vt 0.315430 0.962891
vt 0.315430 0.029297
vt 0.254883 0.962891
vt 0.253906 0.029297
vt 0.193359 0.962891
vt 0.193359 0.029297
vt 0.132812 0.962891
vt 0.132812 0.029297
vt 0.071289 0.962891
vt 0.071289 0.029297
vt 0.010742 0.962891
vt 0.009766 0.029297
vt 0.987305 0.029297
vt 0.987305 0.962891
vt 0.925781 0.962891
vt 0.925781 0.029297
vt 0.865234 0.962891
vt 0.865234 0.029297
vt 0.803711 0.962891
vt 0.803711 0.029297
vt 0.743164 0.962891
vt 0.743164 0.029297
vt 0.681641 0.962891
vt 0.681641 0.029297
vn 0.000000 1.000000 0.000000
vn 0.195074 0.980773 0.000000
vn 0.382672 0.923856 0.000000
vn 0.555559 0.831446 0.000000
vn 0.707083 0.707083 0.000000
vn 0.831446 0.555559 0.000000
vn 0.923856 0.382672 0.000000
vn 0.980773 0.195074 0.000000
vn 1.000000 0.000000 0.000000
vn 0.980773 -0.195074 0.000000
vn 0.923856 -0.382672 0.000000
vn 0.831446 -0.555559 0.000000
vn 0.707083 -0.707083 0.000000
vn 0.555559 -0.831446 0.000000
vn 0.382672 -0.923856 0.000000
vn 0.195074 -0.980773 0.000000
vn 0.000000 -1.000000 0.000000
vn -0.195074 -0.980773 0.000000
vn -0.382672 -0.923856 0.000000
vn -0.555559 -0.831446 0.000000
vn -0.707083 -0.707083 0.000000
vn -0.831446 -0.555559 0.000000
vn -0.923856 -0.382672 0.000000
vn -0.980773 -0.195074 0.000000
vn -0.999969 0.000000 0.000000
vn -0.980773 0.195074 0.000000
vn -0.923856 0.382672 0.000000
vn -0.831446 0.555559 0.000000
vn -0.707083 0.707083 0.000000
vn -0.555559 0.831446 0.000000
vn -0.382672 0.923856 0.000000
vn -0.195074 0.980773 0.000000
s 1
f 1/1/1 2/2/1 4/3/2
f 1/1/1 4/3/2 3/4/2
f 3/4/2 4/3/2 6/5/3
f 3/4/2 6/5/3 5/6/3
f 5/6/3 6/5/3 8/7/4
f 5/6/3 8/7/4 7/8/4
f 7/8/4 8/7/4 10/9/5
f 7/8/4 10/9/5 9/10/5
f 9/10/5 10/9/5 12/11/6
f 9/10/5 12/11/6 11/12/6
f 11/12/6 12/11/6 14/13/7
f 11/12/6 14/13/7 13/14/7
f 13/14/7 14/13/7 16/15/8
f 13/14/7 16/15/8 15/16/8
f 15/16/8 16/15/8 18/17/9
f 15/16/8 18/17/9 17/18/9
f 17/18/9 18/17/9 20/19/10
f 17/18/9 20/19/10 19/20/10
f 19/20/10 20/19/10 22/21/11
f 19/20/10 22/21/11 21/22/11
f 21/23/11 22/24/11 24/25/12
f 21/23/11 24/25/12 23/26/12
f 23/26/12 24/25/12 26/27/13
f 23/26/12 26/27/13 25/28/13
f 25/28/13 26/27/13 28/29/14
f 25/28/13 28/29/14 27/30/14
f 27/30/14 28/29/14 30/31/15
f 27/30/14 30/31/15 29/32/15
f 29/32/15 30/31/15 32/33/16
f 29/32/15 32/33/16 31/34/16
f 31/34/16 32/33/16 34/2/17
f 31/34/16 34/2/17 33/1/17
f 33/1/17 34/2/17 36/3/18
f 33/1/17 36/3/18 35/4/18
f 35/4/18 36/3/18 38/5/19
f 35/4/18 38/5/19 37/6/19
f 37/6/19 38/5/19 40/7/20
f 37/6/19 40/7/20 39/8/20
f 39/8/20 40/7/20 42/9/21
f 39/8/20 42/9/21 41/10/21
f 41/10/21 42/9/21 44/11/22
f 41/10/21 44/11/22 43/12/22
f 43/12/22 44/11/22 46/13/23
f 43/12/22 46/13/23 45/14/23
f 45/14/23 46/13/23 48/15/24
f 45/14/23 48/15/24 47/16/24
f 47/16/24 48/15/24 50/17/25
f 47/16/24 50/17/25 49/18/25
f 49/18/25 50/17/25 52/19/26
f 49/18/25 52/19/26 51/20/26
f 51/20/26 52/19/26 54/21/27
f 51/20/26 54/21/27 53/22/27
f 53/23/27 54/24/27 56/25/28
f 53/23/27 56/25/28 55/26/28
f 55/26/28 56/25/28 58/27/29
f 55/26/28 58/27/29 57/28/29
f 57/28/29 58/27/29 60/29/30
f 57/28/29 60/29/30 59/30/30
f 59/30/30 60/29/30 62/31/31
f 59/30/30 62/31/31 61/32/31
f 2/2/1 1/1/1 63/34/32
f 2/2/1 63/34/32 64/33/32
f 61/32/31 62/31/31 64/33/32
f 61/32/31 64/33/32 63/34/32

View file

@ -6,8 +6,7 @@
#ifdef VERT_STAGE
ATTRIBUTE(0) vec3 position;
// ATTRIBUTE(1) vec3 normalIn;
ATTRIBUTE(2) vec2 texCoordRawIn;
ATTRIBUTE(1) vec2 texCoordRawIn;
#endif
#ifdef FRAG_STAGE

View file

@ -6,7 +6,7 @@
#ifdef VERT_STAGE
ATTRIBUTE(0) vec3 position;
ATTRIBUTE(2) vec2 texCoordRawIn;
ATTRIBUTE(1) vec2 texCoordRawIn;
#endif
#ifdef FRAG_STAGE

View file

@ -8,7 +8,7 @@
#ifdef VERT_STAGE
ATTRIBUTE(0) vec3 position;
ATTRIBUTE(2) vec2 texCoordRawIn;
ATTRIBUTE(1) vec2 texCoordRawIn;
#endif
#ifdef FRAG_STAGE

View file

@ -9,24 +9,23 @@
* Per-vertex attributes
*/
ATTRIBUTE(0) vec2 vertPos;
// 1 - vec3 normal (not used)
ATTRIBUTE(2) vec2 vertTexCoord;
ATTRIBUTE(1) vec2 vertTexCoord;
/*
* Per-instance attributes
*/
ATTRIBUTE(3) mat4 spriteVMTransform;
ATTRIBUTE(2) mat4 spriteVMTransform;
// 3
// 4
// 5
// 6
ATTRIBUTE(7) mat4 spriteTexTransform;
ATTRIBUTE(6) mat4 spriteTexTransform;
// 7
// 8
// 9
// 10
ATTRIBUTE(11) vec4 spriteRGBA;
ATTRIBUTE(12) vec4 spriteTexRegion;
ATTRIBUTE(13) vec2 spriteDimensions;
ATTRIBUTE(14) vec4 spriteCustomParams;
ATTRIBUTE(10) vec4 spriteRGBA;
ATTRIBUTE(11) vec4 spriteTexRegion;
ATTRIBUTE(12) vec2 spriteDimensions;
ATTRIBUTE(13) vec4 spriteCustomParams;
#endif
#ifdef FRAG_STAGE

View file

@ -6,8 +6,8 @@
#ifdef VERT_STAGE
ATTRIBUTE(0) vec3 position;
ATTRIBUTE(1) vec3 normalIn;
ATTRIBUTE(2) vec2 texCoordRawIn;
ATTRIBUTE(1) vec2 texCoordRawIn;
ATTRIBUTE(2) vec3 normalIn;
#endif
#ifdef FRAG_STAGE

View file

@ -74,8 +74,7 @@ void lasers_preload(void) {
VertexAttribFormat fmt[] = {
// Per-vertex attributes (for the static models buffer, bound at 0)
{ { 3, VA_FLOAT, VA_CONVERT_FLOAT, 0 }, sz_vert, VERTEX_OFS(position), 0 },
{ { 3, VA_FLOAT, VA_CONVERT_FLOAT, 0 }, sz_vert, VERTEX_OFS(normal), 0 },
{ { 2, VA_FLOAT, VA_CONVERT_FLOAT, 0 }, sz_vert, VERTEX_OFS(position), 0 },
{ { 2, VA_FLOAT, VA_CONVERT_FLOAT, 0 }, sz_vert, VERTEX_OFS(uv), 0 },
// Per-instance attributes (for our own buffer, bound at 1)
@ -118,7 +117,7 @@ void lasers_preload(void) {
ent_hook_pre_draw(lasers_ent_predraw_hook, NULL);
ent_hook_post_draw(lasers_ent_postdraw_hook, NULL);
lasers.quad_generic.indexed = false;
lasers.quad_generic.num_indices = 0;
lasers.quad_generic.num_vertices = 4;
lasers.quad_generic.offset = 0;
lasers.quad_generic.primitive = PRIM_TRIANGLE_STRIP;

View file

@ -197,12 +197,9 @@ typedef struct VertexAttribFormat {
typedef struct GenericModelVertex {
float position[3];
float uv[2];
float normal[3];
struct {
float s;
float t;
} uv;
float tangent[4]; // NOTE: bitangent = cross(normal, tangent) * tangent[3]
} GenericModelVertex;
typedef enum UniformType {
@ -711,7 +708,7 @@ void r_vertex_array_attach_index_buffer(VertexArray *varr, IndexBuffer *ibuf) at
IndexBuffer* r_vertex_array_get_index_attachment(VertexArray *varr) attr_nonnull(1);
void r_vertex_array_layout(VertexArray *varr, uint nattribs, VertexAttribFormat attribs[nattribs]) attr_nonnull(1, 3);
void r_model_add_static(Model *out_mdl, Primitive prim, size_t num_vertices, GenericModelVertex vertices[num_vertices], uint indices[num_vertices]);
void r_model_add_static(Model *out_mdl, Primitive prim, size_t num_vertices, GenericModelVertex vertices[num_vertices], size_t num_indices, uint indices[num_indices]);
void r_vsync(VsyncMode mode);
VsyncMode r_vsync_current(void);

View file

@ -20,19 +20,20 @@ static struct {
} _r_models;
void _r_models_init(void) {
VertexAttribFormat fmt[3];
VertexAttribFormat fmt[4];
r_vertex_attrib_format_interleaved(3, (VertexAttribSpec[]) {
r_vertex_attrib_format_interleaved(4, (VertexAttribSpec[]) {
{ 3, VA_FLOAT, VA_CONVERT_FLOAT }, // position
{ 3, VA_FLOAT, VA_CONVERT_FLOAT }, // normal
{ 2, VA_FLOAT, VA_CONVERT_FLOAT }, // texcoord
{ 3, VA_FLOAT, VA_CONVERT_FLOAT }, // normal
{ 4, VA_FLOAT, VA_CONVERT_FLOAT }, // tangent
}, fmt, 0);
GenericModelVertex quad[4] = {
{ { 0.5, -0.5, 0.0 }, { 0, 0, 1 }, { 1, 1 } },
{ { -0.5, -0.5, 0.0 }, { 0, 0, 1 }, { 0, 1 } },
{ { 0.5, 0.5, 0.0 }, { 0, 0, 1 }, { 1, 0 } },
{ { -0.5, 0.5, 0.0 }, { 0, 0, 1 }, { 0, 0 } },
{ { 0.5, -0.5, 0.0 }, { 1, 1 }, { 0, 0, 1 }, { 0, 0, 0, 0 } },
{ { 0.5, 0.5, 0.0 }, { 1, 0 }, { 0, 0, 1 }, { 0, 0, 0, 0 } },
{ { -0.5, -0.5, 0.0 }, { 0, 1 }, { 0, 0, 1 }, { 0, 0, 0, 0 } },
{ { -0.5, 0.5, 0.0 }, { 0, 0 }, { 0, 0, 1 }, { 0, 0, 0, 0 } },
};
const size_t max_vertices = 8192;
@ -49,7 +50,7 @@ void _r_models_init(void) {
r_vertex_array_attach_vertex_buffer(_r_models.varr, _r_models.vbuf, 0);
r_vertex_array_attach_index_buffer(_r_models.varr, _r_models.ibuf);
r_model_add_static(&_r_models.quad, PRIM_TRIANGLE_STRIP, 4, quad, NULL);
r_model_add_static(&_r_models.quad, PRIM_TRIANGLE_STRIP, 4, quad, 0, NULL);
}
void _r_models_shutdown(void) {
@ -57,21 +58,28 @@ void _r_models_shutdown(void) {
r_vertex_buffer_destroy(_r_models.vbuf);
}
void r_model_add_static(Model *out_mdl, Primitive prim, size_t num_vertices, GenericModelVertex vertices[num_vertices], uint indices[num_vertices]) {
void r_model_add_static(
Model *out_mdl,
Primitive prim,
size_t num_vertices,
GenericModelVertex vertices[num_vertices],
size_t num_indices,
uint indices[num_indices]
) {
out_mdl->vertex_array = _r_models.varr;
out_mdl->num_vertices = num_vertices;
out_mdl->num_indices = num_indices;
out_mdl->primitive = prim;
SDL_RWops *vert_stream = r_vertex_buffer_get_stream(_r_models.vbuf);
size_t vert_ofs = SDL_RWtell(vert_stream) / sizeof(GenericModelVertex);
if(indices != NULL) {
if(num_indices > 0) {
assume(indices != NULL);
out_mdl->offset = r_index_buffer_get_offset(_r_models.ibuf);
r_index_buffer_add_indices(_r_models.ibuf, vert_ofs, num_vertices, indices);
out_mdl->indexed = true;
r_index_buffer_add_indices(_r_models.ibuf, vert_ofs, num_indices, indices);
} else {
out_mdl->offset = vert_ofs;
out_mdl->indexed = false;
}
SDL_RWwrite(vert_stream, vertices, sizeof(GenericModelVertex), num_vertices);
@ -94,11 +102,21 @@ void r_draw_quad_instanced(uint instances) {
}
void r_draw_model_ptr(Model *model, uint instances, uint base_instance) {
(model->indexed ? r_draw_indexed : r_draw)(
model->vertex_array,
model->primitive,
model->offset, model->num_vertices,
instances,
base_instance
);
if(model->num_indices) {
r_draw_indexed(
model->vertex_array,
model->primitive,
model->offset, model->num_indices,
instances,
base_instance
);
} else {
r_draw(
model->vertex_array,
model->primitive,
model->offset, model->num_vertices,
instances,
base_instance
);
}
}

View file

@ -67,8 +67,7 @@ void _r_sprite_batch_init(void) {
VertexAttribFormat fmt[] = {
// Per-vertex attributes (for the static models buffer, bound at 0)
{ { 3, VA_FLOAT, VA_CONVERT_FLOAT, 0 }, sz_vert, VERTEX_OFS(position), 0 },
{ { 3, VA_FLOAT, VA_CONVERT_FLOAT, 0 }, sz_vert, VERTEX_OFS(normal), 0 },
{ { 2, VA_FLOAT, VA_CONVERT_FLOAT, 0 }, sz_vert, VERTEX_OFS(position), 0 },
{ { 2, VA_FLOAT, VA_CONVERT_FLOAT, 0 }, sz_vert, VERTEX_OFS(uv), 0 },
// Per-instance attributes (for our own sprites buffer, bound at 1)
@ -107,7 +106,7 @@ void _r_sprite_batch_init(void) {
r_vertex_array_attach_vertex_buffer(_r_sprite_batch.varr, r_vertex_buffer_static_models(), 0);
r_vertex_array_attach_vertex_buffer(_r_sprite_batch.varr, _r_sprite_batch.vbuf, 1);
_r_sprite_batch.quad.indexed = false;
_r_sprite_batch.quad.num_indices = 0;
_r_sprite_batch.quad.num_vertices = 4;
_r_sprite_batch.quad.offset = 0;
_r_sprite_batch.quad.primitive = PRIM_TRIANGLE_STRIP;

View file

@ -290,6 +290,7 @@ static void gl33_init_context(SDL_Window *window) {
}
#endif
glFrontFace(GL_CW);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glPixelStorei(GL_PACK_ALIGNMENT, 1);
GLVT.get_viewport(&R.viewport.default_framebuffer);

140
src/resource/iqm.h Normal file
View file

@ -0,0 +1,140 @@
/*
* This software is licensed under the terms of the MIT License.
* See COPYING for further information.
* ---
* Copyright (c) 2011-2019, Lukas Weber <laochailan@web.de>.
* Copyright (c) 2012-2019, Andrei Alexeyev <akari@taisei-project.org>.
*/
#ifndef IGUARD_resource_iqm_h
#define IGUARD_resource_iqm_h
#include "taisei.h"
/*
* Adapted from https://github.com/lsalzman/iqm/blob/master/iqm.h
*/
#define IQM_MAGIC "INTERQUAKEMODEL"
#define IQM_VERSION 2
typedef enum IQMVertexArrayType {
IQM_POSITION = 0,
IQM_TEXCOORD = 1,
IQM_NORMAL = 2,
IQM_TANGENT = 3,
IQM_BLENDINDEXES = 4,
IQM_BLENDWEIGHTS = 5,
IQM_COLOR = 6,
IQM_CUSTOM = 0x10
} IQMVertexArrayType;
typedef enum IQMVertexFormat {
IQM_BYTE = 0,
IQM_UBYTE = 1,
IQM_SHORT = 2,
IQM_USHORT = 3,
IQM_INT = 4,
IQM_UINT = 5,
IQM_HALF = 6,
IQM_FLOAT = 7,
IQM_DOUBLE = 8,
} IQMVertexFormat;
typedef enum IQMAnimFlags {
IQM_LOOP = 1 << 0
} IQMAnimFlags;
#define IQM_FIELDS(...) \
union { \
struct __VA_ARGS__; \
uint32_t u32_array[sizeof(struct __VA_ARGS__) / sizeof(uint32_t)]; \
}
typedef struct IQMHeader {
uint8_t magic[sizeof(IQM_MAGIC)];
IQM_FIELDS({
uint32_t version;
uint32_t filesize;
uint32_t flags;
uint32_t num_text, ofs_text;
uint32_t num_meshes, ofs_meshes;
uint32_t num_vertexarrays, num_vertexes, ofs_vertexarrays;
uint32_t num_triangles, ofs_triangles, ofs_adjacency;
uint32_t num_joints, ofs_joints;
uint32_t num_poses, ofs_poses;
uint32_t num_anims, ofs_anims;
uint32_t num_frames, num_framechannels, ofs_frames, ofs_bounds;
uint32_t num_comment, ofs_comment;
uint32_t num_extensions, ofs_extensions;
});
} IQMHeader;
typedef struct IQMMesh {
IQM_FIELDS({
uint32_t name;
uint32_t material;
uint32_t first_vertex, num_vertexes;
uint32_t first_triangle, num_triangles;
});
} IQMMesh;
typedef struct IQMTriangle {
IQM_FIELDS({
uint32_t vertex[3];
});
} IQMTriangle;
typedef struct IQMAdjacency {
IQM_FIELDS({
uint32_t triangle[3];
});
} IQMAdjacency;
typedef struct IQMJoint {
IQM_FIELDS({
uint32_t name;
int32_t parent;
float translate[3], rotate[4], scale[3];
});
} IQMJoint;
typedef struct IQMPose {
IQM_FIELDS({
int32_t parent;
uint32_t mask;
float channeloffset[10];
float channelscale[10];
});
} IQMPose;
typedef struct IQMAnim {
IQM_FIELDS({
uint32_t name;
uint32_t first_frame, num_frames;
float framerate;
uint32_t flags; /// IQMAnimFlags
});
} IQMAnim;
typedef struct IQMVertexArray {
IQM_FIELDS({
uint32_t type; /// IQMVertexArrayType
uint32_t flags;
uint32_t format; /// IQMVertexFormat
uint32_t size;
uint32_t offset;
});
} IQMVertexArray;
typedef struct IQMBounds {
IQM_FIELDS({
float bbmin[3], bbmax[3];
float xyradius, radius;
});
} IQMBounds;
#undef IQM_FIELDS
#endif // IGUARD_resource_iqm_h

View file

@ -12,9 +12,472 @@
#include "list.h"
#include "resource.h"
#include "renderer/api.h"
#include "iqm.h"
// TODO: Rewrite all of this mess, maybe even consider a different format
// IQM for instance: http://sauerbraten.org/iqm/
#define MDL_PATH_PREFIX "res/models/"
#define MDL_EXTENSION ".iqm"
// arbitrary allocation limits (raise as needed)
#define MAX_MESHES (1 << 8)
#define MAX_VERTICES (1 << 24)
#define MAX_TRIANGLES (1 << 22)
#define MAX_VERTEX_ARRAYS (1 << 8)
typedef struct ModelLoadData {
GenericModelVertex *vertices;
uint32_t *indices;
uint ofs_vertices, num_vertices;
uint ofs_indices, num_indices;
} ModelLoadData;
#define NUM_REQUIRED_VERTEX_ARRAYS 4
typedef union VertexArrayIndices {
struct { int position, texcoord, normal, tangent; };
int indices[NUM_REQUIRED_VERTEX_ARRAYS];
} VertexArrayIndices;
static const char *iqm_va_type_str(uint32_t type) {
switch(type) {
case IQM_POSITION: return "position";
case IQM_NORMAL: return "normal";
case IQM_TANGENT: return "tangent";
case IQM_TEXCOORD: return "texcoord";
case IQM_BLENDINDEXES: return "blend indices";
case IQM_BLENDWEIGHTS: return "blend weights";
case IQM_COLOR: return "color";
default: return "unknown";
}
}
static const char *iqm_va_format_str(uint32_t type) {
switch(type) {
case IQM_BYTE: return "int8_t";
case IQM_UBYTE: return "uint8_t";
case IQM_SHORT: return "int16_t";
case IQM_USHORT: return "uint16_t";
case IQM_INT: return "int32_t";
case IQM_UINT: return "uint32_t";
case IQM_HALF: return "half";
case IQM_FLOAT: return "float";
case IQM_DOUBLE: return "double";
default: return "unknown";
}
}
static bool read_fields(SDL_RWops *rw, size_t n, uint32_t fields[n]) {
if(SDL_RWread(rw, fields, sizeof(fields[0]), n) != n) {
return false;
}
for(size_t i = 0; i < n; ++i) {
fields[i] = SDL_SwapLE32(fields[i]);
}
return true;
}
static bool read_floats(SDL_RWops *rw, size_t n, float floats[n]) {
uint32_t fields[n];
if(read_fields(rw, n, fields)) {
memcpy(floats, fields, sizeof(fields[0]) * n);
return true;
}
return false;
}
static bool iqm_read_header(const char *fpath, SDL_RWops *rw, IQMHeader *hdr) {
if(SDL_RWread(rw, &hdr->magic, sizeof(hdr->magic), 1) != 1) {
log_error("%s: read error: %s", fpath, SDL_GetError());
return false;
}
if(memcmp(hdr->magic, IQM_MAGIC, sizeof(IQM_MAGIC))) {
log_error("%s: not an IQM file (bad magic number)", fpath);
return false;
}
if(!read_fields(rw, ARRAY_SIZE(hdr->u32_array), hdr->u32_array)) {
log_error("%s: read error: %s", fpath, SDL_GetError());
return false;
}
if(hdr->version != IQM_VERSION) {
log_error("%s: unsupported IQM version (got %u, expected %u)", fpath, hdr->version, IQM_VERSION);
return false;
}
if(hdr->num_meshes < 1) {
log_error("%s: no meshes in model", fpath);
return false;
}
if(hdr->num_meshes > MAX_MESHES) {
log_error("%s too many meshes in model (%u allowed; have %u)", fpath, MAX_MESHES, hdr->num_meshes);
return false;
}
if(hdr->num_vertexes < 1) {
log_error("%s: no vertices in model", fpath);
return false;
}
if(hdr->num_vertexes > MAX_VERTICES) {
log_error("%s too many vertices in model (%u allowed; have %u)", fpath, MAX_VERTICES, hdr->num_vertexes);
return false;
}
if(hdr->num_triangles < 1) {
log_error("%s: no triangles in model", fpath);
return false;
}
if(hdr->num_triangles > MAX_TRIANGLES) {
log_error("%s too many triangles in model (%u allowed; have %u)", fpath, MAX_TRIANGLES, hdr->num_triangles);
return false;
}
if(hdr->num_vertexarrays < NUM_REQUIRED_VERTEX_ARRAYS) {
log_error("%s: not enough vertex arrays (%u expected; got %u)", fpath, NUM_REQUIRED_VERTEX_ARRAYS, hdr->num_vertexarrays);
return false;
}
if(hdr->num_vertexarrays > MAX_VERTEX_ARRAYS) {
log_error("%s too many vertex arrays in model (%u allowed; have %u)", fpath, MAX_VERTEX_ARRAYS, hdr->num_vertexarrays);
return false;
}
if(hdr->num_meshes > 1) {
log_warn("%s %u meshes in model; only the first one will be used", fpath, hdr->num_meshes);
}
log_debug("%s: IQM version %u; %u meshes; %u tris; %u vertices",
fpath,
hdr->version,
hdr->num_meshes,
hdr->num_triangles,
hdr->num_vertexes
);
return true;
}
static bool iqm_read_meshes(const char *fpath, SDL_RWops *rw, uint num_meshes, IQMMesh meshes[num_meshes]) {
for(uint i = 0; i < num_meshes; ++i) {
if(!read_fields(rw, ARRAY_SIZE(meshes[i].u32_array), meshes[i].u32_array)) {
log_error("%s: read error: %s", fpath, SDL_GetError());
return false;
}
log_debug("Mesh #0: %u tris; %u vertices", meshes[i].num_triangles, meshes[i].num_vertexes);
}
return true;
}
static bool iqm_read_vertex_arrays(const char *fpath, SDL_RWops *rw, uint num_varrs, IQMVertexArray varrs[num_varrs], VertexArrayIndices *indices) {
for(uint i = 0; i < num_varrs; ++i) {
IQMVertexArray *va = varrs + i;
if(!read_fields(rw, ARRAY_SIZE(va->u32_array), va->u32_array)) {
log_error("%s: read error: %s", fpath, SDL_GetError());
return false;
}
log_debug("Vertex array #%u: %s[%u] %s",
i,
iqm_va_format_str(va->format),
va->size,
iqm_va_type_str(va->type)
);
int *idx_p;
uint32_t expected_size;
switch(va->type) {
case IQM_POSITION:
idx_p = &indices->position;
expected_size = 3;
break;
case IQM_TEXCOORD:
idx_p = &indices->texcoord;
expected_size = 2;
break;
case IQM_NORMAL:
idx_p = &indices->normal;
expected_size = 3;
break;
case IQM_TANGENT:
idx_p = &indices->tangent;
expected_size = 4;
break;
default:
log_warn("%s: vertex array #%i ignored: unhandled type (%s)", fpath, i, iqm_va_type_str(va->type));
continue;
}
if(*idx_p > 0) {
log_warn("%s: vertex array #%i ignored: already using array #%i for %s data", fpath, i, *idx_p, iqm_va_type_str(va->type));
continue;
}
if(va->size != expected_size) {
log_warn("%s: vertex array #%i ignored: data size mismatch (expected %u; got %u)", fpath, i, expected_size, va->size);
continue;
}
if(va->format != IQM_FLOAT) {
log_warn("%s: vertex array #%i ignored: %s data type not supported", fpath, i, iqm_va_format_str(va->format));
continue;
}
*idx_p = i;
log_debug("Using vertex array #%u for %s data",
i,
iqm_va_type_str(va->type)
);
}
bool ok = true;
if(indices->position < 0) {
log_error("%s: no position data", fpath);
ok = false;
}
if(indices->texcoord < 0) {
log_error("%s: no texcoord data", fpath);
ok = false;
}
if(indices->normal < 0) {
log_error("%s: no normal data", fpath);
ok = false;
}
if(indices->tangent < 0) {
log_error("%s: no tangent data", fpath);
ok = false;
}
return ok;
}
static bool iqm_read_vert_positions(const char *fpath, SDL_RWops *rw, uint num_verts, GenericModelVertex vertices[num_verts]) {
for(uint i = 0; i < num_verts; ++i) {
if(!read_floats(rw, ARRAY_SIZE(vertices[i].position), vertices[i].position)) {
log_error("%s: read error: %s", fpath, SDL_GetError());
return false;
}
}
return true;
}
static bool iqm_read_vert_texcoords(const char *fpath, SDL_RWops *rw, uint num_verts, GenericModelVertex vertices[num_verts]) {
for(uint i = 0; i < num_verts; ++i) {
if(!read_floats(rw, ARRAY_SIZE(vertices[i].uv), vertices[i].uv)) {
log_error("%s: read error: %s", fpath, SDL_GetError());
return false;
}
vertices[i].uv[1] = 1.0 - vertices[i].uv[1];
}
return true;
}
static bool iqm_read_vert_normals(const char *fpath, SDL_RWops *rw, uint num_verts, GenericModelVertex vertices[num_verts]) {
for(uint i = 0; i < num_verts; ++i) {
if(!read_floats(rw, ARRAY_SIZE(vertices[i].normal), vertices[i].normal)) {
log_error("%s: read error: %s", fpath, SDL_GetError());
return false;
}
}
return true;
}
static bool iqm_read_vert_tangents(const char *fpath, SDL_RWops *rw, uint num_verts, GenericModelVertex vertices[num_verts]) {
for(uint i = 0; i < num_verts; ++i) {
if(!read_floats(rw, ARRAY_SIZE(vertices[i].tangent), vertices[i].tangent)) {
log_error("%s: read error: %s", fpath, SDL_GetError());
return false;
}
}
return true;
}
static bool iqm_read_triangles(const char *fpath, SDL_RWops *rw, uint num_tris, IQMTriangle triangles[num_tris]) {
if(!read_fields(rw, ARRAY_SIZE(triangles->u32_array) * num_tris, triangles->u32_array)) {
log_error("%s: read error: %s", fpath, SDL_GetError());
return false;
}
return true;
}
static bool range_is_valid(uint32_t total, uint32_t first, uint32_t num) {
if(((uint64_t)first + (uint64_t)num) != (first + num)) {
return false;
}
if(first + num > total) {
return false;
}
return true;
}
static void *load_model_begin(const char *path, uint flags) {
SDL_RWops *rw = vfs_open(path, VFS_MODE_READ | VFS_MODE_SEEKABLE);
if(!rw) {
log_error("VFS error: %s", vfs_get_error());
return NULL;
}
ModelLoadData *ldata = NULL;
IQMMesh *meshes = NULL;
IQMVertexArray *vert_arrays = NULL;
GenericModelVertex *vertices = NULL;
union { uint32_t indices[3]; IQMTriangle tri; } *indices = NULL;
#define TRY_SEEK(ofs) \
do { \
if(SDL_RWseek(rw, ofs, RW_SEEK_SET) < 0) { \
log_error("%s: %s", path, SDL_GetError()); \
goto fail; \
} \
assert(SDL_RWtell(rw) == ofs); \
} while(0)
#define TRY(...) \
do { \
if(!(__VA_ARGS__)) { \
goto fail; \
} \
} while(0)
IQMHeader hdr;
TRY(iqm_read_header(path, rw, &hdr));
assume(hdr.num_meshes > 0);
meshes = calloc(hdr.num_meshes, sizeof(*meshes));
TRY_SEEK(hdr.ofs_meshes);
TRY(iqm_read_meshes(path, rw, hdr.num_meshes, meshes));
for(uint i = 0; i < hdr.num_meshes; ++i) {
IQMMesh *mesh = meshes + i;
if(!range_is_valid(hdr.num_vertexes, mesh->first_vertex, mesh->num_vertexes)) {
log_error("%s: mesh %i: vertices out of range", path, i);
goto fail;
}
if(!range_is_valid(hdr.num_triangles, mesh->first_triangle, mesh->num_triangles)) {
log_error("%s: mesh %i: triangles out of range", path, i);
goto fail;
}
}
assume(hdr.num_vertexarrays > 0);
vert_arrays = calloc(hdr.num_vertexarrays, sizeof(*vert_arrays));
TRY_SEEK(hdr.ofs_vertexarrays);
VertexArrayIndices va_indices;
for(uint i = 0; i < NUM_REQUIRED_VERTEX_ARRAYS; ++i) {
va_indices.indices[i] = -1;
}
TRY(iqm_read_vertex_arrays(path, rw, hdr.num_vertexarrays, vert_arrays, &va_indices));
assume(hdr.num_vertexes > 0);
vertices = calloc(hdr.num_vertexes, sizeof(*vertices));
TRY_SEEK(vert_arrays[va_indices.position].offset);
TRY(iqm_read_vert_positions(path, rw, hdr.num_vertexes, vertices));
TRY_SEEK(vert_arrays[va_indices.texcoord].offset);
TRY(iqm_read_vert_texcoords(path, rw, hdr.num_vertexes, vertices));
TRY_SEEK(vert_arrays[va_indices.normal].offset);
TRY(iqm_read_vert_normals(path, rw, hdr.num_vertexes, vertices));
TRY_SEEK(vert_arrays[va_indices.tangent].offset);
TRY(iqm_read_vert_tangents(path, rw, hdr.num_vertexes, vertices));
assume(hdr.num_triangles > 0);
indices = calloc(hdr.num_triangles, sizeof(*indices));
TRY_SEEK(hdr.ofs_triangles);
TRY(iqm_read_triangles(path, rw, hdr.num_triangles, &indices->tri));
ldata = calloc(1, sizeof(*ldata));
ldata->vertices = vertices;
ldata->indices = indices->indices;
ldata->ofs_vertices = meshes[0].first_vertex;
ldata->num_vertices = meshes[0].num_vertexes;
ldata->ofs_indices = meshes[0].first_triangle * 3;
ldata->num_indices = meshes[0].num_triangles * 3;
cleanup:
free(meshes);
free(vert_arrays);
SDL_RWclose(rw);
return ldata;
fail:
free(vertices);
free(indices);
free(ldata);
goto cleanup;
}
static void *load_model_end(void *opaque, const char *path, uint flags) {
ModelLoadData *ldata = opaque;
if(ldata == NULL) {
return NULL;
}
Model *mdl = calloc(1, sizeof(*mdl));
r_model_add_static(
mdl,
PRIM_TRIANGLES,
ldata->num_vertices,
ldata->vertices + ldata->ofs_vertices,
ldata->num_indices,
ldata->indices + ldata->ofs_indices
);
free(ldata->vertices);
free(ldata->indices);
free(ldata);
return mdl;
}
static char *model_path(const char *name) {
return strjoin(MDL_PATH_PREFIX, name, MDL_EXTENSION, NULL);
}
static bool check_model_path(const char *path) {
return strendswith(path, MDL_EXTENSION);
}
static void unload_model(void *model) { // Does not delete elements from the VBO, so doing this at runtime is leaking VBO space
free(model);
}
ResourceHandler model_res_handler = {
.type = RES_MODEL,
@ -29,239 +492,3 @@ ResourceHandler model_res_handler = {
.unload = unload_model,
},
};
static bool parse_obj(const char *filename, ObjFileData *data);
static void free_obj(ObjFileData *data);
char* model_path(const char *name) {
return strjoin(MDL_PATH_PREFIX, name, MDL_EXTENSION, NULL);
}
bool check_model_path(const char *path) {
return strendswith(path, MDL_EXTENSION);
}
typedef struct ModelLoadData {
GenericModelVertex *verts;
uint *indices;
uint icount;
} ModelLoadData;
void* load_model_begin(const char *path, uint flags) {
ObjFileData *data = malloc(sizeof(ObjFileData));
GenericModelVertex *verts;
if(!parse_obj(path, data)) {
free(data);
return NULL;
}
uint *indices = calloc(data->icount, sizeof(uint));
uint icount = data->icount;
verts = calloc(data->icount, sizeof(GenericModelVertex));
#define BADREF(filename,aux,n) { \
log_error("OBJ file '%s': Index %d: bad %s index reference\n", filename, n, aux); \
goto fail; \
}
memset(verts, 0, data->icount*sizeof(GenericModelVertex));
for(uint i = 0; i < data->icount; i++) {
int xi, ni, ti;
xi = data->indices[i][0]-1;
if(xi < 0 || xi >= data->xcount)
BADREF(path, "vertex", i);
memcpy(verts[i].position, data->xs[xi], sizeof(vec3_noalign));
if(data->tcount) {
ti = data->indices[i][1]-1;
if(ti < 0 || ti >= data->tcount)
BADREF(path, "texcoord", i);
verts[i].uv.s = data->texcoords[ti][0];
verts[i].uv.t = data->texcoords[ti][1];
}
if(data->ncount) {
ni = data->indices[i][2]-1;
if(ni < 0 || ni >= data->ncount)
BADREF(path, "normal", ni);
memcpy(verts[i].normal, data->normals[ni], sizeof(vec3_noalign));
}
indices[i] = i;
}
free_obj(data);
free(data);
#undef BADREF
ModelLoadData *ldata = malloc(sizeof(ModelLoadData));
ldata->verts = verts;
ldata->indices = indices;
ldata->icount = icount;
return ldata;
fail:
free(indices);
free(verts);
free_obj(data);
free(data);
return NULL;
}
void* load_model_end(void *opaque, const char *path, uint flags) {
ModelLoadData *ldata = opaque;
if(!ldata) {
return NULL;
}
Model *model = calloc(1, sizeof(Model));
r_model_add_static(model, PRIM_TRIANGLES, ldata->icount, ldata->verts, ldata->indices);
free(ldata->verts);
free(ldata->indices);
free(ldata);
return model;
}
void unload_model(void *model) { // Does not delete elements from the VBO, so doing this at runtime is leaking VBO space
free(model);
}
static void free_obj(ObjFileData *data) {
free(data->xs);
free(data->normals);
free(data->texcoords);
free(data->indices);
}
static bool parse_obj(const char *filename, ObjFileData *data) {
SDL_RWops *rw = vfs_open(filename, VFS_MODE_READ);
if(!rw) {
log_error("VFS error: %s", vfs_get_error());
return false;
}
char line[256], *save;
vec3_noalign buf;
char mode;
int linen = 0;
memset(data, 0, sizeof(ObjFileData));
while(SDL_RWgets(rw, line, sizeof(line))) {
linen++;
char *first;
first = strtok_r(line, " \n", &save);
if(strcmp(first, "v") == 0)
mode = 'v';
else if(strcmp(first, "vt") == 0)
mode = 't';
else if(strcmp(first, "vn") == 0)
mode = 'n';
else if(strcmp(first, "f") == 0)
mode = 'f';
else
mode = 0;
if(mode != 0 && mode != 'f') {
buf[0] = atof(strtok_r(NULL, " \n", &save));
char *wtf = strtok_r(NULL, " \n", &save);
buf[1] = atof(wtf);
if(mode != 't')
buf[2] = atof(strtok_r(NULL, " \n", &save));
switch(mode) {
case 'v':
data->xs = realloc(data->xs, sizeof(vec3_noalign)*(++data->xcount));
memcpy(data->xs[data->xcount-1], buf, sizeof(vec3_noalign));
break;
case 't':
data->texcoords = realloc(data->texcoords, sizeof(vec3_noalign)*(++data->tcount));
memcpy(data->texcoords[data->tcount-1], buf, sizeof(vec3_noalign));
break;
case 'n':
data->normals = realloc(data->normals, sizeof(vec3_noalign)*(++data->ncount));
memcpy(data->normals[data->ncount-1], buf, sizeof(vec3_noalign));
break;
}
} else if(mode == 'f') {
char *segment, *seg;
int j = 0, jj;
ivec3_noalign ibuf;
memset(ibuf, 0, sizeof(ibuf));
while((segment = strtok_r(NULL, " \n", &save))) {
seg = segment;
j++;
jj = 0;
while(jj < 3) {
ibuf[jj] = atoi(seg);
jj++;
while(*seg != '\0' && *(++seg) != '/');
if(*seg == '\0')
break;
else
seg++;
}
if(strstr(segment, "//")) {
ibuf[2] = ibuf[1];
ibuf[1] = 0;
}
if(jj == 0 || jj > 3 || segment[0] == '/') {
log_error("OBJ file '%s:%d': Parsing error: Corrupt face definition", filename, linen);
goto fail;
}
data->indices = realloc(data->indices, sizeof(ivec3_noalign)*(++data->icount));
memcpy(data->indices[data->icount-1], ibuf, sizeof(ivec3_noalign));
}
if(data->fverts == 0)
data->fverts = j;
if(data->fverts != j) {
log_error("OBJ file '%s:%d': Parsing error: face vertex count must stay the same in the whole file", filename, linen);
goto fail;
}
if(data->fverts != 3) {
log_error("OBJ file '%s:%d': Parsing error: face vertex count must be 3", filename, linen);
goto fail;
}
}
}
SDL_RWclose(rw);
return true;
fail:
SDL_RWclose(rw);
free(data->indices);
free(data->normals);
free(data->xs);
return false;
}
Model* get_model(const char *name) {
return get_resource(RES_MODEL, name, RESF_DEFAULT)->data;
}

View file

@ -11,46 +11,21 @@
#include "taisei.h"
#include "util.h"
#include "resource.h"
#include "renderer/api.h"
typedef struct ObjFileData {
vec3_noalign *xs;
int xcount;
vec3_noalign *normals;
int ncount;
vec3_noalign *texcoords;
int tcount;
ivec3_noalign *indices;
int icount;
int fverts;
} ObjFileData;
struct Model {
VertexArray *vertex_array;
size_t num_vertices;
size_t num_indices;
size_t offset;
Primitive primitive;
bool indexed;
};
char* model_path(const char *name);
bool check_model_path(const char *path);
void* load_model_begin(const char *path, uint flags);
void* load_model_end(void *opaque, const char *path, uint flags);
void unload_model(void*); // Does not delete elements from the VBO, so doing this at runtime is leaking VBO space
Model* get_model(const char *name);
INLINE Model *get_model(const char *name) {
return get_resource(RES_MODEL, name, RESF_DEFAULT)->data;
}
extern ResourceHandler model_res_handler;
#define MDL_PATH_PREFIX "res/models/"
#define MDL_EXTENSION ".obj"
#endif // IGUARD_resource_model_h

View file

@ -1604,7 +1604,8 @@ static void stage_draw_framerate_graphs(float x, float y, float w, float h) {
void stage_draw_hud(void) {
// Background
r_mat_mv_push();
r_mat_mv_translate(SCREEN_W*0.5, SCREEN_H*0.5, 0);
r_mat_mv_translate(SCREEN_W * 0.5, SCREEN_H * 0.5, 0);
r_mat_mv_scale(SCREEN_W, SCREEN_W, 1);
r_shader_standard();
r_uniform_sampler("tex", "hud");
r_draw_model("hud");