summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsanine <sanine.not@pm.me>2023-05-16 22:51:17 -0500
committersanine <sanine.not@pm.me>2023-05-16 22:51:17 -0500
commit4b2507b2f30d50c8673f33179c2b537ac83da3bf (patch)
treef30fef03ada16c56e638f7955b1d01de676fda13
parentfae263bc315f1c44cbcf399f58c92e23f0968747 (diff)
add basic collision geom visualizations
-rw-r--r--assets/hemisphere.mtl10
-rw-r--r--assets/hemisphere.obj1309
-rw-r--r--assets/tube.mtl10
-rw-r--r--assets/tube.obj232
-rw-r--r--assets/unit_cube.mtl10
-rw-r--r--assets/unit_cube.obj46
-rw-r--r--honey/asset/mesh.lua202
-rw-r--r--honey/asset/shader.lua13
-rw-r--r--honey/ecs/collision.lua2
-rw-r--r--honey/ecs/ecs.lua2
-rw-r--r--honey/ecs/render.lua118
-rw-r--r--main.lua13
-rw-r--r--scripts/rotate.lua4
13 files changed, 1897 insertions, 74 deletions
diff --git a/assets/hemisphere.mtl b/assets/hemisphere.mtl
new file mode 100644
index 0000000..f231bdf
--- /dev/null
+++ b/assets/hemisphere.mtl
@@ -0,0 +1,10 @@
+# Blender MTL File: 'None'
+# Material Count: 1
+
+newmtl None
+Ns 500
+Ka 0.8 0.8 0.8
+Kd 0.8 0.8 0.8
+Ks 0.8 0.8 0.8
+d 1
+illum 2
diff --git a/assets/hemisphere.obj b/assets/hemisphere.obj
new file mode 100644
index 0000000..1b9f6ef
--- /dev/null
+++ b/assets/hemisphere.obj
@@ -0,0 +1,1309 @@
+# Blender v3.5.1 OBJ File: ''
+# www.blender.org
+mtllib hemisphere.mtl
+o Sphere
+v 0.000000 0.831470 -0.555570
+v 0.000000 0.555570 -0.831470
+v 0.000000 0.195090 -0.980785
+v 0.000000 0.000000 -1.000000
+v 0.038060 0.980785 -0.191342
+v 0.074658 0.923880 -0.375330
+v 0.108386 0.831470 -0.544895
+v 0.137950 0.707107 -0.693520
+v 0.162212 0.555570 -0.815493
+v 0.180240 0.382683 -0.906127
+v 0.191342 0.195090 -0.961940
+v 0.195090 0.000000 -0.980785
+v 0.074658 0.980785 -0.180240
+v 0.146447 0.923880 -0.353553
+v 0.212608 0.831470 -0.513280
+v 0.270598 0.707107 -0.653281
+v 0.318190 0.555570 -0.768178
+v 0.353553 0.382683 -0.853553
+v 0.375330 0.195090 -0.906127
+v 0.382683 0.000000 -0.923879
+v 0.108386 0.980785 -0.162212
+v 0.212608 0.923880 -0.318190
+v 0.308658 0.831470 -0.461940
+v 0.392847 0.707107 -0.587938
+v 0.461940 0.555570 -0.691342
+v 0.513280 0.382683 -0.768178
+v 0.544895 0.195090 -0.815493
+v 0.555570 0.000000 -0.831469
+v 0.137950 0.980785 -0.137950
+v 0.270598 0.923880 -0.270598
+v 0.392847 0.831470 -0.392847
+v 0.500000 0.707107 -0.500000
+v 0.587938 0.555570 -0.587938
+v 0.653281 0.382683 -0.653281
+v 0.693520 0.195090 -0.693520
+v 0.707107 0.000000 -0.707107
+v 0.162212 0.980785 -0.108386
+v 0.318190 0.923880 -0.212608
+v 0.461940 0.831470 -0.308658
+v 0.587938 0.707107 -0.392847
+v 0.691342 0.555570 -0.461940
+v 0.768178 0.382683 -0.513280
+v 0.815493 0.195090 -0.544895
+v 0.831470 0.000000 -0.555570
+v 0.000000 1.000000 0.000000
+v 0.180240 0.980785 -0.074658
+v 0.353553 0.923880 -0.146447
+v 0.513280 0.831470 -0.212607
+v 0.653281 0.707107 -0.270598
+v 0.768178 0.555570 -0.318190
+v 0.853553 0.382683 -0.353553
+v 0.906127 0.195090 -0.375330
+v 0.923879 0.000000 -0.382683
+v 0.191342 0.980785 -0.038060
+v 0.375330 0.923880 -0.074658
+v 0.544895 0.831470 -0.108386
+v 0.693520 0.707107 -0.137950
+v 0.815493 0.555570 -0.162212
+v 0.906127 0.382683 -0.180240
+v 0.961940 0.195090 -0.191342
+v 0.980785 0.000000 -0.195090
+v 0.195090 0.980785 0.000000
+v 0.382683 0.923880 0.000000
+v 0.555570 0.831470 0.000000
+v 0.707107 0.707107 -0.000000
+v 0.831469 0.555570 0.000000
+v 0.923879 0.382683 -0.000000
+v 0.980785 0.195090 0.000000
+v 1.000000 0.000000 0.000000
+v 0.191342 0.980785 0.038060
+v 0.375330 0.923880 0.074658
+v 0.544895 0.831470 0.108386
+v 0.693520 0.707107 0.137950
+v 0.815493 0.555570 0.162212
+v 0.906127 0.382683 0.180240
+v 0.961940 0.195090 0.191342
+v 0.980785 0.000000 0.195090
+v 0.180240 0.980785 0.074658
+v 0.353553 0.923880 0.146447
+v 0.513280 0.831470 0.212608
+v 0.653281 0.707107 0.270598
+v 0.768178 0.555570 0.318190
+v 0.853553 0.382683 0.353553
+v 0.906127 0.195090 0.375330
+v 0.923879 0.000000 0.382683
+v 0.162212 0.980785 0.108386
+v 0.318190 0.923880 0.212608
+v 0.461940 0.831470 0.308658
+v 0.587938 0.707107 0.392847
+v 0.691341 0.555570 0.461940
+v 0.768178 0.382683 0.513280
+v 0.815493 0.195090 0.544895
+v 0.831469 0.000000 0.555570
+v 0.137950 0.980785 0.137950
+v 0.270598 0.923880 0.270598
+v 0.392847 0.831470 0.392847
+v 0.500000 0.707107 0.500000
+v 0.587938 0.555570 0.587938
+v 0.653281 0.382683 0.653281
+v 0.693520 0.195090 0.693520
+v 0.707106 0.000000 0.707107
+v 0.108386 0.980785 0.162212
+v 0.212607 0.923880 0.318190
+v 0.308658 0.831470 0.461940
+v 0.392847 0.707107 0.587938
+v 0.461940 0.555570 0.691342
+v 0.513280 0.382683 0.768178
+v 0.544895 0.195090 0.815493
+v 0.555570 0.000000 0.831469
+v 0.074658 0.980785 0.180240
+v 0.146447 0.923880 0.353553
+v 0.212607 0.831470 0.513280
+v 0.270598 0.707107 0.653281
+v 0.318189 0.555570 0.768178
+v 0.353553 0.382683 0.853553
+v 0.375330 0.195090 0.906127
+v 0.382683 0.000000 0.923879
+v 0.038060 0.980785 0.191342
+v 0.074658 0.923880 0.375330
+v 0.108386 0.831470 0.544895
+v 0.137950 0.707107 0.693520
+v 0.162212 0.555570 0.815493
+v 0.180240 0.382683 0.906127
+v 0.191342 0.195090 0.961939
+v 0.195090 0.000000 0.980785
+v -0.000000 0.980785 0.195090
+v -0.000000 0.923880 0.382683
+v -0.000000 0.831470 0.555570
+v -0.000000 0.707107 0.707107
+v -0.000000 0.555570 0.831469
+v 0.000000 0.382683 0.923879
+v -0.000000 0.195090 0.980785
+v -0.000000 0.000000 0.999999
+v -0.038060 0.980785 0.191342
+v -0.074658 0.923880 0.375330
+v -0.108386 0.831470 0.544895
+v -0.137950 0.707107 0.693520
+v -0.162212 0.555570 0.815493
+v -0.180240 0.382683 0.906127
+v -0.191342 0.195090 0.961939
+v -0.195091 0.000000 0.980785
+v -0.074658 0.980785 0.180240
+v -0.146447 0.923880 0.353553
+v -0.212608 0.831470 0.513280
+v -0.270598 0.707107 0.653281
+v -0.318190 0.555570 0.768177
+v -0.353553 0.382683 0.853553
+v -0.375330 0.195090 0.906127
+v -0.382683 0.000000 0.923879
+v -0.108386 0.980785 0.162212
+v -0.212608 0.923880 0.318190
+v -0.308658 0.831470 0.461939
+v -0.392847 0.707107 0.587938
+v -0.461940 0.555570 0.691341
+v -0.513280 0.382683 0.768178
+v -0.544895 0.195090 0.815493
+v -0.555570 0.000000 0.831469
+v -0.137950 0.980785 0.137950
+v -0.270598 0.923880 0.270598
+v -0.392847 0.831470 0.392847
+v -0.500000 0.707107 0.500000
+v -0.587938 0.555570 0.587937
+v -0.653281 0.382683 0.653281
+v -0.693520 0.195090 0.693520
+v -0.707106 0.000000 0.707106
+v -0.162212 0.980785 0.108386
+v -0.318190 0.923880 0.212607
+v -0.461940 0.831470 0.308658
+v -0.587938 0.707107 0.392847
+v -0.691341 0.555570 0.461939
+v -0.768177 0.382683 0.513280
+v -0.815493 0.195090 0.544895
+v -0.831469 0.000000 0.555569
+v -0.180240 0.980785 0.074658
+v -0.353553 0.923880 0.146447
+v -0.513280 0.831470 0.212607
+v -0.653281 0.707107 0.270598
+v -0.768177 0.555570 0.318189
+v -0.853553 0.382683 0.353553
+v -0.906127 0.195090 0.375330
+v -0.923879 0.000000 0.382683
+v -0.191342 0.980785 0.038060
+v -0.375330 0.923880 0.074658
+v -0.544895 0.831470 0.108386
+v -0.693520 0.707107 0.137950
+v -0.815493 0.555570 0.162211
+v -0.906127 0.382683 0.180240
+v -0.961939 0.195090 0.191341
+v -0.980784 0.000000 0.195090
+v -0.195090 0.980785 -0.000000
+v -0.382683 0.923880 -0.000000
+v -0.555570 0.831470 -0.000000
+v -0.707107 0.707107 -0.000000
+v -0.831469 0.555570 -0.000000
+v -0.923879 0.382683 -0.000000
+v -0.980785 0.195090 -0.000000
+v -0.999999 0.000000 -0.000000
+v -0.191342 0.980785 -0.038060
+v -0.375330 0.923880 -0.074658
+v -0.544895 0.831470 -0.108386
+v -0.693520 0.707107 -0.137950
+v -0.815493 0.555570 -0.162212
+v -0.906127 0.382683 -0.180240
+v -0.961939 0.195090 -0.191342
+v -0.980784 0.000000 -0.195091
+v -0.180240 0.980785 -0.074658
+v -0.353553 0.923880 -0.146447
+v -0.513279 0.831470 -0.212607
+v -0.653281 0.707107 -0.270598
+v -0.768177 0.555570 -0.318190
+v -0.853553 0.382683 -0.353553
+v -0.906127 0.195090 -0.375330
+v -0.923878 0.000000 -0.382683
+v -0.162212 0.980785 -0.108386
+v -0.318189 0.923880 -0.212607
+v -0.461939 0.831470 -0.308658
+v -0.587938 0.707107 -0.392847
+v -0.691341 0.555570 -0.461940
+v -0.768177 0.382683 -0.513280
+v -0.815493 0.195090 -0.544895
+v -0.831468 0.000000 -0.555570
+v -0.137950 0.980785 -0.137950
+v -0.270598 0.923880 -0.270598
+v -0.392847 0.831470 -0.392847
+v -0.500000 0.707107 -0.500000
+v -0.587937 0.555570 -0.587938
+v -0.653281 0.382683 -0.653281
+v -0.693519 0.195090 -0.693520
+v -0.707106 0.000000 -0.707106
+v -0.108386 0.980785 -0.162212
+v -0.212607 0.923880 -0.318190
+v -0.308658 0.831470 -0.461939
+v -0.392847 0.707107 -0.587938
+v -0.461939 0.555570 -0.691341
+v -0.513280 0.382683 -0.768177
+v -0.544895 0.195090 -0.815493
+v -0.555569 0.000000 -0.831469
+v -0.074658 0.980785 -0.180240
+v -0.146446 0.923880 -0.353553
+v -0.212607 0.831470 -0.513279
+v -0.270598 0.707107 -0.653281
+v -0.318189 0.555570 -0.768177
+v -0.353553 0.382683 -0.853553
+v -0.375330 0.195090 -0.906127
+v -0.382683 0.000000 -0.923879
+v -0.038060 0.980785 -0.191342
+v -0.074658 0.923880 -0.375330
+v -0.108386 0.831470 -0.544895
+v -0.137950 0.707107 -0.693520
+v -0.162211 0.555570 -0.815493
+v -0.180240 0.382683 -0.906127
+v -0.191341 0.195090 -0.961939
+v -0.195090 0.000000 -0.980784
+v 0.000000 0.980785 -0.195090
+v 0.000000 0.923880 -0.382683
+v 0.000000 0.707107 -0.707107
+v 0.000000 0.382683 -0.923879
+vt 0.750000 0.812500
+vt 0.718750 0.875000
+vt 0.718750 0.812500
+vt 0.750000 0.750000
+vt 0.718750 0.750000
+vt 0.750000 0.687500
+vt 0.718750 0.687500
+vt 0.750000 0.625000
+vt 0.718750 0.625000
+vt 0.750000 0.562500
+vt 0.718750 0.562500
+vt 0.718750 0.500000
+vt 0.750000 0.500000
+vt 0.750000 0.937500
+vt 0.734375 1.000000
+vt 0.718750 0.937500
+vt 0.750000 0.875000
+vt 0.703125 1.000000
+vt 0.687500 0.937500
+vt 0.687500 0.875000
+vt 0.687500 0.812500
+vt 0.687500 0.750000
+vt 0.687500 0.687500
+vt 0.687500 0.625000
+vt 0.687500 0.562500
+vt 0.687500 0.500000
+vt 0.656250 0.687500
+vt 0.656250 0.625000
+vt 0.656250 0.562500
+vt 0.656250 0.500000
+vt 0.671875 1.000000
+vt 0.656250 0.937500
+vt 0.656250 0.875000
+vt 0.656250 0.812500
+vt 0.656250 0.750000
+vt 0.625000 0.875000
+vt 0.625000 0.812500
+vt 0.625000 0.750000
+vt 0.625000 0.687500
+vt 0.625000 0.625000
+vt 0.625000 0.562500
+vt 0.625000 0.500000
+vt 0.640625 1.000000
+vt 0.625000 0.937500
+vt 0.593750 0.625000
+vt 0.593750 0.562500
+vt 0.593750 0.500000
+vt 0.609375 1.000000
+vt 0.593750 0.937500
+vt 0.593750 0.875000
+vt 0.593750 0.812500
+vt 0.593750 0.750000
+vt 0.593750 0.687500
+vt 0.562500 0.812500
+vt 0.562500 0.750000
+vt 0.562500 0.687500
+vt 0.562500 0.625000
+vt 0.562500 0.562500
+vt 0.562500 0.500000
+vt 0.578125 1.000000
+vt 0.562500 0.937500
+vt 0.562500 0.875000
+vt 0.531250 0.625000
+vt 0.531250 0.562500
+vt 0.531250 0.500000
+vt 0.546875 1.000000
+vt 0.531250 0.937500
+vt 0.531250 0.875000
+vt 0.531250 0.812500
+vt 0.531250 0.750000
+vt 0.531250 0.687500
+vt 0.500000 0.812500
+vt 0.500000 0.750000
+vt 0.500000 0.687500
+vt 0.500000 0.625000
+vt 0.500000 0.562500
+vt 0.500000 0.500000
+vt 0.515625 1.000000
+vt 0.500000 0.937500
+vt 0.500000 0.875000
+vt 0.468750 0.625000
+vt 0.468750 0.562500
+vt 0.468750 0.500000
+vt 0.484375 1.000000
+vt 0.468750 0.937500
+vt 0.468750 0.875000
+vt 0.468750 0.812500
+vt 0.468750 0.750000
+vt 0.468750 0.687500
+vt 0.437500 0.750000
+vt 0.437500 0.687500
+vt 0.437500 0.625000
+vt 0.437500 0.562500
+vt 0.437500 0.500000
+vt 0.453125 1.000000
+vt 0.437500 0.937500
+vt 0.437500 0.875000
+vt 0.437500 0.812500
+vt 0.406250 0.562500
+vt 0.406250 0.500000
+vt 0.421875 1.000000
+vt 0.406250 0.937500
+vt 0.406250 0.875000
+vt 0.406250 0.812500
+vt 0.406250 0.750000
+vt 0.406250 0.687500
+vt 0.406250 0.625000
+vt 0.375000 0.750000
+vt 0.375000 0.687500
+vt 0.375000 0.625000
+vt 0.375000 0.562500
+vt 0.375000 0.500000
+vt 0.390625 1.000000
+vt 0.375000 0.937500
+vt 0.375000 0.875000
+vt 0.375000 0.812500
+vt 0.343750 0.562500
+vt 0.343750 0.500000
+vt 0.359375 1.000000
+vt 0.343750 0.937500
+vt 0.343750 0.875000
+vt 0.343750 0.812500
+vt 0.343750 0.750000
+vt 0.343750 0.687500
+vt 0.343750 0.625000
+vt 0.312500 0.750000
+vt 0.312500 0.687500
+vt 0.312500 0.625000
+vt 0.312500 0.562500
+vt 0.312500 0.500000
+vt 0.328125 1.000000
+vt 0.312500 0.937500
+vt 0.312500 0.875000
+vt 0.312500 0.812500
+vt 0.281250 0.875000
+vt 0.281250 0.812500
+vt 0.281250 0.750000
+vt 0.281250 0.687500
+vt 0.281250 0.625000
+vt 0.281250 0.562500
+vt 0.281250 0.500000
+vt 0.296875 1.000000
+vt 0.281250 0.937500
+vt 0.250000 0.625000
+vt 0.250000 0.562500
+vt 0.250000 0.500000
+vt 0.265625 1.000000
+vt 0.250000 0.937500
+vt 0.250000 0.875000
+vt 0.250000 0.812500
+vt 0.250000 0.750000
+vt 0.250000 0.687500
+vt 0.218750 0.875000
+vt 0.218750 0.812500
+vt 0.218750 0.750000
+vt 0.218750 0.687500
+vt 0.218750 0.625000
+vt 0.218750 0.562500
+vt 0.218750 0.500000
+vt 0.234375 1.000000
+vt 0.218750 0.937500
+vt 0.187500 0.625000
+vt 0.187500 0.562500
+vt 0.187500 0.500000
+vt 0.203125 1.000000
+vt 0.187500 0.937500
+vt 0.187500 0.875000
+vt 0.187500 0.812500
+vt 0.187500 0.750000
+vt 0.187500 0.687500
+vt 0.156250 0.812500
+vt 0.156250 0.750000
+vt 0.156250 0.687500
+vt 0.156250 0.625000
+vt 0.156250 0.562500
+vt 0.156250 0.500000
+vt 0.171875 1.000000
+vt 0.156250 0.937500
+vt 0.156250 0.875000
+vt 0.125000 0.625000
+vt 0.125000 0.562500
+vt 0.125000 0.500000
+vt 0.140625 1.000000
+vt 0.125000 0.937500
+vt 0.125000 0.875000
+vt 0.125000 0.812500
+vt 0.125000 0.750000
+vt 0.125000 0.687500
+vt 0.093750 0.812500
+vt 0.093750 0.750000
+vt 0.093750 0.687500
+vt 0.093750 0.625000
+vt 0.093750 0.562500
+vt 0.093750 0.500000
+vt 0.109375 1.000000
+vt 0.093750 0.937500
+vt 0.093750 0.875000
+vt 0.062500 0.625000
+vt 0.062500 0.562500
+vt 0.062500 0.500000
+vt 0.078125 1.000000
+vt 0.062500 0.937500
+vt 0.062500 0.875000
+vt 0.062500 0.812500
+vt 0.062500 0.750000
+vt 0.062500 0.687500
+vt 0.031250 0.750000
+vt 0.031250 0.687500
+vt 0.031250 0.625000
+vt 0.031250 0.562500
+vt 0.031250 0.500000
+vt 0.046875 1.000000
+vt 0.031250 0.937500
+vt 0.031250 0.875000
+vt 0.031250 0.812500
+vt 0.000000 0.562500
+vt 0.000000 0.500000
+vt 0.015625 1.000000
+vt 0.000000 0.937500
+vt 0.000000 0.875000
+vt 0.000000 0.812500
+vt 0.000000 0.750000
+vt 0.000000 0.687500
+vt 0.000000 0.625000
+vt 1.000000 0.687500
+vt 0.968750 0.750000
+vt 0.968750 0.687500
+vt 0.968750 0.625000
+vt 1.000000 0.625000
+vt 1.000000 0.562500
+vt 0.968750 0.562500
+vt 1.000000 0.500000
+vt 0.968750 0.500000
+vt 1.000000 0.937500
+vt 0.984375 1.000000
+vt 0.968750 0.937500
+vt 0.968750 0.875000
+vt 1.000000 0.875000
+vt 1.000000 0.812500
+vt 0.968750 0.812500
+vt 1.000000 0.750000
+vt 0.953125 1.000000
+vt 0.937500 0.937500
+vt 0.937500 0.875000
+vt 0.937500 0.812500
+vt 0.937500 0.750000
+vt 0.937500 0.687500
+vt 0.937500 0.625000
+vt 0.937500 0.562500
+vt 0.937500 0.500000
+vt 0.906250 0.750000
+vt 0.906250 0.687500
+vt 0.906250 0.625000
+vt 0.906250 0.562500
+vt 0.906250 0.500000
+vt 0.921875 1.000000
+vt 0.906250 0.937500
+vt 0.906250 0.875000
+vt 0.906250 0.812500
+vt 0.875000 0.875000
+vt 0.875000 0.812500
+vt 0.875000 0.750000
+vt 0.875000 0.687500
+vt 0.875000 0.625000
+vt 0.875000 0.562500
+vt 0.875000 0.500000
+vt 0.890625 1.000000
+vt 0.875000 0.937500
+vt 0.843750 0.625000
+vt 0.843750 0.562500
+vt 0.843750 0.500000
+vt 0.859375 1.000000
+vt 0.843750 0.937500
+vt 0.843750 0.875000
+vt 0.843750 0.812500
+vt 0.843750 0.750000
+vt 0.843750 0.687500
+vt 0.812500 0.937500
+vt 0.812500 0.875000
+vt 0.812500 0.812500
+vt 0.812500 0.750000
+vt 0.812500 0.687500
+vt 0.812500 0.625000
+vt 0.812500 0.562500
+vt 0.812500 0.500000
+vt 0.828125 1.000000
+vt 0.781250 0.625000
+vt 0.781250 0.562500
+vt 0.781250 0.500000
+vt 0.796875 1.000000
+vt 0.781250 0.937500
+vt 0.781250 0.875000
+vt 0.781250 0.812500
+vt 0.781250 0.750000
+vt 0.781250 0.687500
+vt 0.765625 1.000000
+vn 0.0464 0.8810 -0.4709
+vn 0.0624 0.7715 -0.6332
+vn 0.0759 0.6326 -0.7708
+vn 0.0865 0.4696 -0.8786
+vn 0.0938 0.2890 -0.9527
+vn 0.0975 0.0975 -0.9904
+vn 0.0097 0.9951 -0.0980
+vn 0.0286 0.9565 -0.2902
+vn 0.0286 0.9951 -0.0942
+vn 0.0846 0.9565 -0.2790
+vn 0.1374 0.8810 -0.4528
+vn 0.1847 0.7715 -0.6088
+vn 0.2248 0.6326 -0.7412
+vn 0.2563 0.4696 -0.8448
+vn 0.2779 0.2890 -0.9161
+vn 0.2889 0.0975 -0.9524
+vn 0.3651 0.6326 -0.6831
+vn 0.4162 0.4696 -0.7786
+vn 0.4513 0.2890 -0.8443
+vn 0.4691 0.0975 -0.8777
+vn 0.0464 0.9951 -0.0869
+vn 0.1374 0.9565 -0.2571
+vn 0.2230 0.8810 -0.4173
+vn 0.2999 0.7715 -0.5611
+vn 0.1850 0.9565 -0.2254
+vn 0.3002 0.8810 -0.3658
+vn 0.4036 0.7715 -0.4918
+vn 0.4913 0.6326 -0.5987
+vn 0.5601 0.4696 -0.6825
+vn 0.6073 0.2890 -0.7400
+vn 0.6314 0.0975 -0.7693
+vn 0.0625 0.9951 -0.0761
+vn 0.6825 0.4696 -0.5601
+vn 0.7400 0.2890 -0.6073
+vn 0.7693 0.0975 -0.6314
+vn 0.0761 0.9951 -0.0625
+vn 0.2254 0.9565 -0.1850
+vn 0.3658 0.8810 -0.3002
+vn 0.4918 0.7715 -0.4036
+vn 0.5987 0.6326 -0.4913
+vn 0.4173 0.8810 -0.2231
+vn 0.5611 0.7715 -0.2999
+vn 0.6831 0.6326 -0.3651
+vn 0.7786 0.4696 -0.4162
+vn 0.8443 0.2890 -0.4513
+vn 0.8777 0.0975 -0.4691
+vn 0.0869 0.9951 -0.0464
+vn 0.2571 0.9565 -0.1374
+vn 0.9161 0.2890 -0.2779
+vn 0.9524 0.0975 -0.2889
+vn 0.0942 0.9951 -0.0286
+vn 0.2790 0.9565 -0.0846
+vn 0.4528 0.8810 -0.1374
+vn 0.6088 0.7715 -0.1847
+vn 0.7412 0.6326 -0.2248
+vn 0.8448 0.4696 -0.2563
+vn 0.4709 0.8810 -0.0464
+vn 0.6332 0.7715 -0.0624
+vn 0.7708 0.6326 -0.0759
+vn 0.8786 0.4696 -0.0865
+vn 0.9527 0.2890 -0.0938
+vn 0.9904 0.0975 -0.0975
+vn 0.0980 0.9951 -0.0097
+vn 0.2902 0.9565 -0.0286
+vn 0.9527 0.2890 0.0938
+vn 0.9904 0.0975 0.0976
+vn 0.0980 0.9951 0.0097
+vn 0.2902 0.9565 0.0286
+vn 0.4709 0.8810 0.0464
+vn 0.6332 0.7715 0.0624
+vn 0.7708 0.6326 0.0759
+vn 0.8786 0.4696 0.0865
+vn 0.6088 0.7715 0.1847
+vn 0.7412 0.6326 0.2248
+vn 0.8448 0.4696 0.2563
+vn 0.9161 0.2890 0.2779
+vn 0.9524 0.0975 0.2889
+vn 0.0942 0.9951 0.0286
+vn 0.2790 0.9565 0.0846
+vn 0.4528 0.8810 0.1374
+vn 0.8777 0.0975 0.4691
+vn 0.0869 0.9951 0.0464
+vn 0.2571 0.9565 0.1374
+vn 0.4173 0.8810 0.2231
+vn 0.5611 0.7715 0.2999
+vn 0.6831 0.6326 0.3651
+vn 0.7786 0.4696 0.4162
+vn 0.8443 0.2890 0.4513
+vn 0.4918 0.7715 0.4036
+vn 0.5987 0.6326 0.4913
+vn 0.6825 0.4696 0.5601
+vn 0.7400 0.2890 0.6073
+vn 0.7693 0.0975 0.6314
+vn 0.0761 0.9951 0.0625
+vn 0.2254 0.9565 0.1850
+vn 0.3658 0.8810 0.3002
+vn 0.6314 0.0975 0.7693
+vn 0.0625 0.9951 0.0761
+vn 0.1850 0.9565 0.2254
+vn 0.3002 0.8810 0.3658
+vn 0.4036 0.7715 0.4918
+vn 0.4913 0.6326 0.5987
+vn 0.5601 0.4696 0.6825
+vn 0.6073 0.2890 0.7400
+vn 0.3651 0.6326 0.6831
+vn 0.4162 0.4696 0.7786
+vn 0.4513 0.2890 0.8443
+vn 0.4691 0.0975 0.8777
+vn 0.0464 0.9951 0.0869
+vn 0.1374 0.9565 0.2571
+vn 0.2230 0.8810 0.4173
+vn 0.2999 0.7715 0.5611
+vn 0.0846 0.9565 0.2790
+vn 0.1374 0.8810 0.4528
+vn 0.1847 0.7715 0.6088
+vn 0.2248 0.6326 0.7412
+vn 0.2563 0.4696 0.8448
+vn 0.2779 0.2890 0.9161
+vn 0.2889 0.0975 0.9524
+vn 0.0286 0.9951 0.0942
+vn 0.0865 0.4696 0.8786
+vn 0.0938 0.2890 0.9527
+vn 0.0975 0.0975 0.9904
+vn 0.0097 0.9951 0.0980
+vn 0.0286 0.9565 0.2902
+vn 0.0464 0.8810 0.4709
+vn 0.0624 0.7715 0.6332
+vn 0.0759 0.6326 0.7708
+vn -0.0286 0.9565 0.2902
+vn -0.0464 0.8810 0.4709
+vn -0.0624 0.7715 0.6332
+vn -0.0759 0.6326 0.7708
+vn -0.0865 0.4696 0.8786
+vn -0.0938 0.2890 0.9527
+vn -0.0975 0.0975 0.9904
+vn -0.0097 0.9951 0.0980
+vn -0.2563 0.4696 0.8448
+vn -0.2779 0.2890 0.9161
+vn -0.2889 0.0975 0.9524
+vn -0.0286 0.9951 0.0942
+vn -0.0846 0.9565 0.2790
+vn -0.1374 0.8810 0.4528
+vn -0.1847 0.7715 0.6088
+vn -0.2248 0.6326 0.7412
+vn -0.2231 0.8810 0.4173
+vn -0.2999 0.7715 0.5611
+vn -0.3651 0.6326 0.6831
+vn -0.4162 0.4696 0.7786
+vn -0.4513 0.2890 0.8443
+vn -0.4691 0.0975 0.8777
+vn -0.0464 0.9951 0.0869
+vn -0.1374 0.9565 0.2571
+vn -0.6073 0.2890 0.7400
+vn -0.6314 0.0975 0.7693
+vn -0.0625 0.9951 0.0761
+vn -0.1850 0.9565 0.2254
+vn -0.3002 0.8810 0.3658
+vn -0.4036 0.7715 0.4918
+vn -0.4913 0.6326 0.5987
+vn -0.5601 0.4696 0.6825
+vn -0.3658 0.8810 0.3002
+vn -0.4918 0.7715 0.4036
+vn -0.5987 0.6326 0.4913
+vn -0.6825 0.4696 0.5601
+vn -0.7400 0.2890 0.6073
+vn -0.7693 0.0975 0.6314
+vn -0.0761 0.9951 0.0625
+vn -0.2254 0.9565 0.1850
+vn -0.8443 0.2890 0.4513
+vn -0.8777 0.0975 0.4691
+vn -0.0869 0.9951 0.0464
+vn -0.2571 0.9565 0.1374
+vn -0.4173 0.8810 0.2230
+vn -0.5611 0.7715 0.2999
+vn -0.6831 0.6326 0.3651
+vn -0.7786 0.4696 0.4162
+vn -0.6088 0.7715 0.1847
+vn -0.7412 0.6326 0.2248
+vn -0.8448 0.4696 0.2563
+vn -0.9161 0.2890 0.2779
+vn -0.9524 0.0975 0.2889
+vn -0.0942 0.9951 0.0286
+vn -0.2790 0.9565 0.0846
+vn -0.4528 0.8810 0.1374
+vn -0.9904 0.0975 0.0975
+vn -0.0980 0.9951 0.0097
+vn -0.2902 0.9565 0.0286
+vn -0.4709 0.8810 0.0464
+vn -0.6332 0.7715 0.0624
+vn -0.7708 0.6326 0.0759
+vn -0.8786 0.4696 0.0865
+vn -0.9527 0.2890 0.0938
+vn -0.7708 0.6326 -0.0759
+vn -0.8786 0.4696 -0.0865
+vn -0.9527 0.2890 -0.0938
+vn -0.9904 0.0975 -0.0976
+vn -0.0980 0.9951 -0.0097
+vn -0.2902 0.9565 -0.0286
+vn -0.4709 0.8810 -0.0464
+vn -0.6332 0.7715 -0.0624
+vn -0.0942 0.9951 -0.0286
+vn -0.2790 0.9565 -0.0846
+vn -0.4528 0.8810 -0.1374
+vn -0.6088 0.7715 -0.1847
+vn -0.7412 0.6326 -0.2248
+vn -0.8448 0.4696 -0.2563
+vn -0.9161 0.2890 -0.2779
+vn -0.9524 0.0975 -0.2889
+vn -0.6831 0.6326 -0.3651
+vn -0.7786 0.4696 -0.4162
+vn -0.8443 0.2890 -0.4513
+vn -0.8777 0.0975 -0.4691
+vn -0.0869 0.9951 -0.0464
+vn -0.2571 0.9565 -0.1374
+vn -0.4173 0.8810 -0.2231
+vn -0.5611 0.7715 -0.2999
+vn -0.2254 0.9565 -0.1850
+vn -0.3658 0.8810 -0.3002
+vn -0.4918 0.7715 -0.4036
+vn -0.5987 0.6326 -0.4913
+vn -0.6825 0.4696 -0.5601
+vn -0.7400 0.2890 -0.6073
+vn -0.7693 0.0975 -0.6314
+vn -0.0761 0.9951 -0.0625
+vn -0.5601 0.4696 -0.6825
+vn -0.6073 0.2890 -0.7400
+vn -0.6314 0.0975 -0.7693
+vn -0.0625 0.9951 -0.0761
+vn -0.1850 0.9565 -0.2254
+vn -0.3002 0.8810 -0.3658
+vn -0.4036 0.7715 -0.4918
+vn -0.4913 0.6326 -0.5987
+vn -0.1374 0.9565 -0.2571
+vn -0.2230 0.8810 -0.4173
+vn -0.2999 0.7715 -0.5611
+vn -0.3651 0.6326 -0.6831
+vn -0.4162 0.4696 -0.7786
+vn -0.4513 0.2890 -0.8443
+vn -0.4691 0.0975 -0.8777
+vn -0.0464 0.9951 -0.0869
+vn -0.2563 0.4696 -0.8448
+vn -0.2779 0.2890 -0.9161
+vn -0.2889 0.0975 -0.9524
+vn -0.0286 0.9951 -0.0942
+vn -0.0846 0.9565 -0.2790
+vn -0.1374 0.8810 -0.4528
+vn -0.1847 0.7715 -0.6088
+vn -0.2248 0.6326 -0.7412
+vn -0.0464 0.8810 -0.4709
+vn -0.0624 0.7715 -0.6332
+vn -0.0759 0.6326 -0.7708
+vn -0.0865 0.4696 -0.8786
+vn -0.0938 0.2890 -0.9527
+vn -0.0976 0.0975 -0.9904
+vn -0.0097 0.9951 -0.0980
+vn -0.0286 0.9565 -0.2902
+vn 0.0976 0.0975 -0.9904
+vn 0.2231 0.8810 -0.4173
+vn 0.7693 0.0976 -0.6314
+vn 0.4173 0.8810 -0.2230
+vn 0.9904 0.0976 -0.0975
+vn 0.9904 0.0975 0.0975
+vn 0.4173 0.8810 0.2230
+vn 0.2254 0.9566 0.1850
+vn 0.0976 0.0975 0.9904
+vn -0.0976 0.0975 0.9904
+vn -0.4173 0.8810 0.2231
+vn -0.4173 0.8810 -0.2230
+vn -0.2254 0.9566 -0.1850
+vn -0.2231 0.8810 -0.4173
+usemtl None
+s off
+f 1/1/1 6/2/1 7/3/1
+f 256/4/2 7/3/2 8/5/2
+f 2/6/3 8/5/3 9/7/3
+f 257/8/4 9/7/4 10/9/4
+f 3/10/5 10/9/5 11/11/5
+f 3/10/6 12/12/6 4/13/6
+f 254/14/7 45/15/7 5/16/7
+f 255/17/8 5/16/8 6/2/8
+f 5/16/9 45/18/9 13/19/9
+f 5/16/10 14/20/10 6/2/10
+f 6/2/11 15/21/11 7/3/11
+f 7/3/12 16/22/12 8/5/12
+f 8/5/13 17/23/13 9/7/13
+f 9/7/14 18/24/14 10/9/14
+f 11/11/15 18/24/15 19/25/15
+f 11/11/16 20/26/16 12/12/16
+f 16/22/17 25/27/17 17/23/17
+f 17/23/18 26/28/18 18/24/18
+f 18/24/19 27/29/19 19/25/19
+f 19/25/20 28/30/20 20/26/20
+f 13/19/21 45/31/21 21/32/21
+f 13/19/22 22/33/22 14/20/22
+f 14/20/23 23/34/23 15/21/23
+f 15/21/24 24/35/24 16/22/24
+f 21/32/25 30/36/25 22/33/25
+f 22/33/26 31/37/26 23/34/26
+f 23/34/27 32/38/27 24/35/27
+f 24/35/28 33/39/28 25/27/28
+f 25/27/29 34/40/29 26/28/29
+f 27/29/30 34/40/30 35/41/30
+f 28/30/31 35/41/31 36/42/31
+f 21/32/32 45/43/32 29/44/32
+f 33/39/33 42/45/33 34/40/33
+f 35/41/34 42/45/34 43/46/34
+f 36/42/35 43/46/35 44/47/35
+f 29/44/36 45/48/36 37/49/36
+f 29/44/37 38/50/37 30/36/37
+f 30/36/38 39/51/38 31/37/38
+f 31/37/39 40/52/39 32/38/39
+f 33/39/40 40/52/40 41/53/40
+f 38/50/41 48/54/41 39/51/41
+f 39/51/42 49/55/42 40/52/42
+f 41/53/43 49/55/43 50/56/43
+f 41/53/44 51/57/44 42/45/44
+f 43/46/45 51/57/45 52/58/45
+f 44/47/46 52/58/46 53/59/46
+f 37/49/47 45/60/47 46/61/47
+f 37/49/48 47/62/48 38/50/48
+f 52/58/49 59/63/49 60/64/49
+f 53/59/50 60/64/50 61/65/50
+f 46/61/51 45/66/51 54/67/51
+f 47/62/52 54/67/52 55/68/52
+f 47/62/53 56/69/53 48/54/53
+f 48/54/54 57/70/54 49/55/54
+f 50/56/55 57/70/55 58/71/55
+f 50/56/56 59/63/56 51/57/56
+f 55/68/57 64/72/57 56/69/57
+f 56/69/58 65/73/58 57/70/58
+f 58/71/59 65/73/59 66/74/59
+f 58/71/60 67/75/60 59/63/60
+f 60/64/61 67/75/61 68/76/61
+f 61/65/62 68/76/62 69/77/62
+f 54/67/63 45/78/63 62/79/63
+f 55/68/64 62/79/64 63/80/64
+f 68/76/65 75/81/65 76/82/65
+f 69/77/66 76/82/66 77/83/66
+f 62/79/67 45/84/67 70/85/67
+f 62/79/68 71/86/68 63/80/68
+f 63/80/69 72/87/69 64/72/69
+f 64/72/70 73/88/70 65/73/70
+f 66/74/71 73/88/71 74/89/71
+f 66/74/72 75/81/72 67/75/72
+f 72/87/73 81/90/73 73/88/73
+f 74/89/74 81/90/74 82/91/74
+f 74/89/75 83/92/75 75/81/75
+f 76/82/76 83/92/76 84/93/76
+f 77/83/77 84/93/77 85/94/77
+f 70/85/78 45/95/78 78/96/78
+f 70/85/79 79/97/79 71/86/79
+f 72/87/80 79/97/80 80/98/80
+f 85/94/81 92/99/81 93/100/81
+f 78/96/82 45/101/82 86/102/82
+f 78/96/83 87/103/83 79/97/83
+f 80/98/84 87/103/84 88/104/84
+f 80/98/85 89/105/85 81/90/85
+f 82/91/86 89/105/86 90/106/86
+f 82/91/87 91/107/87 83/92/87
+f 84/93/88 91/107/88 92/99/88
+f 88/104/89 97/108/89 89/105/89
+f 90/106/90 97/108/90 98/109/90
+f 90/106/91 99/110/91 91/107/91
+f 92/99/92 99/110/92 100/111/92
+f 93/100/93 100/111/93 101/112/93
+f 86/102/94 45/113/94 94/114/94
+f 86/102/95 95/115/95 87/103/95
+f 87/103/96 96/116/96 88/104/96
+f 101/112/97 108/117/97 109/118/97
+f 94/114/98 45/119/98 102/120/98
+f 95/115/99 102/120/99 103/121/99
+f 96/116/100 103/121/100 104/122/100
+f 96/116/101 105/123/101 97/108/101
+f 98/109/102 105/123/102 106/124/102
+f 98/109/103 107/125/103 99/110/103
+f 100/111/104 107/125/104 108/117/104
+f 106/124/105 113/126/105 114/127/105
+f 106/124/106 115/128/106 107/125/106
+f 108/117/107 115/128/107 116/129/107
+f 109/118/108 116/129/108 117/130/108
+f 102/120/109 45/131/109 110/132/109
+f 102/120/110 111/133/110 103/121/110
+f 103/121/111 112/134/111 104/122/111
+f 104/122/112 113/126/112 105/123/112
+f 110/132/113 119/135/113 111/133/113
+f 111/133/114 120/136/114 112/134/114
+f 112/134/115 121/137/115 113/126/115
+f 114/127/116 121/137/116 122/138/116
+f 114/127/117 123/139/117 115/128/117
+f 116/129/118 123/139/118 124/140/118
+f 117/130/119 124/140/119 125/141/119
+f 110/132/120 45/142/120 118/143/120
+f 122/138/121 131/144/121 123/139/121
+f 124/140/122 131/144/122 132/145/122
+f 125/141/123 132/145/123 133/146/123
+f 118/143/124 45/147/124 126/148/124
+f 118/143/125 127/149/125 119/135/125
+f 120/136/126 127/149/126 128/150/126
+f 120/136/127 129/151/127 121/137/127
+f 122/138/128 129/151/128 130/152/128
+f 126/148/129 135/153/129 127/149/129
+f 127/149/130 136/154/130 128/150/130
+f 128/150/131 137/155/131 129/151/131
+f 130/152/132 137/155/132 138/156/132
+f 130/152/133 139/157/133 131/144/133
+f 132/145/134 139/157/134 140/158/134
+f 133/146/135 140/158/135 141/159/135
+f 126/148/136 45/160/136 134/161/136
+f 138/156/137 147/162/137 139/157/137
+f 140/158/138 147/162/138 148/163/138
+f 141/159/139 148/163/139 149/164/139
+f 134/161/140 45/165/140 142/166/140
+f 135/153/141 142/166/141 143/167/141
+f 135/153/142 144/168/142 136/154/142
+f 136/154/143 145/169/143 137/155/143
+f 138/156/144 145/169/144 146/170/144
+f 143/167/145 152/171/145 144/168/145
+f 144/168/146 153/172/146 145/169/146
+f 146/170/147 153/172/147 154/173/147
+f 146/170/148 155/174/148 147/162/148
+f 148/163/149 155/174/149 156/175/149
+f 149/164/150 156/175/150 157/176/150
+f 142/166/151 45/177/151 150/178/151
+f 143/167/152 150/178/152 151/179/152
+f 156/175/153 163/180/153 164/181/153
+f 157/176/154 164/181/154 165/182/154
+f 150/178/155 45/183/155 158/184/155
+f 150/178/156 159/185/156 151/179/156
+f 151/179/157 160/186/157 152/171/157
+f 152/171/158 161/187/158 153/172/158
+f 154/173/159 161/187/159 162/188/159
+f 154/173/160 163/180/160 155/174/160
+f 159/185/161 168/189/161 160/186/161
+f 160/186/162 169/190/162 161/187/162
+f 162/188/163 169/190/163 170/191/163
+f 162/188/164 171/192/164 163/180/164
+f 164/181/165 171/192/165 172/193/165
+f 165/182/166 172/193/166 173/194/166
+f 158/184/167 45/195/167 166/196/167
+f 158/184/168 167/197/168 159/185/168
+f 172/193/169 179/198/169 180/199/169
+f 173/194/170 180/199/170 181/200/170
+f 166/196/171 45/201/171 174/202/171
+f 166/196/172 175/203/172 167/197/172
+f 167/197/173 176/204/173 168/189/173
+f 168/189/174 177/205/174 169/190/174
+f 169/190/175 178/206/175 170/191/175
+f 170/191/176 179/198/176 171/192/176
+f 176/204/177 185/207/177 177/205/177
+f 178/206/178 185/207/178 186/208/178
+f 178/206/179 187/209/179 179/198/179
+f 180/199/180 187/209/180 188/210/180
+f 181/200/181 188/210/181 189/211/181
+f 174/202/182 45/212/182 182/213/182
+f 174/202/183 183/214/183 175/203/183
+f 175/203/184 184/215/184 176/204/184
+f 189/211/185 196/216/185 197/217/185
+f 182/213/186 45/218/186 190/219/186
+f 182/213/187 191/220/187 183/214/187
+f 184/215/188 191/220/188 192/221/188
+f 184/215/189 193/222/189 185/207/189
+f 186/208/190 193/222/190 194/223/190
+f 186/208/191 195/224/191 187/209/191
+f 188/210/192 195/224/192 196/216/192
+f 194/225/193 201/226/193 202/227/193
+f 194/225/194 203/228/194 195/229/194
+f 196/230/195 203/228/195 204/231/195
+f 197/232/196 204/231/196 205/233/196
+f 190/234/197 45/235/197 198/236/197
+f 190/234/198 199/237/198 191/238/198
+f 192/239/199 199/237/199 200/240/199
+f 192/239/200 201/226/200 193/241/200
+f 198/236/201 45/242/201 206/243/201
+f 198/236/202 207/244/202 199/237/202
+f 200/240/203 207/244/203 208/245/203
+f 200/240/204 209/246/204 201/226/204
+f 202/227/205 209/246/205 210/247/205
+f 202/227/206 211/248/206 203/228/206
+f 204/231/207 211/248/207 212/249/207
+f 205/233/208 212/249/208 213/250/208
+f 210/247/209 217/251/209 218/252/209
+f 210/247/210 219/253/210 211/248/210
+f 212/249/211 219/253/211 220/254/211
+f 213/250/212 220/254/212 221/255/212
+f 206/243/213 45/256/213 214/257/213
+f 207/244/214 214/257/214 215/258/214
+f 207/244/215 216/259/215 208/245/215
+f 208/245/216 217/251/216 209/246/216
+f 214/257/217 223/260/217 215/258/217
+f 216/259/218 223/260/218 224/261/218
+f 216/259/219 225/262/219 217/251/219
+f 218/252/220 225/262/220 226/263/220
+f 218/252/221 227/264/221 219/253/221
+f 220/254/222 227/264/222 228/265/222
+f 221/255/223 228/265/223 229/266/223
+f 214/257/224 45/267/224 222/268/224
+f 226/263/225 235/269/225 227/264/225
+f 228/265/226 235/269/226 236/270/226
+f 229/266/227 236/270/227 237/271/227
+f 222/268/228 45/272/228 230/273/228
+f 222/268/229 231/274/229 223/260/229
+f 224/261/230 231/274/230 232/275/230
+f 224/261/231 233/276/231 225/262/231
+f 226/263/232 233/276/232 234/277/232
+f 231/274/233 238/278/233 239/279/233
+f 231/274/234 240/280/234 232/275/234
+f 232/275/235 241/281/235 233/276/235
+f 234/277/236 241/281/236 242/282/236
+f 234/277/237 243/283/237 235/269/237
+f 236/270/238 243/283/238 244/284/238
+f 237/271/239 244/284/239 245/285/239
+f 230/273/240 45/286/240 238/278/240
+f 242/282/241 251/287/241 243/283/241
+f 244/284/242 251/287/242 252/288/242
+f 245/285/243 252/288/243 253/289/243
+f 238/278/244 45/290/244 246/291/244
+f 238/278/245 247/292/245 239/279/245
+f 240/280/246 247/292/246 248/293/246
+f 240/280/247 249/294/247 241/281/247
+f 242/282/248 249/294/248 250/295/248
+f 248/293/249 255/17/249 1/1/249
+f 249/294/250 1/1/250 256/4/250
+f 250/295/251 256/4/251 2/6/251
+f 251/287/252 2/6/252 257/8/252
+f 252/288/253 257/8/253 3/10/253
+f 253/289/254 3/10/254 4/13/254
+f 246/291/255 45/296/255 254/14/255
+f 247/292/256 254/14/256 255/17/256
+f 1/1/1 255/17/1 6/2/1
+f 256/4/2 1/1/2 7/3/2
+f 2/6/3 256/4/3 8/5/3
+f 257/8/4 2/6/4 9/7/4
+f 3/10/5 257/8/5 10/9/5
+f 3/10/257 11/11/257 12/12/257
+f 255/17/8 254/14/8 5/16/8
+f 5/16/10 13/19/10 14/20/10
+f 6/2/11 14/20/11 15/21/11
+f 7/3/12 15/21/12 16/22/12
+f 8/5/13 16/22/13 17/23/13
+f 9/7/14 17/23/14 18/24/14
+f 11/11/15 10/9/15 18/24/15
+f 11/11/16 19/25/16 20/26/16
+f 16/22/17 24/35/17 25/27/17
+f 17/23/18 25/27/18 26/28/18
+f 18/24/19 26/28/19 27/29/19
+f 19/25/20 27/29/20 28/30/20
+f 13/19/22 21/32/22 22/33/22
+f 14/20/258 22/33/258 23/34/258
+f 15/21/24 23/34/24 24/35/24
+f 21/32/25 29/44/25 30/36/25
+f 22/33/26 30/36/26 31/37/26
+f 23/34/27 31/37/27 32/38/27
+f 24/35/28 32/38/28 33/39/28
+f 25/27/29 33/39/29 34/40/29
+f 27/29/30 26/28/30 34/40/30
+f 28/30/31 27/29/31 35/41/31
+f 33/39/33 41/53/33 42/45/33
+f 35/41/34 34/40/34 42/45/34
+f 36/42/259 35/41/259 43/46/259
+f 29/44/37 37/49/37 38/50/37
+f 30/36/38 38/50/38 39/51/38
+f 31/37/39 39/51/39 40/52/39
+f 33/39/40 32/38/40 40/52/40
+f 38/50/260 47/62/260 48/54/260
+f 39/51/42 48/54/42 49/55/42
+f 41/53/43 40/52/43 49/55/43
+f 41/53/44 50/56/44 51/57/44
+f 43/46/45 42/45/45 51/57/45
+f 44/47/46 43/46/46 52/58/46
+f 37/49/48 46/61/48 47/62/48
+f 52/58/49 51/57/49 59/63/49
+f 53/59/50 52/58/50 60/64/50
+f 47/62/52 46/61/52 54/67/52
+f 47/62/53 55/68/53 56/69/53
+f 48/54/54 56/69/54 57/70/54
+f 50/56/55 49/55/55 57/70/55
+f 50/56/56 58/71/56 59/63/56
+f 55/68/57 63/80/57 64/72/57
+f 56/69/58 64/72/58 65/73/58
+f 58/71/59 57/70/59 65/73/59
+f 58/71/60 66/74/60 67/75/60
+f 60/64/61 59/63/61 67/75/61
+f 61/65/261 60/64/261 68/76/261
+f 55/68/64 54/67/64 62/79/64
+f 68/76/65 67/75/65 75/81/65
+f 69/77/262 68/76/262 76/82/262
+f 62/79/68 70/85/68 71/86/68
+f 63/80/69 71/86/69 72/87/69
+f 64/72/70 72/87/70 73/88/70
+f 66/74/71 65/73/71 73/88/71
+f 66/74/72 74/89/72 75/81/72
+f 72/87/73 80/98/73 81/90/73
+f 74/89/74 73/88/74 81/90/74
+f 74/89/75 82/91/75 83/92/75
+f 76/82/76 75/81/76 83/92/76
+f 77/83/77 76/82/77 84/93/77
+f 70/85/79 78/96/79 79/97/79
+f 72/87/80 71/86/80 79/97/80
+f 85/94/81 84/93/81 92/99/81
+f 78/96/83 86/102/83 87/103/83
+f 80/98/263 79/97/263 87/103/263
+f 80/98/85 88/104/85 89/105/85
+f 82/91/86 81/90/86 89/105/86
+f 82/91/87 90/106/87 91/107/87
+f 84/93/88 83/92/88 91/107/88
+f 88/104/89 96/116/89 97/108/89
+f 90/106/90 89/105/90 97/108/90
+f 90/106/91 98/109/91 99/110/91
+f 92/99/92 91/107/92 99/110/92
+f 93/100/93 92/99/93 100/111/93
+f 86/102/264 94/114/264 95/115/264
+f 87/103/96 95/115/96 96/116/96
+f 101/112/97 100/111/97 108/117/97
+f 95/115/99 94/114/99 102/120/99
+f 96/116/100 95/115/100 103/121/100
+f 96/116/101 104/122/101 105/123/101
+f 98/109/102 97/108/102 105/123/102
+f 98/109/103 106/124/103 107/125/103
+f 100/111/104 99/110/104 107/125/104
+f 106/124/105 105/123/105 113/126/105
+f 106/124/106 114/127/106 115/128/106
+f 108/117/107 107/125/107 115/128/107
+f 109/118/108 108/117/108 116/129/108
+f 102/120/110 110/132/110 111/133/110
+f 103/121/111 111/133/111 112/134/111
+f 104/122/112 112/134/112 113/126/112
+f 110/132/113 118/143/113 119/135/113
+f 111/133/114 119/135/114 120/136/114
+f 112/134/115 120/136/115 121/137/115
+f 114/127/116 113/126/116 121/137/116
+f 114/127/117 122/138/117 123/139/117
+f 116/129/118 115/128/118 123/139/118
+f 117/130/119 116/129/119 124/140/119
+f 122/138/121 130/152/121 131/144/121
+f 124/140/122 123/139/122 131/144/122
+f 125/141/265 124/140/265 132/145/265
+f 118/143/125 126/148/125 127/149/125
+f 120/136/126 119/135/126 127/149/126
+f 120/136/127 128/150/127 129/151/127
+f 122/138/128 121/137/128 129/151/128
+f 126/148/129 134/161/129 135/153/129
+f 127/149/130 135/153/130 136/154/130
+f 128/150/131 136/154/131 137/155/131
+f 130/152/132 129/151/132 137/155/132
+f 130/152/133 138/156/133 139/157/133
+f 132/145/134 131/144/134 139/157/134
+f 133/146/266 132/145/266 140/158/266
+f 138/156/137 146/170/137 147/162/137
+f 140/158/138 139/157/138 147/162/138
+f 141/159/139 140/158/139 148/163/139
+f 135/153/141 134/161/141 142/166/141
+f 135/153/142 143/167/142 144/168/142
+f 136/154/143 144/168/143 145/169/143
+f 138/156/144 137/155/144 145/169/144
+f 143/167/145 151/179/145 152/171/145
+f 144/168/146 152/171/146 153/172/146
+f 146/170/147 145/169/147 153/172/147
+f 146/170/148 154/173/148 155/174/148
+f 148/163/149 147/162/149 155/174/149
+f 149/164/150 148/163/150 156/175/150
+f 143/167/152 142/166/152 150/178/152
+f 156/175/153 155/174/153 163/180/153
+f 157/176/154 156/175/154 164/181/154
+f 150/178/156 158/184/156 159/185/156
+f 151/179/157 159/185/157 160/186/157
+f 152/171/158 160/186/158 161/187/158
+f 154/173/159 153/172/159 161/187/159
+f 154/173/160 162/188/160 163/180/160
+f 159/185/161 167/197/161 168/189/161
+f 160/186/162 168/189/162 169/190/162
+f 162/188/163 161/187/163 169/190/163
+f 162/188/164 170/191/164 171/192/164
+f 164/181/165 163/180/165 171/192/165
+f 165/182/166 164/181/166 172/193/166
+f 158/184/168 166/196/168 167/197/168
+f 172/193/169 171/192/169 179/198/169
+f 173/194/170 172/193/170 180/199/170
+f 166/196/172 174/202/172 175/203/172
+f 167/197/267 175/203/267 176/204/267
+f 168/189/174 176/204/174 177/205/174
+f 169/190/175 177/205/175 178/206/175
+f 170/191/176 178/206/176 179/198/176
+f 176/204/177 184/215/177 185/207/177
+f 178/206/178 177/205/178 185/207/178
+f 178/206/179 186/208/179 187/209/179
+f 180/199/180 179/198/180 187/209/180
+f 181/200/181 180/199/181 188/210/181
+f 174/202/183 182/213/183 183/214/183
+f 175/203/184 183/214/184 184/215/184
+f 189/211/185 188/210/185 196/216/185
+f 182/213/187 190/219/187 191/220/187
+f 184/215/188 183/214/188 191/220/188
+f 184/215/189 192/221/189 193/222/189
+f 186/208/190 185/207/190 193/222/190
+f 186/208/191 194/223/191 195/224/191
+f 188/210/192 187/209/192 195/224/192
+f 194/225/193 193/241/193 201/226/193
+f 194/225/194 202/227/194 203/228/194
+f 196/230/195 195/229/195 203/228/195
+f 197/232/196 196/230/196 204/231/196
+f 190/234/198 198/236/198 199/237/198
+f 192/239/199 191/238/199 199/237/199
+f 192/239/200 200/240/200 201/226/200
+f 198/236/202 206/243/202 207/244/202
+f 200/240/203 199/237/203 207/244/203
+f 200/240/204 208/245/204 209/246/204
+f 202/227/205 201/226/205 209/246/205
+f 202/227/206 210/247/206 211/248/206
+f 204/231/207 203/228/207 211/248/207
+f 205/233/208 204/231/208 212/249/208
+f 210/247/209 209/246/209 217/251/209
+f 210/247/210 218/252/210 219/253/210
+f 212/249/211 211/248/211 219/253/211
+f 213/250/212 212/249/212 220/254/212
+f 207/244/214 206/243/214 214/257/214
+f 207/244/268 215/258/268 216/259/268
+f 208/245/216 216/259/216 217/251/216
+f 214/257/269 222/268/269 223/260/269
+f 216/259/218 215/258/218 223/260/218
+f 216/259/219 224/261/219 225/262/219
+f 218/252/220 217/251/220 225/262/220
+f 218/252/221 226/263/221 227/264/221
+f 220/254/222 219/253/222 227/264/222
+f 221/255/223 220/254/223 228/265/223
+f 226/263/225 234/277/225 235/269/225
+f 228/265/226 227/264/226 235/269/226
+f 229/266/227 228/265/227 236/270/227
+f 222/268/229 230/273/229 231/274/229
+f 224/261/230 223/260/230 231/274/230
+f 224/261/231 232/275/231 233/276/231
+f 226/263/232 225/262/232 233/276/232
+f 231/274/233 230/273/233 238/278/233
+f 231/274/270 239/279/270 240/280/270
+f 232/275/235 240/280/235 241/281/235
+f 234/277/236 233/276/236 241/281/236
+f 234/277/237 242/282/237 243/283/237
+f 236/270/238 235/269/238 243/283/238
+f 237/271/239 236/270/239 244/284/239
+f 242/282/241 250/295/241 251/287/241
+f 244/284/242 243/283/242 251/287/242
+f 245/285/243 244/284/243 252/288/243
+f 238/278/245 246/291/245 247/292/245
+f 240/280/246 239/279/246 247/292/246
+f 240/280/247 248/293/247 249/294/247
+f 242/282/248 241/281/248 249/294/248
+f 248/293/249 247/292/249 255/17/249
+f 249/294/250 248/293/250 1/1/250
+f 250/295/251 249/294/251 256/4/251
+f 251/287/252 250/295/252 2/6/252
+f 252/288/253 251/287/253 257/8/253
+f 253/289/254 252/288/254 3/10/254
+f 247/292/256 246/291/256 254/14/256
diff --git a/assets/tube.mtl b/assets/tube.mtl
new file mode 100644
index 0000000..f231bdf
--- /dev/null
+++ b/assets/tube.mtl
@@ -0,0 +1,10 @@
+# Blender MTL File: 'None'
+# Material Count: 1
+
+newmtl None
+Ns 500
+Ka 0.8 0.8 0.8
+Kd 0.8 0.8 0.8
+Ks 0.8 0.8 0.8
+d 1
+illum 2
diff --git a/assets/tube.obj b/assets/tube.obj
new file mode 100644
index 0000000..b1b1616
--- /dev/null
+++ b/assets/tube.obj
@@ -0,0 +1,232 @@
+# Blender v3.5.1 OBJ File: ''
+# www.blender.org
+mtllib tube.mtl
+o Cylinder
+v 0.000000 -1.000000 -1.000000
+v 0.000000 1.000000 -1.000000
+v 0.195090 -1.000000 -0.980785
+v 0.195090 1.000000 -0.980785
+v 0.382683 -1.000000 -0.923880
+v 0.382683 1.000000 -0.923880
+v 0.555570 -1.000000 -0.831470
+v 0.555570 1.000000 -0.831470
+v 0.707107 -1.000000 -0.707107
+v 0.707107 1.000000 -0.707107
+v 0.831470 -1.000000 -0.555570
+v 0.831470 1.000000 -0.555570
+v 0.923880 -1.000000 -0.382683
+v 0.923880 1.000000 -0.382683
+v 0.980785 -1.000000 -0.195090
+v 0.980785 1.000000 -0.195090
+v 1.000000 -1.000000 0.000000
+v 1.000000 1.000000 0.000000
+v 0.980785 -1.000000 0.195090
+v 0.980785 1.000000 0.195090
+v 0.923880 -1.000000 0.382683
+v 0.923880 1.000000 0.382683
+v 0.831470 -1.000000 0.555570
+v 0.831470 1.000000 0.555570
+v 0.707107 -1.000000 0.707107
+v 0.707107 1.000000 0.707107
+v 0.555570 -1.000000 0.831470
+v 0.555570 1.000000 0.831470
+v 0.382683 -1.000000 0.923880
+v 0.382683 1.000000 0.923880
+v 0.195090 -1.000000 0.980785
+v 0.195090 1.000000 0.980785
+v 0.000000 -1.000000 1.000000
+v 0.000000 1.000000 1.000000
+v -0.195090 -1.000000 0.980785
+v -0.195090 1.000000 0.980785
+v -0.382683 -1.000000 0.923880
+v -0.382683 1.000000 0.923880
+v -0.555570 -1.000000 0.831470
+v -0.555570 1.000000 0.831470
+v -0.707107 -1.000000 0.707107
+v -0.707107 1.000000 0.707107
+v -0.831470 -1.000000 0.555570
+v -0.831470 1.000000 0.555570
+v -0.923880 -1.000000 0.382683
+v -0.923880 1.000000 0.382683
+v -0.980785 -1.000000 0.195090
+v -0.980785 1.000000 0.195090
+v -1.000000 -1.000000 0.000000
+v -1.000000 1.000000 0.000000
+v -0.980785 -1.000000 -0.195090
+v -0.980785 1.000000 -0.195090
+v -0.923880 -1.000000 -0.382683
+v -0.923880 1.000000 -0.382683
+v -0.831470 -1.000000 -0.555570
+v -0.831470 1.000000 -0.555570
+v -0.707107 -1.000000 -0.707107
+v -0.707107 1.000000 -0.707107
+v -0.555570 -1.000000 -0.831470
+v -0.555570 1.000000 -0.831470
+v -0.382683 -1.000000 -0.923880
+v -0.382683 1.000000 -0.923880
+v -0.195090 -1.000000 -0.980785
+v -0.195090 1.000000 -0.980785
+vt 1.000000 1.000000
+vt 0.968750 0.000000
+vt 1.000000 0.000000
+vt 0.968750 1.000000
+vt 0.937500 0.000000
+vt 0.937500 1.000000
+vt 0.906250 0.000000
+vt 0.906250 1.000000
+vt 0.875000 0.000000
+vt 0.875000 1.000000
+vt 0.843750 0.000000
+vt 0.843750 1.000000
+vt 0.812500 0.000000
+vt 0.812500 1.000000
+vt 0.781250 0.000000
+vt 0.781250 1.000000
+vt 0.750000 0.000000
+vt 0.750000 1.000000
+vt 0.718750 0.000000
+vt 0.718750 1.000000
+vt 0.687500 0.000000
+vt 0.687500 1.000000
+vt 0.656250 0.000000
+vt 0.656250 1.000000
+vt 0.625000 0.000000
+vt 0.625000 1.000000
+vt 0.593750 0.000000
+vt 0.593750 1.000000
+vt 0.562500 0.000000
+vt 0.562500 1.000000
+vt 0.531250 0.000000
+vt 0.531250 1.000000
+vt 0.500000 0.000000
+vt 0.500000 1.000000
+vt 0.468750 0.000000
+vt 0.468750 1.000000
+vt 0.437500 0.000000
+vt 0.437500 1.000000
+vt 0.406250 0.000000
+vt 0.406250 1.000000
+vt 0.375000 0.000000
+vt 0.375000 1.000000
+vt 0.343750 0.000000
+vt 0.343750 1.000000
+vt 0.312500 0.000000
+vt 0.312500 1.000000
+vt 0.281250 0.000000
+vt 0.281250 1.000000
+vt 0.250000 0.000000
+vt 0.250000 1.000000
+vt 0.218750 0.000000
+vt 0.218750 1.000000
+vt 0.187500 0.000000
+vt 0.187500 1.000000
+vt 0.156250 0.000000
+vt 0.156250 1.000000
+vt 0.125000 0.000000
+vt 0.125000 1.000000
+vt 0.093750 0.000000
+vt 0.093750 1.000000
+vt 0.062500 0.000000
+vt 0.062500 1.000000
+vt 0.031250 0.000000
+vt 0.031250 1.000000
+vt 0.000000 0.000000
+vt 0.000000 1.000000
+vn 0.0980 0.0000 -0.9952
+vn 0.2903 0.0000 -0.9569
+vn 0.4714 0.0000 -0.8819
+vn 0.6344 0.0000 -0.7730
+vn 0.7730 0.0000 -0.6344
+vn 0.8819 0.0000 -0.4714
+vn 0.9569 0.0000 -0.2903
+vn 0.9952 0.0000 -0.0980
+vn 0.9952 0.0000 0.0980
+vn 0.9569 0.0000 0.2903
+vn 0.8819 0.0000 0.4714
+vn 0.7730 0.0000 0.6344
+vn 0.6344 0.0000 0.7730
+vn 0.4714 0.0000 0.8819
+vn 0.2903 0.0000 0.9569
+vn 0.0980 0.0000 0.9952
+vn -0.0980 0.0000 0.9952
+vn -0.2903 0.0000 0.9569
+vn -0.4714 0.0000 0.8819
+vn -0.6344 0.0000 0.7730
+vn -0.7730 0.0000 0.6344
+vn -0.8819 0.0000 0.4714
+vn -0.9569 0.0000 0.2903
+vn -0.9952 0.0000 0.0980
+vn -0.9952 0.0000 -0.0980
+vn -0.9569 0.0000 -0.2903
+vn -0.8819 0.0000 -0.4714
+vn -0.7730 0.0000 -0.6344
+vn -0.6344 0.0000 -0.7730
+vn -0.4714 0.0000 -0.8819
+vn -0.2903 0.0000 -0.9569
+vn -0.0980 0.0000 -0.9952
+usemtl None
+s off
+f 2/1/1 3/2/1 1/3/1
+f 4/4/2 5/5/2 3/2/2
+f 6/6/3 7/7/3 5/5/3
+f 8/8/4 9/9/4 7/7/4
+f 10/10/5 11/11/5 9/9/5
+f 12/12/6 13/13/6 11/11/6
+f 14/14/7 15/15/7 13/13/7
+f 16/16/8 17/17/8 15/15/8
+f 18/18/9 19/19/9 17/17/9
+f 20/20/10 21/21/10 19/19/10
+f 22/22/11 23/23/11 21/21/11
+f 24/24/12 25/25/12 23/23/12
+f 26/26/13 27/27/13 25/25/13
+f 28/28/14 29/29/14 27/27/14
+f 30/30/15 31/31/15 29/29/15
+f 32/32/16 33/33/16 31/31/16
+f 34/34/17 35/35/17 33/33/17
+f 36/36/18 37/37/18 35/35/18
+f 38/38/19 39/39/19 37/37/19
+f 40/40/20 41/41/20 39/39/20
+f 42/42/21 43/43/21 41/41/21
+f 44/44/22 45/45/22 43/43/22
+f 46/46/23 47/47/23 45/45/23
+f 48/48/24 49/49/24 47/47/24
+f 50/50/25 51/51/25 49/49/25
+f 52/52/26 53/53/26 51/51/26
+f 54/54/27 55/55/27 53/53/27
+f 56/56/28 57/57/28 55/55/28
+f 58/58/29 59/59/29 57/57/29
+f 60/60/30 61/61/30 59/59/30
+f 62/62/31 63/63/31 61/61/31
+f 64/64/32 1/65/32 63/63/32
+f 2/1/1 4/4/1 3/2/1
+f 4/4/2 6/6/2 5/5/2
+f 6/6/3 8/8/3 7/7/3
+f 8/8/4 10/10/4 9/9/4
+f 10/10/5 12/12/5 11/11/5
+f 12/12/6 14/14/6 13/13/6
+f 14/14/7 16/16/7 15/15/7
+f 16/16/8 18/18/8 17/17/8
+f 18/18/9 20/20/9 19/19/9
+f 20/20/10 22/22/10 21/21/10
+f 22/22/11 24/24/11 23/23/11
+f 24/24/12 26/26/12 25/25/12
+f 26/26/13 28/28/13 27/27/13
+f 28/28/14 30/30/14 29/29/14
+f 30/30/15 32/32/15 31/31/15
+f 32/32/16 34/34/16 33/33/16
+f 34/34/17 36/36/17 35/35/17
+f 36/36/18 38/38/18 37/37/18
+f 38/38/19 40/40/19 39/39/19
+f 40/40/20 42/42/20 41/41/20
+f 42/42/21 44/44/21 43/43/21
+f 44/44/22 46/46/22 45/45/22
+f 46/46/23 48/48/23 47/47/23
+f 48/48/24 50/50/24 49/49/24
+f 50/50/25 52/52/25 51/51/25
+f 52/52/26 54/54/26 53/53/26
+f 54/54/27 56/56/27 55/55/27
+f 56/56/28 58/58/28 57/57/28
+f 58/58/29 60/60/29 59/59/29
+f 60/60/30 62/62/30 61/61/30
+f 62/62/31 64/64/31 63/63/31
+f 64/64/32 2/66/32 1/65/32
diff --git a/assets/unit_cube.mtl b/assets/unit_cube.mtl
new file mode 100644
index 0000000..f231bdf
--- /dev/null
+++ b/assets/unit_cube.mtl
@@ -0,0 +1,10 @@
+# Blender MTL File: 'None'
+# Material Count: 1
+
+newmtl None
+Ns 500
+Ka 0.8 0.8 0.8
+Kd 0.8 0.8 0.8
+Ks 0.8 0.8 0.8
+d 1
+illum 2
diff --git a/assets/unit_cube.obj b/assets/unit_cube.obj
new file mode 100644
index 0000000..2bed77d
--- /dev/null
+++ b/assets/unit_cube.obj
@@ -0,0 +1,46 @@
+# Blender v3.5.1 OBJ File: ''
+# www.blender.org
+mtllib unit_cube.mtl
+o Cube_Cube.001
+v -0.500000 -0.500000 0.500000
+v -0.500000 0.500000 0.500000
+v -0.500000 -0.500000 -0.500000
+v -0.500000 0.500000 -0.500000
+v 0.500000 -0.500000 0.500000
+v 0.500000 0.500000 0.500000
+v 0.500000 -0.500000 -0.500000
+v 0.500000 0.500000 -0.500000
+vt 0.625000 0.000000
+vt 0.375000 0.250000
+vt 0.375000 0.000000
+vt 0.625000 0.250000
+vt 0.375000 0.500000
+vt 0.625000 0.500000
+vt 0.375000 0.750000
+vt 0.625000 0.750000
+vt 0.375000 1.000000
+vt 0.125000 0.750000
+vt 0.125000 0.500000
+vt 0.875000 0.500000
+vt 0.625000 1.000000
+vt 0.875000 0.750000
+vn -1.0000 0.0000 0.0000
+vn 0.0000 0.0000 -1.0000
+vn 1.0000 0.0000 0.0000
+vn 0.0000 0.0000 1.0000
+vn 0.0000 -1.0000 0.0000
+vn 0.0000 1.0000 0.0000
+usemtl None
+s off
+f 2/1/1 3/2/1 1/3/1
+f 4/4/2 7/5/2 3/2/2
+f 8/6/3 5/7/3 7/5/3
+f 6/8/4 1/9/4 5/7/4
+f 7/5/5 1/10/5 3/11/5
+f 4/12/6 6/8/6 8/6/6
+f 2/1/1 4/4/1 3/2/1
+f 4/4/2 8/6/2 7/5/2
+f 8/6/3 6/8/3 5/7/3
+f 6/8/4 2/13/4 1/9/4
+f 7/5/5 5/7/5 1/10/5
+f 4/12/6 2/14/6 6/8/6
diff --git a/honey/asset/mesh.lua b/honey/asset/mesh.lua
index f912577..8f02a88 100644
--- a/honey/asset/mesh.lua
+++ b/honey/asset/mesh.lua
@@ -41,7 +41,7 @@ local function loadShape(shape, attrib, debug)
end
end
- if false then
+ if true then
-- helpful block for creating the builtin meshes
io.write("{")
for i, vertex in ipairs(vertices) do
@@ -1787,102 +1787,198 @@ init = function()
builtin(
"builtin.tube",
{
- 0.000000, -1.000000, -1.000000, 0.098000, 0.000000, -0.995200, 1.000000, 0.000000,
0.000000, 1.000000, -1.000000, 0.098000, 0.000000, -0.995200, 1.000000, 1.000000,
- 0.195090, 1.000000, -0.980785, 0.098000, 0.000000, -0.995200, 0.968750, 1.000000,
+ 0.195090, -1.000000, -0.980785, 0.098000, 0.000000, -0.995200, 0.968750, 0.000000,
0.000000, -1.000000, -1.000000, 0.098000, 0.000000, -0.995200, 1.000000, 0.000000,
+ 0.195090, 1.000000, -0.980785, 0.290300, 0.000000, -0.956900, 0.968750, 1.000000,
+ 0.382683, -1.000000, -0.923880, 0.290300, 0.000000, -0.956900, 0.937500, 0.000000,
+ 0.195090, -1.000000, -0.980785, 0.290300, 0.000000, -0.956900, 0.968750, 0.000000,
+ 0.382683, 1.000000, -0.923880, 0.471400, 0.000000, -0.881900, 0.937500, 1.000000,
+ 0.555570, -1.000000, -0.831470, 0.471400, 0.000000, -0.881900, 0.906250, 0.000000,
+ 0.382683, -1.000000, -0.923880, 0.471400, 0.000000, -0.881900, 0.937500, 0.000000,
+ 0.555570, 1.000000, -0.831470, 0.634400, 0.000000, -0.773000, 0.906250, 1.000000,
+ 0.707107, -1.000000, -0.707107, 0.634400, 0.000000, -0.773000, 0.875000, 0.000000,
+ 0.555570, -1.000000, -0.831470, 0.634400, 0.000000, -0.773000, 0.906250, 0.000000,
+ 0.707107, 1.000000, -0.707107, 0.773000, 0.000000, -0.634400, 0.875000, 1.000000,
+ 0.831470, -1.000000, -0.555570, 0.773000, 0.000000, -0.634400, 0.843750, 0.000000,
+ 0.707107, -1.000000, -0.707107, 0.773000, 0.000000, -0.634400, 0.875000, 0.000000,
+ 0.831470, 1.000000, -0.555570, 0.881900, 0.000000, -0.471400, 0.843750, 1.000000,
+ 0.923880, -1.000000, -0.382683, 0.881900, 0.000000, -0.471400, 0.812500, 0.000000,
+ 0.831470, -1.000000, -0.555570, 0.881900, 0.000000, -0.471400, 0.843750, 0.000000,
+ 0.923880, 1.000000, -0.382683, 0.956900, 0.000000, -0.290300, 0.812500, 1.000000,
+ 0.980785, -1.000000, -0.195090, 0.956900, 0.000000, -0.290300, 0.781250, 0.000000,
+ 0.923880, -1.000000, -0.382683, 0.956900, 0.000000, -0.290300, 0.812500, 0.000000,
+ 0.980785, 1.000000, -0.195090, 0.995200, 0.000000, -0.098000, 0.781250, 1.000000,
+ 1.000000, -1.000000, 0.000000, 0.995200, 0.000000, -0.098000, 0.750000, 0.000000,
+ 0.980785, -1.000000, -0.195090, 0.995200, 0.000000, -0.098000, 0.781250, 0.000000,
+ 1.000000, 1.000000, 0.000000, 0.995200, 0.000000, 0.098000, 0.750000, 1.000000,
+ 0.980785, -1.000000, 0.195090, 0.995200, 0.000000, 0.098000, 0.718750, 0.000000,
+ 1.000000, -1.000000, 0.000000, 0.995200, 0.000000, 0.098000, 0.750000, 0.000000,
+ 0.980785, 1.000000, 0.195090, 0.956900, 0.000000, 0.290300, 0.718750, 1.000000,
+ 0.923880, -1.000000, 0.382683, 0.956900, 0.000000, 0.290300, 0.687500, 0.000000,
+ 0.980785, -1.000000, 0.195090, 0.956900, 0.000000, 0.290300, 0.718750, 0.000000,
+ 0.923880, 1.000000, 0.382683, 0.881900, 0.000000, 0.471400, 0.687500, 1.000000,
+ 0.831470, -1.000000, 0.555570, 0.881900, 0.000000, 0.471400, 0.656250, 0.000000,
+ 0.923880, -1.000000, 0.382683, 0.881900, 0.000000, 0.471400, 0.687500, 0.000000,
+ 0.831470, 1.000000, 0.555570, 0.773000, 0.000000, 0.634400, 0.656250, 1.000000,
+ 0.707107, -1.000000, 0.707107, 0.773000, 0.000000, 0.634400, 0.625000, 0.000000,
+ 0.831470, -1.000000, 0.555570, 0.773000, 0.000000, 0.634400, 0.656250, 0.000000,
+ 0.707107, 1.000000, 0.707107, 0.634400, 0.000000, 0.773000, 0.625000, 1.000000,
+ 0.555570, -1.000000, 0.831470, 0.634400, 0.000000, 0.773000, 0.593750, 0.000000,
+ 0.707107, -1.000000, 0.707107, 0.634400, 0.000000, 0.773000, 0.625000, 0.000000,
+ 0.555570, 1.000000, 0.831470, 0.471400, 0.000000, 0.881900, 0.593750, 1.000000,
+ 0.382683, -1.000000, 0.923880, 0.471400, 0.000000, 0.881900, 0.562500, 0.000000,
+ 0.555570, -1.000000, 0.831470, 0.471400, 0.000000, 0.881900, 0.593750, 0.000000,
+ 0.382683, 1.000000, 0.923880, 0.290300, 0.000000, 0.956900, 0.562500, 1.000000,
+ 0.195090, -1.000000, 0.980785, 0.290300, 0.000000, 0.956900, 0.531250, 0.000000,
+ 0.382683, -1.000000, 0.923880, 0.290300, 0.000000, 0.956900, 0.562500, 0.000000,
+ 0.195090, 1.000000, 0.980785, 0.098000, 0.000000, 0.995200, 0.531250, 1.000000,
+ 0.000000, -1.000000, 1.000000, 0.098000, 0.000000, 0.995200, 0.500000, 0.000000,
+ 0.195090, -1.000000, 0.980785, 0.098000, 0.000000, 0.995200, 0.531250, 0.000000,
+ 0.000000, 1.000000, 1.000000, -0.098000, 0.000000, 0.995200, 0.500000, 1.000000,
+ -0.195090, -1.000000, 0.980785, -0.098000, 0.000000, 0.995200, 0.468750, 0.000000,
+ 0.000000, -1.000000, 1.000000, -0.098000, 0.000000, 0.995200, 0.500000, 0.000000,
+ -0.195090, 1.000000, 0.980785, -0.290300, 0.000000, 0.956900, 0.468750, 1.000000,
+ -0.382683, -1.000000, 0.923880, -0.290300, 0.000000, 0.956900, 0.437500, 0.000000,
+ -0.195090, -1.000000, 0.980785, -0.290300, 0.000000, 0.956900, 0.468750, 0.000000,
+ -0.382683, 1.000000, 0.923880, -0.471400, 0.000000, 0.881900, 0.437500, 1.000000,
+ -0.555570, -1.000000, 0.831470, -0.471400, 0.000000, 0.881900, 0.406250, 0.000000,
+ -0.382683, -1.000000, 0.923880, -0.471400, 0.000000, 0.881900, 0.437500, 0.000000,
+ -0.555570, 1.000000, 0.831470, -0.634400, 0.000000, 0.773000, 0.406250, 1.000000,
+ -0.707107, -1.000000, 0.707107, -0.634400, 0.000000, 0.773000, 0.375000, 0.000000,
+ -0.555570, -1.000000, 0.831470, -0.634400, 0.000000, 0.773000, 0.406250, 0.000000,
+ -0.707107, 1.000000, 0.707107, -0.773000, 0.000000, 0.634400, 0.375000, 1.000000,
+ -0.831470, -1.000000, 0.555570, -0.773000, 0.000000, 0.634400, 0.343750, 0.000000,
+ -0.707107, -1.000000, 0.707107, -0.773000, 0.000000, 0.634400, 0.375000, 0.000000,
+ -0.831470, 1.000000, 0.555570, -0.881900, 0.000000, 0.471400, 0.343750, 1.000000,
+ -0.923880, -1.000000, 0.382683, -0.881900, 0.000000, 0.471400, 0.312500, 0.000000,
+ -0.831470, -1.000000, 0.555570, -0.881900, 0.000000, 0.471400, 0.343750, 0.000000,
+ -0.923880, 1.000000, 0.382683, -0.956900, 0.000000, 0.290300, 0.312500, 1.000000,
+ -0.980785, -1.000000, 0.195090, -0.956900, 0.000000, 0.290300, 0.281250, 0.000000,
+ -0.923880, -1.000000, 0.382683, -0.956900, 0.000000, 0.290300, 0.312500, 0.000000,
+ -0.980785, 1.000000, 0.195090, -0.995200, 0.000000, 0.098000, 0.281250, 1.000000,
+ -1.000000, -1.000000, 0.000000, -0.995200, 0.000000, 0.098000, 0.250000, 0.000000,
+ -0.980785, -1.000000, 0.195090, -0.995200, 0.000000, 0.098000, 0.281250, 0.000000,
+ -1.000000, 1.000000, 0.000000, -0.995200, 0.000000, -0.098000, 0.250000, 1.000000,
+ -0.980785, -1.000000, -0.195090, -0.995200, 0.000000, -0.098000, 0.218750, 0.000000,
+ -1.000000, -1.000000, 0.000000, -0.995200, 0.000000, -0.098000, 0.250000, 0.000000,
+ -0.980785, 1.000000, -0.195090, -0.956900, 0.000000, -0.290300, 0.218750, 1.000000,
+ -0.923880, -1.000000, -0.382683, -0.956900, 0.000000, -0.290300, 0.187500, 0.000000,
+ -0.980785, -1.000000, -0.195090, -0.956900, 0.000000, -0.290300, 0.218750, 0.000000,
+ -0.923880, 1.000000, -0.382683, -0.881900, 0.000000, -0.471400, 0.187500, 1.000000,
+ -0.831470, -1.000000, -0.555570, -0.881900, 0.000000, -0.471400, 0.156250, 0.000000,
+ -0.923880, -1.000000, -0.382683, -0.881900, 0.000000, -0.471400, 0.187500, 0.000000,
+ -0.831470, 1.000000, -0.555570, -0.773000, 0.000000, -0.634400, 0.156250, 1.000000,
+ -0.707107, -1.000000, -0.707107, -0.773000, 0.000000, -0.634400, 0.125000, 0.000000,
+ -0.831470, -1.000000, -0.555570, -0.773000, 0.000000, -0.634400, 0.156250, 0.000000,
+ -0.707107, 1.000000, -0.707107, -0.634400, 0.000000, -0.773000, 0.125000, 1.000000,
+ -0.555570, -1.000000, -0.831470, -0.634400, 0.000000, -0.773000, 0.093750, 0.000000,
+ -0.707107, -1.000000, -0.707107, -0.634400, 0.000000, -0.773000, 0.125000, 0.000000,
+ -0.555570, 1.000000, -0.831470, -0.471400, 0.000000, -0.881900, 0.093750, 1.000000,
+ -0.382683, -1.000000, -0.923880, -0.471400, 0.000000, -0.881900, 0.062500, 0.000000,
+ -0.555570, -1.000000, -0.831470, -0.471400, 0.000000, -0.881900, 0.093750, 0.000000,
+ -0.382683, 1.000000, -0.923880, -0.290300, 0.000000, -0.956900, 0.062500, 1.000000,
+ -0.195090, -1.000000, -0.980785, -0.290300, 0.000000, -0.956900, 0.031250, 0.000000,
+ -0.382683, -1.000000, -0.923880, -0.290300, 0.000000, -0.956900, 0.062500, 0.000000,
+ -0.195090, 1.000000, -0.980785, -0.098000, 0.000000, -0.995200, 0.031250, 1.000000,
+ 0.000000, -1.000000, -1.000000, -0.098000, 0.000000, -0.995200, 0.000000, 0.000000,
+ -0.195090, -1.000000, -0.980785, -0.098000, 0.000000, -0.995200, 0.031250, 0.000000,
+ 0.000000, 1.000000, -1.000000, 0.098000, 0.000000, -0.995200, 1.000000, 1.000000,
0.195090, 1.000000, -0.980785, 0.098000, 0.000000, -0.995200, 0.968750, 1.000000,
0.195090, -1.000000, -0.980785, 0.098000, 0.000000, -0.995200, 0.968750, 0.000000,
- 0.195090, -1.000000, -0.980785, 0.290300, 0.000000, -0.956900, 0.968750, 0.000000,
0.195090, 1.000000, -0.980785, 0.290300, 0.000000, -0.956900, 0.968750, 1.000000,
0.382683, 1.000000, -0.923880, 0.290300, 0.000000, -0.956900, 0.937500, 1.000000,
- 0.195090, -1.000000, -0.980785, 0.290300, 0.000000, -0.956900, 0.968750, 0.000000,
- 0.382683, 1.000000, -0.923880, 0.290300, 0.000000, -0.956900, 0.937500, 1.000000,
0.382683, -1.000000, -0.923880, 0.290300, 0.000000, -0.956900, 0.937500, 0.000000,
- 0.382683, -1.000000, -0.923880, 0.471400, 0.000000, -0.881900, 0.937500, 0.000000,
0.382683, 1.000000, -0.923880, 0.471400, 0.000000, -0.881900, 0.937500, 1.000000,
0.555570, 1.000000, -0.831470, 0.471400, 0.000000, -0.881900, 0.906250, 1.000000,
- 0.382683, -1.000000, -0.923880, 0.471400, 0.000000, -0.881900, 0.937500, 0.000000,
- 0.555570, 1.000000, -0.831470, 0.471400, 0.000000, -0.881900, 0.906250, 1.000000,
0.555570, -1.000000, -0.831470, 0.471400, 0.000000, -0.881900, 0.906250, 0.000000,
- 0.555570, -1.000000, -0.831470, 0.634400, 0.000000, -0.773000, 0.906250, 0.000000,
0.555570, 1.000000, -0.831470, 0.634400, 0.000000, -0.773000, 0.906250, 1.000000,
0.707107, 1.000000, -0.707107, 0.634400, 0.000000, -0.773000, 0.875000, 1.000000,
- 0.555570, -1.000000, -0.831470, 0.634400, 0.000000, -0.773000, 0.906250, 0.000000,
- 0.707107, 1.000000, -0.707107, 0.634400, 0.000000, -0.773000, 0.875000, 1.000000,
0.707107, -1.000000, -0.707107, 0.634400, 0.000000, -0.773000, 0.875000, 0.000000,
- 0.707107, -1.000000, -0.707107, 0.773000, 0.000000, -0.634400, 0.875000, 0.000000,
0.707107, 1.000000, -0.707107, 0.773000, 0.000000, -0.634400, 0.875000, 1.000000,
0.831470, 1.000000, -0.555570, 0.773000, 0.000000, -0.634400, 0.843750, 1.000000,
- 0.707107, -1.000000, -0.707107, 0.773000, 0.000000, -0.634400, 0.875000, 0.000000,
- 0.831470, 1.000000, -0.555570, 0.773000, 0.000000, -0.634400, 0.843750, 1.000000,
0.831470, -1.000000, -0.555570, 0.773000, 0.000000, -0.634400, 0.843750, 0.000000,
- 0.831470, -1.000000, -0.555570, 0.881900, 0.000000, -0.471400, 0.843750, 0.000000,
0.831470, 1.000000, -0.555570, 0.881900, 0.000000, -0.471400, 0.843750, 1.000000,
0.923880, 1.000000, -0.382683, 0.881900, 0.000000, -0.471400, 0.812500, 1.000000,
- 0.831470, -1.000000, -0.555570, 0.881900, 0.000000, -0.471400, 0.843750, 0.000000,
- 0.923880, 1.000000, -0.382683, 0.881900, 0.000000, -0.471400, 0.812500, 1.000000,
0.923880, -1.000000, -0.382683, 0.881900, 0.000000, -0.471400, 0.812500, 0.000000,
- 0.923880, -1.000000, -0.382683, 0.956900, 0.000000, -0.290300, 0.812500, 0.000000,
0.923880, 1.000000, -0.382683, 0.956900, 0.000000, -0.290300, 0.812500, 1.000000,
0.980785, 1.000000, -0.195090, 0.956900, 0.000000, -0.290300, 0.781250, 1.000000,
- 0.923880, -1.000000, -0.382683, 0.956900, 0.000000, -0.290300, 0.812500, 0.000000,
- 0.980785, 1.000000, -0.195090, 0.956900, 0.000000, -0.290300, 0.781250, 1.000000,
0.980785, -1.000000, -0.195090, 0.956900, 0.000000, -0.290300, 0.781250, 0.000000,
- 0.980785, -1.000000, -0.195090, 0.995200, 0.000000, -0.098000, 0.781250, 0.000000,
0.980785, 1.000000, -0.195090, 0.995200, 0.000000, -0.098000, 0.781250, 1.000000,
1.000000, 1.000000, 0.000000, 0.995200, 0.000000, -0.098000, 0.750000, 1.000000,
- 0.980785, -1.000000, -0.195090, 0.995200, 0.000000, -0.098000, 0.781250, 0.000000,
- 1.000000, 1.000000, 0.000000, 0.995200, 0.000000, -0.098000, 0.750000, 1.000000,
1.000000, -1.000000, 0.000000, 0.995200, 0.000000, -0.098000, 0.750000, 0.000000,
- 1.000000, -1.000000, 0.000000, 0.995200, 0.000000, 0.098000, 0.750000, 0.000000,
1.000000, 1.000000, 0.000000, 0.995200, 0.000000, 0.098000, 0.750000, 1.000000,
0.980785, 1.000000, 0.195090, 0.995200, 0.000000, 0.098000, 0.718750, 1.000000,
- 1.000000, -1.000000, 0.000000, 0.995200, 0.000000, 0.098000, 0.750000, 0.000000,
- 0.980785, 1.000000, 0.195090, 0.995200, 0.000000, 0.098000, 0.718750, 1.000000,
0.980785, -1.000000, 0.195090, 0.995200, 0.000000, 0.098000, 0.718750, 0.000000,
- 0.980785, -1.000000, 0.195090, 0.956900, 0.000000, 0.290300, 0.718750, 0.000000,
0.980785, 1.000000, 0.195090, 0.956900, 0.000000, 0.290300, 0.718750, 1.000000,
0.923880, 1.000000, 0.382683, 0.956900, 0.000000, 0.290300, 0.687500, 1.000000,
- 0.980785, -1.000000, 0.195090, 0.956900, 0.000000, 0.290300, 0.718750, 0.000000,
- 0.923880, 1.000000, 0.382683, 0.956900, 0.000000, 0.290300, 0.687500, 1.000000,
0.923880, -1.000000, 0.382683, 0.956900, 0.000000, 0.290300, 0.687500, 0.000000,
- 0.923880, -1.000000, 0.382683, 0.881900, 0.000000, 0.471400, 0.687500, 0.000000,
0.923880, 1.000000, 0.382683, 0.881900, 0.000000, 0.471400, 0.687500, 1.000000,
0.831470, 1.000000, 0.555570, 0.881900, 0.000000, 0.471400, 0.656250, 1.000000,
- 0.923880, -1.000000, 0.382683, 0.881900, 0.000000, 0.471400, 0.687500, 0.000000,
- 0.831470, 1.000000, 0.555570, 0.881900, 0.000000, 0.471400, 0.656250, 1.000000,
0.831470, -1.000000, 0.555570, 0.881900, 0.000000, 0.471400, 0.656250, 0.000000,
- 0.831470, -1.000000, 0.555570, 0.773000, 0.000000, 0.634400, 0.656250, 0.000000,
0.831470, 1.000000, 0.555570, 0.773000, 0.000000, 0.634400, 0.656250, 1.000000,
0.707107, 1.000000, 0.707107, 0.773000, 0.000000, 0.634400, 0.625000, 1.000000,
- 0.831470, -1.000000, 0.555570, 0.773000, 0.000000, 0.634400, 0.656250, 0.000000,
- 0.707107, 1.000000, 0.707107, 0.773000, 0.000000, 0.634400, 0.625000, 1.000000,
0.707107, -1.000000, 0.707107, 0.773000, 0.000000, 0.634400, 0.625000, 0.000000,
- 0.707107, -1.000000, 0.707107, 0.634400, 0.000000, 0.773000, 0.625000, 0.000000,
0.707107, 1.000000, 0.707107, 0.634400, 0.000000, 0.773000, 0.625000, 1.000000,
0.555570, 1.000000, 0.831470, 0.634400, 0.000000, 0.773000, 0.593750, 1.000000,
- 0.707107, -1.000000, 0.707107, 0.634400, 0.000000, 0.773000, 0.625000, 0.000000,
- 0.555570, 1.000000, 0.831470, 0.634400, 0.000000, 0.773000, 0.593750, 1.000000,
0.555570, -1.000000, 0.831470, 0.634400, 0.000000, 0.773000, 0.593750, 0.000000,
- 0.555570, -1.000000, 0.831470, 0.471400, 0.000000, 0.881900, 0.593750, 0.000000,
0.555570, 1.000000, 0.831470, 0.471400, 0.000000, 0.881900, 0.593750, 1.000000,
0.382683, 1.000000, 0.923880, 0.471400, 0.000000, 0.881900, 0.562500, 1.000000,
- 0.555570, -1.000000, 0.831470, 0.471400, 0.000000, 0.881900, 0.593750, 0.000000,
- 0.382683, 1.000000, 0.923880, 0.471400, 0.000000, 0.881900, 0.562500, 1.000000,
0.382683, -1.000000, 0.923880, 0.471400, 0.000000, 0.881900, 0.562500, 0.000000,
- 0.382683, -1.000000, 0.923880, 0.290300, 0.000000, 0.956900, 0.562500, 0.000000,
0.382683, 1.000000, 0.923880, 0.290300, 0.000000, 0.956900, 0.562500, 1.000000,
0.195090, 1.000000, 0.980785, 0.290300, 0.000000, 0.956900, 0.531250, 1.000000,
- 0.382683, -1.000000, 0.923880, 0.290300, 0.000000, 0.956900, 0.562500, 0.000000,
- 0.195090, 1.000000, 0.980785, 0.290300, 0.000000, 0.956900, 0.531250, 1.000000,
0.195090, -1.000000, 0.980785, 0.290300, 0.000000, 0.956900, 0.531250, 0.000000,
- 0.195090, -1.000000, 0.980785, 0.098000, 0.000000, 0.995200, 0.531250, 0.000000,
0.195090, 1.000000, 0.980785, 0.098000, 0.000000, 0.995200, 0.531250, 1.000000,
0.000000, 1.000000, 1.000000, 0.098000, 0.000000, 0.995200, 0.500000, 1.000000,
- 0.195090, -1.000000, 0.980785, 0.098000, 0.000000, 0.995200, 0.531250, 0.000000,
- 0.000000, 1.000000, 1.000000, 0.098000, 0.000000, 0.995200, 0.500000, 1.000000,
0.000000, -1.000000, 1.000000, 0.098000, 0.000000, 0.995200, 0.500000, 0.000000,
+ 0.000000, 1.000000, 1.000000, -0.098000, 0.000000, 0.995200, 0.500000, 1.000000,
+ -0.195090, 1.000000, 0.980785, -0.098000, 0.000000, 0.995200, 0.468750, 1.000000,
+ -0.195090, -1.000000, 0.980785, -0.098000, 0.000000, 0.995200, 0.468750, 0.000000,
+ -0.195090, 1.000000, 0.980785, -0.290300, 0.000000, 0.956900, 0.468750, 1.000000,
+ -0.382683, 1.000000, 0.923880, -0.290300, 0.000000, 0.956900, 0.437500, 1.000000,
+ -0.382683, -1.000000, 0.923880, -0.290300, 0.000000, 0.956900, 0.437500, 0.000000,
+ -0.382683, 1.000000, 0.923880, -0.471400, 0.000000, 0.881900, 0.437500, 1.000000,
+ -0.555570, 1.000000, 0.831470, -0.471400, 0.000000, 0.881900, 0.406250, 1.000000,
+ -0.555570, -1.000000, 0.831470, -0.471400, 0.000000, 0.881900, 0.406250, 0.000000,
+ -0.555570, 1.000000, 0.831470, -0.634400, 0.000000, 0.773000, 0.406250, 1.000000,
+ -0.707107, 1.000000, 0.707107, -0.634400, 0.000000, 0.773000, 0.375000, 1.000000,
+ -0.707107, -1.000000, 0.707107, -0.634400, 0.000000, 0.773000, 0.375000, 0.000000,
+ -0.707107, 1.000000, 0.707107, -0.773000, 0.000000, 0.634400, 0.375000, 1.000000,
+ -0.831470, 1.000000, 0.555570, -0.773000, 0.000000, 0.634400, 0.343750, 1.000000,
+ -0.831470, -1.000000, 0.555570, -0.773000, 0.000000, 0.634400, 0.343750, 0.000000,
+ -0.831470, 1.000000, 0.555570, -0.881900, 0.000000, 0.471400, 0.343750, 1.000000,
+ -0.923880, 1.000000, 0.382683, -0.881900, 0.000000, 0.471400, 0.312500, 1.000000,
+ -0.923880, -1.000000, 0.382683, -0.881900, 0.000000, 0.471400, 0.312500, 0.000000,
+ -0.923880, 1.000000, 0.382683, -0.956900, 0.000000, 0.290300, 0.312500, 1.000000,
+ -0.980785, 1.000000, 0.195090, -0.956900, 0.000000, 0.290300, 0.281250, 1.000000,
+ -0.980785, -1.000000, 0.195090, -0.956900, 0.000000, 0.290300, 0.281250, 0.000000,
+ -0.980785, 1.000000, 0.195090, -0.995200, 0.000000, 0.098000, 0.281250, 1.000000,
+ -1.000000, 1.000000, 0.000000, -0.995200, 0.000000, 0.098000, 0.250000, 1.000000,
+ -1.000000, -1.000000, 0.000000, -0.995200, 0.000000, 0.098000, 0.250000, 0.000000,
+ -1.000000, 1.000000, 0.000000, -0.995200, 0.000000, -0.098000, 0.250000, 1.000000,
+ -0.980785, 1.000000, -0.195090, -0.995200, 0.000000, -0.098000, 0.218750, 1.000000,
+ -0.980785, -1.000000, -0.195090, -0.995200, 0.000000, -0.098000, 0.218750, 0.000000,
+ -0.980785, 1.000000, -0.195090, -0.956900, 0.000000, -0.290300, 0.218750, 1.000000,
+ -0.923880, 1.000000, -0.382683, -0.956900, 0.000000, -0.290300, 0.187500, 1.000000,
+ -0.923880, -1.000000, -0.382683, -0.956900, 0.000000, -0.290300, 0.187500, 0.000000,
+ -0.923880, 1.000000, -0.382683, -0.881900, 0.000000, -0.471400, 0.187500, 1.000000,
+ -0.831470, 1.000000, -0.555570, -0.881900, 0.000000, -0.471400, 0.156250, 1.000000,
+ -0.831470, -1.000000, -0.555570, -0.881900, 0.000000, -0.471400, 0.156250, 0.000000,
+ -0.831470, 1.000000, -0.555570, -0.773000, 0.000000, -0.634400, 0.156250, 1.000000,
+ -0.707107, 1.000000, -0.707107, -0.773000, 0.000000, -0.634400, 0.125000, 1.000000,
+ -0.707107, -1.000000, -0.707107, -0.773000, 0.000000, -0.634400, 0.125000, 0.000000,
+ -0.707107, 1.000000, -0.707107, -0.634400, 0.000000, -0.773000, 0.125000, 1.000000,
+ -0.555570, 1.000000, -0.831470, -0.634400, 0.000000, -0.773000, 0.093750, 1.000000,
+ -0.555570, -1.000000, -0.831470, -0.634400, 0.000000, -0.773000, 0.093750, 0.000000,
+ -0.555570, 1.000000, -0.831470, -0.471400, 0.000000, -0.881900, 0.093750, 1.000000,
+ -0.382683, 1.000000, -0.923880, -0.471400, 0.000000, -0.881900, 0.062500, 1.000000,
+ -0.382683, -1.000000, -0.923880, -0.471400, 0.000000, -0.881900, 0.062500, 0.000000,
+ -0.382683, 1.000000, -0.923880, -0.290300, 0.000000, -0.956900, 0.062500, 1.000000,
+ -0.195090, 1.000000, -0.980785, -0.290300, 0.000000, -0.956900, 0.031250, 1.000000,
+ -0.195090, -1.000000, -0.980785, -0.290300, 0.000000, -0.956900, 0.031250, 0.000000,
+ -0.195090, 1.000000, -0.980785, -0.098000, 0.000000, -0.995200, 0.031250, 1.000000,
+ 0.000000, 1.000000, -1.000000, -0.098000, 0.000000, -0.995200, 0.000000, 1.000000,
+ 0.000000, -1.000000, -1.000000, -0.098000, 0.000000, -0.995200, 0.000000, 0.000000,
},
{
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
@@ -1892,7 +1988,15 @@ init = function()
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
- 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95
+ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
+ 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
+ 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
+ 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
+ 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
+ 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
+ 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
+ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
}
)
end
diff --git a/honey/asset/shader.lua b/honey/asset/shader.lua
index d1fecc4..8094a0c 100644
--- a/honey/asset/shader.lua
+++ b/honey/asset/shader.lua
@@ -183,4 +183,17 @@ builtin["builtin.flat.frag"] = [[
}
]]
+
+builtin["builtin.color.frag"] = [[
+ #version 410 core
+
+ out vec4 frag_color;
+ uniform vec3 color;
+
+ void main()
+ {
+ frag_color = vec4(color, 1.0);
+ }
+]]
+
return module
diff --git a/honey/ecs/collision.lua b/honey/ecs/collision.lua
index f34c320..b385e76 100644
--- a/honey/ecs/collision.lua
+++ b/honey/ecs/collision.lua
@@ -67,7 +67,7 @@ end
local updateGeom = ecs.System("collisionGeoms", function(db, dt, p)
for id, collision in pairs(db:queryComponent("collision")) do
if not collision._geom then
- createGeom(p.space, collision)
+ createGeom(p.space, id, collision)
end
updateGeom(collision)
end
diff --git a/honey/ecs/ecs.lua b/honey/ecs/ecs.lua
index 0c84041..dc096be 100644
--- a/honey/ecs/ecs.lua
+++ b/honey/ecs/ecs.lua
@@ -307,7 +307,7 @@ end
function SystemDb.addSystems(self, systems, params)
for _, system in ipairs(systems) do
self.systems[system.name] = system
- self.params[system.name] = params
+ self.params[system.name] = params or {}
end
self.sort, self.dangling = tsort(self.systems)
return self
diff --git a/honey/ecs/render.lua b/honey/ecs/render.lua
index 8cca6cf..1c38692 100644
--- a/honey/ecs/render.lua
+++ b/honey/ecs/render.lua
@@ -1,4 +1,10 @@
-local ecs = require 'honey.ecs.ecs'
+local gl = honey.gl
+local glfw = honey.glfw
+local ode = honey.ode
+
+local ecs = require 'honey.ecs.ecs'
+local collision = require 'honey.ecs.collision'
+local node = require 'honey.ecs.node'
local image = require 'honey.asset.image'
local shader = require 'honey.asset.shader'
@@ -8,16 +14,12 @@ local glm = require 'honey.glm'
local Vec3 = glm.Vec3
local Mat4 = glm.Mat4
-local gl = honey.gl
-local glfw = honey.glfw
-
-local node = require 'honey.ecs.node'
local module = {}
setmetatable(module, {__index=_G})
setfenv(1, module)
---===== rendering =====--
+
local function drawMesh(program, uniforms, matrices, vao, count)
gl.UseProgram(program)
@@ -49,6 +51,88 @@ local function drawMesh(program, uniforms, matrices, vao, count)
end
+local function drawMeshes(db, view, projection)
+ local meshes = db:queryComponent("renderMesh")
+ for id, tbl in pairs(meshes) do
+ -- get model matrix
+ local node = db:getComponent(id, "node")
+ local model = (node and node._matrix) or Mat4():identity()
+
+ -- get shader program
+ local program = shader.get(tbl.shader)
+
+ -- get mesh
+ local vao, count = mesh.get(tbl.mesh.filename, tbl.mesh.index)
+
+ -- draw c:
+ drawMesh(program, tbl.uniforms or {}, {view=view, model=model, projection=projection}, vao, count)
+ end
+end
+
+
+local function drawGeoms(db, view, projection)
+ -- draw wireframes
+ gl.Enable(gl.CULL_FACE)
+ gl.PolygonMode(gl.FRONT_AND_BACK, gl.LINE)
+ gl.LineWidth(1)
+
+ -- shader program for all geoms
+ local program = shader.get{ vertex="builtin.basic3d.vert", fragment="builtin.color.frag" }
+ local uniforms = {
+ vec3 = {
+ color = Vec3{ 1, 0, 1 },
+ },
+ }
+
+ local query = db:queryComponent("collision")
+ for id, tbl in pairs(query) do
+ -- compute model matrix
+ local m = Mat4():identity()
+ m[1][4], m[2][4], m[3][4] = ode.GeomGetPosition(tbl._geom)
+ m[1][1], m[1][2], m[1][3],
+ m[2][1], m[2][2], m[2][3],
+ m[3][1], m[3][2], m[3][3] = ode.GeomGetRotation(tbl._geom)
+
+ local matrices = {
+ view=view,
+ projection=projection,
+ model=m,
+ }
+
+ -- get the mesh
+ if tbl.class == "sphere" then
+ m:scale(Vec3{tbl.radius, tbl.radius, tbl.radius})
+ local vao, count = mesh.get("builtin.hemisphere", 1)
+ drawMesh(program, uniforms, matrices, vao, count)
+ m:rotateX(math.pi)
+ drawMesh(program, uniforms, matrices, vao, count)
+ elseif tbl.class == "box" then
+ m:scale(Vec3{tbl.lx, tbl.ly, tbl.lz})
+ local vao, count = mesh.get("builtin.cube", 1)
+ drawMesh(program, uniforms, matrices, vao, count)
+ elseif tbl.class == "capsule" then
+ m:scale(Vec3{tbl.radius, tbl.length/2, tbl.radius})
+ local vao, count = mesh.get("builtin.tube", 1)
+ drawMesh(program, uniforms, matrices, vao, count)
+ m:scale(Vec3{1, 2*tbl.radius/tbl.length, 1})
+ :translate(Vec3{0, tbl.length/2, 0})
+ vao, count = mesh.get("builtin.hemisphere", 1)
+ drawMesh(program, uniforms, matrices, vao, count)
+ m:translate(Vec3{0, -tbl.length, 0})
+ :rotateX(math.pi)
+ drawMesh(program, uniforms, matrices, vao, count)
+ elseif tbl.class == "ray" then
+ m:scale(Vec3{0.001, 0.001, tbl.length})
+ local vao, count = mesh.get("builtin.cube", 1)
+ drawMesh(program, uniforms, matrices, vao, count)
+ end
+ end
+
+ -- switch out of wireframe mode
+ gl.PolygonMode(gl.FRONT_AND_BACK, gl.FILL)
+end
+
+
local render = ecs.System("render", function(db, dt, p)
for id, camera in pairs(db:queryComponent("camera")) do
-- get camera's view and projection matrices
@@ -60,26 +144,18 @@ local render = ecs.System("render", function(db, dt, p)
else
view:identity()
end
-
- -- iterate over all scene meshes
- local meshes = db:queryComponent("renderMesh")
- for id, tbl in pairs(meshes) do
- -- get model matrix
- local node = db:getComponent(id, "node")
- local model = (node and node._matrix) or Mat4():identity()
- -- get shader program
- local program = shader.get(tbl.shader)
-
- -- get mesh
- local vao, count = mesh.get(tbl.mesh.filename, tbl.mesh.index)
-
- -- draw c:
- drawMesh(program, tbl.uniforms or {}, {view=view, model=model, projection=projection}, vao, count)
+ -- optionally draw collision geoms
+ if p.drawGeoms then
+ drawGeoms(db, view, projection)
end
+
+ -- render all scene meshes
+ drawMeshes(db, view, projection)
end
end)
render:addDependencies(node.system)
+render:addDependencies(collision.system)
system = {render}
diff --git a/main.lua b/main.lua
index 6d997cb..2542910 100644
--- a/main.lua
+++ b/main.lua
@@ -11,7 +11,7 @@ local systems = honey.ecs.SystemDb(db)
local space = honey.ode.HashSpaceCreate(honey.ode.Space0)
systems:addSystems(honey.ecs.node.system)
-systems:addSystems(honey.ecs.render.system)
+systems:addSystems(honey.ecs.render.system, {drawGeoms=true})
systems:addSystems(honey.ecs.script.system)
systems:addSystems(honey.ecs.collision.system, { space=space })
@@ -20,7 +20,7 @@ db:createEntityWithComponents{
node = {
matrix = Mat4()
:identity()
- :translate(Vec3{0,0,10}),
+ :translate(Vec3{0,0,4}),
},
camera = {
projection = Mat4()
@@ -66,6 +66,15 @@ db:createEntityWithComponents{
},
shader = { vertex="vertex.glsl", fragment="fragment.glsl" },
},
+ collision = {
+ class = "capsule",
+ radius = 1,
+ length = 2,
+ lx = 2,
+ ly = 2,
+ lz = 2,
+ },
+ script = { script = "scripts.rotate" },
}
honey.loop(function(dt)
diff --git a/scripts/rotate.lua b/scripts/rotate.lua
new file mode 100644
index 0000000..ef03349
--- /dev/null
+++ b/scripts/rotate.lua
@@ -0,0 +1,4 @@
+return function(db, id, dt)
+ local node = db:getComponent(id, "node")
+ node.matrix:rotateZ(2*math.pi*dt)
+end