From 4b2507b2f30d50c8673f33179c2b537ac83da3bf Mon Sep 17 00:00:00 2001 From: sanine Date: Tue, 16 May 2023 22:51:17 -0500 Subject: add basic collision geom visualizations --- assets/hemisphere.mtl | 10 + assets/hemisphere.obj | 1309 +++++++++++++++++++++++++++++++++++++++++++++++ assets/tube.mtl | 10 + assets/tube.obj | 232 +++++++++ assets/unit_cube.mtl | 10 + assets/unit_cube.obj | 46 ++ honey/asset/mesh.lua | 202 ++++++-- honey/asset/shader.lua | 13 + honey/ecs/collision.lua | 2 +- honey/ecs/ecs.lua | 2 +- honey/ecs/render.lua | 118 ++++- main.lua | 13 +- scripts/rotate.lua | 4 + 13 files changed, 1897 insertions(+), 74 deletions(-) create mode 100644 assets/hemisphere.mtl create mode 100644 assets/hemisphere.obj create mode 100644 assets/tube.mtl create mode 100644 assets/tube.obj create mode 100644 assets/unit_cube.mtl create mode 100644 assets/unit_cube.obj create mode 100644 scripts/rotate.lua 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 -- cgit v1.2.1