From fa866a267c36e7af8a5e63c353cb7071cca64dbf Mon Sep 17 00:00:00 2001 From: David Walsh Date: Tue, 18 May 2021 14:34:56 -0500 Subject: [PATCH 1/4] Provide beta fox assets and demo --- beta-fox.fbx | Bin 0 -> 60080 bytes beta-fox.json | 1453 +++++++++++++++ beta-fox.mtl | 104 ++ beta-fox.obj | 965 ++++++++++ docs/beta/bundle.js | 3814 +++++++++++++++++++++++++++++++++++++++ docs/beta/index.html | 14 + docs/distort/bundle.js | 9 +- docs/gradient/bundle.js | 2 + docs/index.html | 1 + docs/normal/bundle.js | 1486 ++++++++++++++- docs/recolor/bundle.js | 2 + example/beta.js | 19 + fox.fbx | Bin 0 -> 60080 bytes index.js | 4 +- package.json | 2 +- 15 files changed, 7853 insertions(+), 22 deletions(-) create mode 100644 beta-fox.fbx create mode 100644 beta-fox.json create mode 100644 beta-fox.mtl create mode 100644 beta-fox.obj create mode 100644 docs/beta/bundle.js create mode 100644 docs/beta/index.html create mode 100644 example/beta.js create mode 100644 fox.fbx diff --git a/beta-fox.fbx b/beta-fox.fbx new file mode 100644 index 0000000000000000000000000000000000000000..936ecc9f10b75699780b66b4c38b86648e54d59b GIT binary patch literal 60080 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 literal 0 HcmV?d00001 diff --git a/beta-fox.json b/beta-fox.json new file mode 100644 index 00000000..98f40257 --- /dev/null +++ b/beta-fox.json @@ -0,0 +1,1453 @@ +{ + "positions": [ + [ + 111.024597, + 52.604599, + 46.225899 + ], + [ + 114.025002, + 87.673302, + 58.9818 + ], + [ + 66.192001, + 80.898003, + 55.394299 + ], + [ + 72.113297, + 35.491798, + 30.871401 + ], + [ + 97.804497, + 116.560997, + 73.978798 + ], + [ + 16.7623, + 58.010899, + 58.078201 + ], + [ + 52.608898, + 30.3641, + 42.556099 + ], + [ + 106.881401, + 31.945499, + 46.9133 + ], + [ + 113.484596, + 38.6049, + 49.121498 + ], + [ + 108.6633, + 43.2332, + 46.315399 + ], + [ + 101.216599, + 15.9822, + 46.308201 + ], + [ + 16.6605, + -16.2883, + 93.618698 + ], + [ + 40.775002, + -10.2288, + 85.276398 + ], + [ + 23.926901, + -2.5103, + 86.736504 + ], + [ + 11.1691, + -7.0037, + 99.377602 + ], + [ + 9.5692, + -34.393902, + 141.671997 + ], + [ + 12.596, + 7.1655, + 88.740997 + ], + [ + 61.180901, + 8.8142, + 76.996803 + ], + [ + 39.719501, + -28.927099, + 88.963799 + ], + [ + 13.7962, + -68.575699, + 132.057007 + ], + [ + 15.2674, + -62.32, + 129.688004 + ], + [ + 14.8446, + -52.6096, + 140.113007 + ], + [ + 12.8917, + -49.771599, + 144.740997 + ], + [ + 35.604198, + -71.758003, + 81.063904 + ], + [ + 47.462502, + -68.606102, + 63.369701 + ], + [ + 38.2486, + -64.730202, + 38.909901 + ], + [ + -12.8917, + -49.771599, + 144.740997 + ], + [ + -13.7962, + -68.575699, + 132.057007 + ], + [ + 17.802099, + -71.758003, + 81.063904 + ], + [ + 19.1243, + -69.0168, + 49.420101 + ], + [ + 38.2486, + -66.275597, + 17.776199 + ], + [ + 12.8928, + -36.703499, + 141.671997 + ], + [ + 109.283997, + -93.589897, + 27.824301 + ], + [ + 122.117996, + -36.8894, + 35.025002 + ], + [ + 67.7668, + -30.197001, + 78.417801 + ], + [ + 33.180698, + 101.851997, + 25.3186 + ], + [ + 9.4063, + -35.589802, + 150.722 + ], + [ + -9.5692, + -34.393902, + 141.671997 + ], + [ + -9.4063, + -35.589802, + 150.722 + ], + [ + 11.4565, + -37.899399, + 150.722 + ], + [ + -12.596, + 7.1655, + 88.740997 + ], + [ + -11.1691, + -7.0037, + 99.377602 + ], + [ + 70.236504, + 62.836201, + -3.9475 + ], + [ + 47.263401, + 54.293999, + -27.414801 + ], + [ + 28.7302, + 91.731102, + -24.972601 + ], + [ + 69.167603, + 6.5862, + -12.7757 + ], + [ + 28.7302, + 49.1003, + -48.3596 + ], + [ + 31.903, + 5.692, + -47.821999 + ], + [ + 35.075802, + -34.432899, + -16.280899 + ], + [ + 115.284103, + 48.681499, + 48.684101 + ], + [ + 110.842796, + 28.4821, + 49.176201 + ], + [ + -19.1243, + -69.0168, + 49.420101 + ], + [ + -38.2486, + -66.275597, + 17.776199 + ], + [ + -111.024597, + 52.604599, + 46.225899 + ], + [ + -72.113297, + 35.491798, + 30.871401 + ], + [ + -66.192001, + 80.898003, + 55.394299 + ], + [ + -114.025002, + 87.673302, + 58.9818 + ], + [ + -97.804497, + 116.560997, + 73.978798 + ], + [ + -52.608898, + 30.3641, + 42.556099 + ], + [ + -16.7623, + 58.010899, + 58.078201 + ], + [ + -106.881401, + 31.945499, + 46.9133 + ], + [ + -108.6633, + 43.2332, + 46.315399 + ], + [ + -113.484596, + 38.6049, + 49.121498 + ], + [ + -101.216599, + 15.9822, + 46.308201 + ], + [ + -16.6605, + -16.2883, + 93.618698 + ], + [ + -23.926901, + -2.5103, + 86.736504 + ], + [ + -40.775002, + -10.2288, + 85.276398 + ], + [ + -61.180901, + 8.8142, + 76.996803 + ], + [ + -39.719501, + -28.927099, + 88.963799 + ], + [ + -14.8446, + -52.6096, + 140.113007 + ], + [ + -15.2674, + -62.32, + 129.688004 + ], + [ + -47.462502, + -68.606102, + 63.369701 + ], + [ + -35.604198, + -71.758003, + 81.063904 + ], + [ + -38.2486, + -64.730202, + 38.909901 + ], + [ + -17.802099, + -71.758003, + 81.063904 + ], + [ + -12.8928, + -36.703499, + 141.671997 + ], + [ + -67.7668, + -30.197001, + 78.417801 + ], + [ + -122.117996, + -36.8894, + 35.025002 + ], + [ + -109.283997, + -93.589897, + 27.824301 + ], + [ + -33.180698, + 101.851997, + 25.3186 + ], + [ + -11.4565, + -37.899399, + 150.722 + ], + [ + -70.236504, + 62.836201, + -3.9475 + ], + [ + -28.7302, + 91.731102, + -24.972601 + ], + [ + -47.263401, + 54.293999, + -27.414801 + ], + [ + -69.167603, + 6.5862, + -12.7757 + ], + [ + -28.7302, + 49.1003, + -48.3596 + ], + [ + -31.903, + 5.692, + -47.821999 + ], + [ + -35.075802, + -34.432899, + -16.280899 + ], + [ + -115.284103, + 48.681499, + 48.684101 + ], + [ + -110.842796, + 28.4821, + 49.176201 + ] + ], + "chunks": [ + { + "color": [ + 0, + 0, + 0 + ], + "faces": [ + [ + 11, + 12, + 13 + ], + [ + 36, + 15, + 37 + ], + [ + 37, + 38, + 36 + ], + [ + 31, + 39, + 22 + ], + [ + 22, + 21, + 31 + ], + [ + 31, + 15, + 36 + ], + [ + 36, + 39, + 31 + ], + [ + 64, + 65, + 66 + ], + [ + 75, + 69, + 26 + ], + [ + 26, + 80, + 75 + ], + [ + 75, + 80, + 38 + ], + [ + 38, + 37, + 75 + ], + [ + 38, + 80, + 39 + ], + [ + 39, + 36, + 38 + ], + [ + 39, + 80, + 26 + ], + [ + 26, + 22, + 39 + ] + ] + }, + { + "color": [ + 236, + 229, + 220 + ], + "faces": [ + [ + 19, + 20, + 21 + ], + [ + 21, + 22, + 19 + ], + [ + 20, + 19, + 23 + ], + [ + 23, + 24, + 20 + ], + [ + 23, + 25, + 24 + ], + [ + 19, + 22, + 26 + ], + [ + 26, + 27, + 19 + ], + [ + 23, + 28, + 29 + ], + [ + 23, + 29, + 30 + ], + [ + 25, + 23, + 30 + ], + [ + 21, + 20, + 24 + ], + [ + 24, + 31, + 21 + ], + [ + 24, + 25, + 30 + ], + [ + 29, + 51, + 52 + ], + [ + 52, + 30, + 29 + ], + [ + 27, + 26, + 69 + ], + [ + 69, + 70, + 27 + ], + [ + 70, + 71, + 72 + ], + [ + 72, + 27, + 70 + ], + [ + 72, + 71, + 73 + ], + [ + 51, + 74, + 72 + ], + [ + 52, + 51, + 72 + ], + [ + 73, + 52, + 72 + ], + [ + 69, + 71, + 70 + ], + [ + 71, + 69, + 75 + ], + [ + 52, + 73, + 71 + ], + [ + 19, + 27, + 74 + ], + [ + 74, + 28, + 19 + ], + [ + 51, + 29, + 28 + ], + [ + 28, + 74, + 51 + ], + [ + 74, + 27, + 72 + ], + [ + 28, + 23, + 19 + ] + ] + }, + { + "color": [ + 119, + 228, + 171 + ], + "faces": [ + [ + 5, + 4, + 35 + ], + [ + 57, + 59, + 79 + ] + ] + }, + { + "color": [ + 80, + 157, + 116 + ], + "faces": [ + [ + 4, + 5, + 2 + ], + [ + 2, + 5, + 6 + ], + [ + 57, + 56, + 55 + ], + [ + 58, + 59, + 55 + ], + [ + 2, + 1, + 4 + ], + [ + 55, + 59, + 57 + ] + ] + }, + { + "color": [ + 67, + 127, + 95 + ], + "faces": [ + [ + 0, + 1, + 2 + ], + [ + 2, + 3, + 0 + ], + [ + 6, + 3, + 2 + ], + [ + 7, + 8, + 9 + ], + [ + 10, + 3, + 6 + ], + [ + 10, + 50, + 7 + ], + [ + 7, + 3, + 10 + ], + [ + 7, + 9, + 3 + ], + [ + 49, + 0, + 9 + ], + [ + 3, + 9, + 0 + ], + [ + 53, + 54, + 55 + ], + [ + 55, + 56, + 53 + ], + [ + 55, + 54, + 58 + ], + [ + 60, + 61, + 62 + ], + [ + 63, + 58, + 54 + ], + [ + 63, + 60, + 89 + ], + [ + 60, + 63, + 54 + ], + [ + 60, + 54, + 61 + ], + [ + 88, + 61, + 53 + ], + [ + 54, + 53, + 61 + ] + ] + }, + { + "color": [ + 119, + 228, + 207 + ], + "faces": [ + [ + 59, + 5, + 35 + ], + [ + 35, + 79, + 59 + ] + ] + }, + { + "color": [ + 163, + 230, + 235 + ], + "faces": [ + [ + 14, + 15, + 11 + ], + [ + 11, + 16, + 14 + ], + [ + 16, + 13, + 12 + ], + [ + 17, + 33, + 10 + ], + [ + 17, + 18, + 34 + ], + [ + 34, + 33, + 17 + ], + [ + 11, + 15, + 31 + ], + [ + 18, + 12, + 11 + ], + [ + 41, + 64, + 37 + ], + [ + 64, + 41, + 40 + ], + [ + 66, + 65, + 40 + ], + [ + 67, + 63, + 77 + ], + [ + 67, + 77, + 76 + ], + [ + 76, + 68, + 67 + ], + [ + 75, + 37, + 64 + ], + [ + 68, + 64, + 66 + ] + ] + }, + { + "color": [ + 204, + 237, + 236 + ], + "faces": [ + [ + 10, + 6, + 17 + ], + [ + 31, + 18, + 11 + ], + [ + 14, + 16, + 40 + ], + [ + 40, + 41, + 14 + ], + [ + 63, + 67, + 58 + ], + [ + 64, + 68, + 75 + ], + [ + 14, + 41, + 37 + ], + [ + 37, + 15, + 14 + ], + [ + 5, + 59, + 40 + ], + [ + 40, + 16, + 5 + ] + ] + }, + { + "color": [ + 207, + 248, + 247 + ], + "faces": [ + [ + 6, + 5, + 16 + ], + [ + 16, + 17, + 6 + ], + [ + 12, + 17, + 16 + ], + [ + 58, + 67, + 40 + ], + [ + 40, + 59, + 58 + ], + [ + 40, + 67, + 66 + ] + ] + }, + { + "color": [ + 127, + 185, + 228 + ], + "faces": [ + [ + 33, + 34, + 24 + ], + [ + 71, + 76, + 77 + ] + ] + }, + { + "color": [ + 119, + 200, + 228 + ], + "faces": [ + [ + 31, + 24, + 18 + ], + [ + 24, + 34, + 18 + ], + [ + 35, + 4, + 42 + ], + [ + 4, + 1, + 42 + ], + [ + 42, + 43, + 44 + ], + [ + 44, + 35, + 42 + ], + [ + 45, + 43, + 42 + ], + [ + 42, + 10, + 45 + ], + [ + 30, + 32, + 24 + ], + [ + 30, + 33, + 32 + ], + [ + 33, + 30, + 10 + ], + [ + 44, + 43, + 46 + ], + [ + 43, + 45, + 47 + ], + [ + 47, + 46, + 43 + ], + [ + 48, + 47, + 45 + ], + [ + 45, + 30, + 48 + ], + [ + 30, + 45, + 10 + ], + [ + 49, + 42, + 0 + ], + [ + 8, + 7, + 42 + ], + [ + 50, + 42, + 7 + ], + [ + 50, + 10, + 42 + ], + [ + 1, + 0, + 42 + ], + [ + 42, + 9, + 8 + ], + [ + 42, + 49, + 9 + ], + [ + 75, + 68, + 71 + ], + [ + 71, + 68, + 76 + ], + [ + 79, + 81, + 57 + ], + [ + 57, + 81, + 56 + ], + [ + 82, + 79, + 35 + ], + [ + 35, + 44, + 82 + ], + [ + 81, + 79, + 82 + ], + [ + 82, + 83, + 81 + ], + [ + 84, + 63, + 81 + ], + [ + 81, + 83, + 84 + ], + [ + 44, + 46, + 85 + ], + [ + 85, + 82, + 44 + ], + [ + 71, + 78, + 52 + ], + [ + 52, + 78, + 77 + ], + [ + 77, + 63, + 52 + ], + [ + 82, + 85, + 83 + ], + [ + 83, + 85, + 86 + ], + [ + 86, + 84, + 83 + ], + [ + 87, + 52, + 84 + ], + [ + 84, + 86, + 87 + ], + [ + 52, + 63, + 84 + ], + [ + 88, + 53, + 81 + ], + [ + 62, + 81, + 60 + ], + [ + 89, + 60, + 81 + ], + [ + 89, + 81, + 63 + ], + [ + 56, + 81, + 53 + ], + [ + 81, + 62, + 61 + ], + [ + 81, + 61, + 88 + ], + [ + 48, + 87, + 86 + ], + [ + 86, + 47, + 48 + ], + [ + 47, + 86, + 85 + ], + [ + 85, + 46, + 47 + ], + [ + 48, + 30, + 52 + ], + [ + 52, + 87, + 48 + ] + ] + }, + { + "color": [ + 95, + 167, + 211 + ], + "faces": [ + [ + 24, + 32, + 33 + ], + [ + 77, + 78, + 71 + ] + ] + }, + { + "color": [ + 119, + 222, + 228 + ], + "faces": [ + [ + 17, + 12, + 18 + ], + [ + 13, + 16, + 11 + ], + [ + 67, + 68, + 66 + ], + [ + 65, + 64, + 40 + ] + ] + } + ] +} \ No newline at end of file diff --git a/beta-fox.mtl b/beta-fox.mtl new file mode 100644 index 00000000..0522f505 --- /dev/null +++ b/beta-fox.mtl @@ -0,0 +1,104 @@ +newmtl Default_2SG +illum 4 +Kd 0.00 0.00 0.00 +Ka 0.00 0.00 0.00 +Tf 1.00 1.00 1.00 +Ni 1.00 +Ks 0.20 0.20 0.20 +Ns 30.00 +newmtl Default_2SG1 +illum 4 +Kd 0.86 0.81 0.75 +Ka 0.00 0.00 0.00 +Tf 1.00 1.00 1.00 +Ni 1.00 +Ks 0.20 0.20 0.20 +Ns 30.00 +newmtl Default_2SG2 +illum 4 +Kd 0.22 0.80 0.45 +Ka 0.00 0.00 0.00 +Tf 1.00 1.00 1.00 +Ni 1.00 +Ks 0.20 0.20 0.20 +Ns 30.00 +newmtl Default_2SG3 +illum 4 +Kd 0.10 0.38 0.21 +Ka 0.00 0.00 0.00 +Tf 1.00 1.00 1.00 +Ni 1.00 +Ks 0.20 0.20 0.20 +Ns 30.00 +newmtl Default_2SG4 +illum 4 +Kd 0.07 0.25 0.14 +Ka 0.00 0.00 0.00 +Tf 1.00 1.00 1.00 +Ni 1.00 +Ks 0.20 0.20 0.20 +Ns 30.00 +newmtl Default_2SG5 +illum 4 +Kd 0.22 0.80 0.66 +Ka 0.00 0.00 0.00 +Tf 1.00 1.00 1.00 +Ni 1.00 +Ks 0.20 0.20 0.20 +Ns 30.00 +newmtl Default_2SG6 +illum 4 +Kd 0.41 0.82 0.85 +Ka 0.00 0.00 0.00 +Tf 1.00 1.00 1.00 +Ni 1.00 +Ks 0.20 0.20 0.20 +Ns 30.00 +newmtl Default_2SG7 +illum 4 +Kd 0.64 0.87 0.86 +Ka 0.00 0.00 0.00 +Tf 1.00 1.00 1.00 +Ni 1.00 +Ks 0.20 0.20 0.20 +Ns 30.00 +newmtl Default_2SG8 +illum 4 +Kd 0.66 0.95 0.94 +Ka 0.00 0.00 0.00 +Tf 1.00 1.00 1.00 +Ni 1.00 +Ks 0.20 0.20 0.20 +Ns 30.00 +newmtl Default_2SG9 +illum 4 +Kd 0.25 0.53 0.80 +Ka 0.00 0.00 0.00 +Tf 1.00 1.00 1.00 +Ni 1.00 +Ks 0.20 0.20 0.20 +Ns 30.00 +newmtl Default_2SG10 +illum 4 +Kd 0.22 0.62 0.80 +Ka 0.00 0.00 0.00 +Tf 1.00 1.00 1.00 +Ni 1.00 +Ks 0.20 0.20 0.20 +Ns 30.00 +newmtl Default_2SG11 +illum 4 +Kd 0.14 0.43 0.69 +Ka 0.00 0.00 0.00 +Tf 1.00 1.00 1.00 +Ni 1.00 +Ks 0.20 0.20 0.20 +Ns 30.00 +newmtl Default_2SG12 +illum 4 +Kd 0.22 0.76 0.80 +Ka 0.00 0.00 0.00 +Tf 1.00 1.00 1.00 +Ni 1.00 +Ks 0.20 0.20 0.20 +Ns 30.00 diff --git a/beta-fox.obj b/beta-fox.obj new file mode 100644 index 00000000..f716478c --- /dev/null +++ b/beta-fox.obj @@ -0,0 +1,965 @@ +# This file uses centimeters as units for non-parametric coordinates. + +mtllib beta-fox.mtl +g default +v 111.024597 52.604599 46.225899 +v 114.025002 87.673302 58.981800 +v 66.192001 80.898003 55.394299 +v 72.113297 35.491798 30.871401 +v 97.804497 116.560997 73.978798 +v 16.762300 58.010899 58.078201 +v 52.608898 30.364100 42.556099 +v 106.881401 31.945499 46.913300 +v 113.484596 38.604900 49.121498 +v 108.663300 43.233200 46.315399 +v 101.216599 15.982200 46.308201 +v 16.660500 -16.288300 93.618698 +v 40.775002 -10.228800 85.276398 +v 23.926901 -2.510300 86.736504 +v 11.169100 -7.003700 99.377602 +v 9.569200 -34.393902 141.671997 +v 12.596000 7.165500 88.740997 +v 61.180901 8.814200 76.996803 +v 39.719501 -28.927099 88.963799 +v 13.796200 -68.575699 132.057007 +v 15.267400 -62.320000 129.688004 +v 14.844600 -52.609600 140.113007 +v 12.891700 -49.771599 144.740997 +v 35.604198 -71.758003 81.063904 +v 47.462502 -68.606102 63.369701 +v 38.248600 -64.730202 38.909901 +v -12.891700 -49.771599 144.740997 +v -13.796200 -68.575699 132.057007 +v 17.802099 -71.758003 81.063904 +v 19.124300 -69.016800 49.420101 +v 38.248600 -66.275597 17.776199 +v 12.892800 -36.703499 141.671997 +v 109.283997 -93.589897 27.824301 +v 122.117996 -36.889400 35.025002 +v 67.766800 -30.197001 78.417801 +v 33.180698 101.851997 25.318600 +v 9.406300 -35.589802 150.722000 +v -9.569200 -34.393902 141.671997 +v -9.406300 -35.589802 150.722000 +v 11.456500 -37.899399 150.722000 +v -12.596000 7.165500 88.740997 +v -11.169100 -7.003700 99.377602 +v 70.236504 62.836201 -3.947500 +v 47.263401 54.293999 -27.414801 +v 28.730200 91.731102 -24.972601 +v 69.167603 6.586200 -12.775700 +v 28.730200 49.100300 -48.359600 +v 31.903000 5.692000 -47.821999 +v 35.075802 -34.432899 -16.280899 +v 115.284103 48.681499 48.684101 +v 110.842796 28.482100 49.176201 +v -19.124300 -69.016800 49.420101 +v -38.248600 -66.275597 17.776199 +v -111.024597 52.604599 46.225899 +v -72.113297 35.491798 30.871401 +v -66.192001 80.898003 55.394299 +v -114.025002 87.673302 58.981800 +v -97.804497 116.560997 73.978798 +v -52.608898 30.364100 42.556099 +v -16.762300 58.010899 58.078201 +v -106.881401 31.945499 46.913300 +v -108.663300 43.233200 46.315399 +v -113.484596 38.604900 49.121498 +v -101.216599 15.982200 46.308201 +v -16.660500 -16.288300 93.618698 +v -23.926901 -2.510300 86.736504 +v -40.775002 -10.228800 85.276398 +v -61.180901 8.814200 76.996803 +v -39.719501 -28.927099 88.963799 +v -14.844600 -52.609600 140.113007 +v -15.267400 -62.320000 129.688004 +v -47.462502 -68.606102 63.369701 +v -35.604198 -71.758003 81.063904 +v -38.248600 -64.730202 38.909901 +v -17.802099 -71.758003 81.063904 +v -12.892800 -36.703499 141.671997 +v -67.766800 -30.197001 78.417801 +v -122.117996 -36.889400 35.025002 +v -109.283997 -93.589897 27.824301 +v -33.180698 101.851997 25.318600 +v -11.456500 -37.899399 150.722000 +v -70.236504 62.836201 -3.947500 +v -28.730200 91.731102 -24.972601 +v -47.263401 54.293999 -27.414801 +v -69.167603 6.586200 -12.775700 +v -28.730200 49.100300 -48.359600 +v -31.903000 5.692000 -47.821999 +v -35.075802 -34.432899 -16.280899 +v -115.284103 48.681499 48.684101 +v -110.842796 28.482100 49.176201 +vt 0.970623 0.666610 +vt 0.997111 0.837521 +vt 0.760879 0.845395 +vt 0.800317 0.596474 +vt 0.949525 0.997966 +vt 0.576270 0.698799 +vt 0.723134 0.561439 +vt 0.949671 0.569435 +vt 0.980427 0.597613 +vt 0.960062 0.620633 +vt 0.920729 0.504251 +vt 0.577579 0.331406 +vt 0.692276 0.366982 +vt 0.613663 0.407103 +vt 0.553963 0.381940 +vt 0.555467 0.186515 +vt 0.560170 0.453798 +vt 0.778882 0.465645 +vt 0.687918 0.270342 +vt 0.580235 -0.000010 +vt 0.589149 0.027460 +vt 0.587773 0.072978 +vt 0.577473 0.082833 +vt 0.670765 0.046594 +vt 0.708846 0.105031 +vt 0.678010 0.099881 +vt 0.419525 0.086676 +vt 0.419553 0.000561 +vt 0.599903 -0.005812 +vt 0.606999 0.007994 +vt 0.678427 0.090415 +vt 0.573878 0.176913 +vt 0.926441 0.040370 +vt 0.988497 0.270610 +vt 0.807707 0.272056 +vt 0.632962 0.871696 +vt 0.554959 0.176524 +vt 0.443450 0.187338 +vt 0.443815 0.177783 +vt 0.566913 0.163658 +vt 0.438685 0.454376 +vt 0.445725 0.380079 +vt 0.780674 0.758674 +vt 0.692180 0.696538 +vt 0.617587 0.825290 +vt 0.810031 0.458665 +vt 0.622539 0.658801 +vt 0.648572 0.445144 +vt 0.668403 0.242748 +vt 0.988818 0.646274 +vt 0.965276 0.554268 +vt 0.395462 0.007500 +vt 0.325839 0.087892 +vt 0.031202 0.671137 +vt 0.197948 0.596528 +vt 0.242119 0.841264 +vt 0.002056 0.836843 +vt 0.048092 0.999935 +vt 0.272639 0.559895 +vt 0.425070 0.698168 +vt 0.054412 0.576650 +vt 0.043452 0.627958 +vt 0.024277 0.606099 +vt 0.082815 0.505955 +vt 0.419331 0.332867 +vt 0.387057 0.409320 +vt 0.308295 0.368626 +vt 0.221626 0.463599 +vt 0.313457 0.274184 +vt 0.409851 0.075899 +vt 0.409263 0.027954 +vt 0.293570 0.105813 +vt 0.336375 0.042655 +vt 0.325602 0.098050 +vt 0.403084 -0.005386 +vt 0.426231 0.177841 +vt 0.191929 0.271064 +vt 0.008693 0.271180 +vt 0.073992 0.037633 +vt 0.365397 0.871017 +vt 0.432413 0.165009 +vt 0.220227 0.750798 +vt 0.381923 0.829012 +vt 0.301382 0.682138 +vt 0.192319 0.456416 +vt 0.371466 0.644344 +vt 0.349793 0.446140 +vt 0.334530 0.247169 +vt 0.014492 0.652537 +vt 0.038954 0.560849 +vt 0.678403 0.090469 +vn -0.075817 -0.414073 0.907081 +vn -0.011801 -0.401574 0.915751 +vn -0.050914 -0.430254 0.901271 +vn -0.050914 -0.430254 0.901271 +vn -0.128575 -0.484187 0.865466 +vn -0.075817 -0.414073 0.907081 +vn 0.339284 -0.653400 0.676724 +vn 0.339284 -0.653400 0.676724 +vn 0.339284 -0.653400 0.676724 +vn 0.547465 -0.341269 0.764080 +vn 0.547465 -0.341269 0.764080 +vn 0.547465 -0.341269 0.764080 +vn 0.184507 -0.288299 0.939596 +vn 0.184507 -0.288299 0.939596 +vn 0.184507 -0.288299 0.939596 +vn -0.411573 0.112329 0.904428 +vn -0.416152 0.113483 0.902186 +vn -0.411465 0.112585 0.904445 +vn 0.196265 0.808193 0.555251 +vn 0.176125 0.758845 0.627004 +vn 0.162527 0.824943 0.541344 +vn 0.297152 0.252488 0.920842 +vn 0.242177 0.214402 0.946247 +vn 0.303048 0.293116 0.906777 +vn 0.884481 0.303125 0.354694 +vn 0.892874 0.361809 0.268086 +vn 0.884481 0.303125 0.354694 +vn 0.884481 0.303125 0.354694 +vn 0.866346 0.241102 0.437396 +vn 0.884481 0.303125 0.354694 +vn 0.414725 0.131763 0.900356 +vn 0.242177 0.214402 0.946247 +vn 0.288014 0.147023 0.946273 +vn 0.949488 -0.112338 0.293008 +vn 0.949488 -0.112338 0.293008 +vn 0.969806 -0.157593 0.186122 +vn 0.787925 -0.317847 0.527397 +vn 0.787925 -0.317847 0.527397 +vn 0.787925 -0.317847 0.527397 +vn 0.949488 -0.112338 0.293008 +vn 0.949488 -0.112338 0.293008 +vn 0.915986 -0.065522 0.395825 +vn 0.753743 -0.510149 0.414270 +vn 0.776848 -0.467832 0.421475 +vn 0.776848 -0.467832 0.421475 +vn 0.018536 -0.986404 -0.163288 +vn 0.018536 -0.986404 -0.163288 +vn 0.018536 -0.986404 -0.163288 +vn 0.000000 -0.559207 0.829028 +vn 0.000000 -0.505575 0.862782 +vn 0.000000 -0.505575 0.862782 +vn 0.000000 -0.505575 0.862782 +vn 0.000000 -0.559207 0.829028 +vn 0.000000 -0.559207 0.829028 +vn -0.000000 -0.999320 -0.036864 +vn 0.000000 -0.999637 -0.026940 +vn -0.000000 -0.996269 -0.086304 +vn -0.000000 -0.999320 -0.036864 +vn -0.000000 -0.996269 -0.086304 +vn -0.000000 -0.996269 -0.086303 +vn 0.967289 -0.253000 0.018501 +vn 0.967289 -0.253000 0.018501 +vn 0.967289 -0.253000 0.018501 +vn 0.798106 -0.424403 0.427679 +vn 0.776848 -0.467832 0.421475 +vn 0.776848 -0.467832 0.421475 +vn 0.912248 -0.016130 0.409321 +vn 0.942588 0.021864 0.333241 +vn 0.929327 0.078675 0.360780 +vn 0.942588 0.021864 0.333241 +vn 0.912248 -0.016130 0.409321 +vn 0.892327 -0.108495 0.438157 +vn 0.597535 0.377617 0.707359 +vn 0.597535 0.377617 0.707359 +vn 0.597535 0.377617 0.707359 +vn 0.094540 0.854342 0.511040 +vn 0.154989 0.854371 0.496013 +vn 0.162527 0.824943 0.541344 +vn 0.407300 -0.412110 0.815029 +vn 0.423116 -0.207772 0.881932 +vn 0.464138 -0.375597 0.802187 +vn 0.464138 -0.375597 0.802187 +vn 0.392181 -0.507824 0.767013 +vn 0.407300 -0.412110 0.815029 +vn -0.556814 0.620857 0.551810 +vn -0.556814 0.620857 0.551810 +vn -0.556814 0.620857 0.551810 +vn 0.407300 -0.412110 0.815029 +vn 0.392181 -0.507824 0.767013 +vn 0.290065 -0.478130 0.829008 +vn -0.017339 -0.222257 0.974834 +vn -0.017339 -0.222257 0.974834 +vn -0.017339 -0.222257 0.974834 +vn 0.242177 0.214402 0.946247 +vn 0.414725 0.131763 0.900356 +vn 0.225733 0.174800 0.958379 +vn 0.303048 0.293116 0.906777 +vn 0.371912 0.250351 0.893871 +vn 0.297152 0.252488 0.920842 +vn 0.000000 0.991382 0.131005 +vn 0.000000 0.991382 0.131005 +vn 0.000000 0.991382 0.131005 +vn 0.000000 0.991382 0.131005 +vn 0.000000 0.991382 0.131005 +vn 0.000000 0.991382 0.131005 +vn 0.942588 0.021864 0.333241 +vn 0.986145 0.037847 0.161510 +vn 0.965242 0.059676 0.254453 +vn 0.965242 0.059676 0.254453 +vn 0.929327 0.078675 0.360780 +vn 0.942588 0.021864 0.333241 +vn 0.590212 0.761626 0.267537 +vn 0.553387 0.796346 0.244122 +vn 0.654626 0.738543 0.161308 +vn 0.654626 0.738543 0.161308 +vn 0.732415 0.650156 0.202153 +vn 0.590212 0.761626 0.267537 +vn 0.414725 0.131763 0.900356 +vn 0.614371 0.100452 0.782596 +vn 0.599450 0.066758 0.797623 +vn 0.414725 0.131763 0.900356 +vn 0.288014 0.147023 0.946273 +vn 0.497716 0.115337 0.859637 +vn 0.497716 0.115337 0.859637 +vn 0.614371 0.100452 0.782596 +vn 0.414725 0.131763 0.900356 +vn 0.196265 0.808193 0.555251 +vn 0.162527 0.824943 0.541344 +vn 0.154989 0.854371 0.496013 +vn 0.516975 0.772511 0.368732 +vn 0.553387 0.796346 0.244122 +vn 0.590212 0.761626 0.267537 +vn 0.590212 0.761626 0.267537 +vn 0.502812 0.780686 0.371094 +vn 0.516975 0.772511 0.368732 +vn 0.288014 0.147023 0.946273 +vn 0.242177 0.214402 0.946247 +vn 0.297152 0.252488 0.920842 +vn 0.000000 0.731161 0.682205 +vn 0.000000 0.559102 0.829099 +vn 0.000000 0.559102 0.829099 +vn 0.000000 0.559102 0.829099 +vn 0.000000 0.731161 0.682205 +vn 0.000000 0.731161 0.682205 +vn 0.292402 0.735849 -0.610760 +vn 0.410492 0.676393 -0.611546 +vn 0.410492 0.676393 -0.611546 +vn 0.410492 0.676393 -0.611546 +vn 0.521407 0.605113 -0.601642 +vn 0.410492 0.676393 -0.611546 +vn 0.738756 0.171591 -0.651764 +vn 0.681634 0.191303 -0.706242 +vn 0.627754 0.355929 -0.692271 +vn 0.627354 0.750824 -0.206618 +vn 0.627354 0.750824 -0.206618 +vn 0.627354 0.750824 -0.206618 +vn 0.756996 0.083522 -0.648060 +vn 0.681634 0.191303 -0.706242 +vn 0.738756 0.171591 -0.651764 +vn 0.738756 0.171591 -0.651764 +vn 0.873488 0.059242 -0.483229 +vn 0.756996 0.083522 -0.648060 +vn -0.444201 -0.894845 0.044028 +vn -0.361924 -0.931859 0.025509 +vn -0.444201 -0.894845 0.044028 +vn -0.444201 -0.894845 0.044028 +vn -0.522710 -0.850240 0.062174 +vn -0.444201 -0.894845 0.044028 +vn 0.141749 0.168051 -0.975534 +vn 0.141749 0.168051 -0.975534 +vn 0.171792 0.085748 -0.981394 +vn 0.141749 0.168051 -0.975534 +vn 0.141749 0.168051 -0.975534 +vn 0.110613 0.249058 -0.962151 +vn 0.627754 0.355929 -0.692271 +vn 0.681634 0.191303 -0.706242 +vn 0.706189 0.208586 -0.676601 +vn 0.681634 0.191303 -0.706242 +vn 0.756996 0.083522 -0.648060 +vn 0.712611 0.067971 -0.698259 +vn 0.712611 0.067971 -0.698259 +vn 0.706189 0.208586 -0.676601 +vn 0.681634 0.191303 -0.706242 +vn 0.643784 -0.484445 -0.592330 +vn 0.615331 -0.456499 -0.642632 +vn 0.701412 -0.489811 -0.517790 +vn 0.701412 -0.489811 -0.517790 +vn 0.738344 -0.502115 -0.450255 +vn 0.643784 -0.484445 -0.592330 +vn 0.738344 -0.502115 -0.450255 +vn 0.701412 -0.489811 -0.517790 +vn 0.797670 -0.487419 -0.355169 +vn 0.726127 0.479824 -0.492452 +vn 0.765806 0.321348 -0.557025 +vn 0.765806 0.321348 -0.557025 +vn 0.619619 -0.388179 -0.682195 +vn 0.619619 -0.388179 -0.682195 +vn 0.619619 -0.388179 -0.682195 +vn 0.667124 0.744400 -0.028542 +vn 0.667124 0.744400 -0.028542 +vn 0.667124 0.744400 -0.028542 +vn 0.635435 -0.329080 -0.698519 +vn 0.635435 -0.329080 -0.698519 +vn 0.635435 -0.329080 -0.698519 +vn -0.411643 0.111793 0.904463 +vn -0.416151 0.113479 0.902187 +vn -0.411573 0.112329 0.904428 +vn -0.411573 0.112329 0.904428 +vn -0.406887 0.111161 0.906690 +vn -0.411643 0.111793 0.904463 +vn 0.781853 0.152955 -0.604410 +vn 0.765806 0.321348 -0.557025 +vn 0.765806 0.321348 -0.557025 +vn -0.411573 0.112329 0.904428 +vn -0.411465 0.112585 0.904445 +vn -0.406887 0.111161 0.906690 +vn 0.746697 0.565425 -0.350341 +vn 0.746697 0.565425 -0.350341 +vn 0.746697 0.565425 -0.350341 +vn 0.609590 -0.460140 -0.645501 +vn 0.609590 -0.460140 -0.645501 +vn 0.609590 -0.460140 -0.645501 +vn -0.416150 0.113473 0.902188 +vn -0.411428 0.112305 0.904497 +vn -0.411465 0.112585 0.904445 +vn -0.406887 0.111161 0.906690 +vn -0.411465 0.112585 0.904445 +vn -0.411428 0.112305 0.904497 +vn -0.000000 -0.996269 -0.086304 +vn 0.000000 -0.996269 -0.086304 +vn 0.000000 -0.996269 -0.086303 +vn 0.000000 -0.996269 -0.086303 +vn -0.000000 -0.996269 -0.086303 +vn -0.000000 -0.996269 -0.086304 +vn 0.075817 -0.414073 0.907081 +vn 0.128575 -0.484187 0.865466 +vn 0.050914 -0.430254 0.901271 +vn 0.050914 -0.430254 0.901271 +vn 0.011801 -0.401574 0.915751 +vn 0.075817 -0.414073 0.907081 +vn 0.001205 -0.461290 0.887249 +vn 0.011801 -0.401574 0.915751 +vn 0.050914 -0.430254 0.901271 +vn -0.184507 -0.288299 0.939596 +vn -0.184507 -0.288299 0.939596 +vn -0.184507 -0.288299 0.939596 +vn -0.547465 -0.341269 0.764080 +vn -0.547465 -0.341269 0.764080 +vn -0.547465 -0.341269 0.764080 +vn 0.411573 0.112329 0.904428 +vn 0.411465 0.112585 0.904445 +vn 0.416152 0.113483 0.902186 +vn -0.196265 0.808193 0.555251 +vn -0.162527 0.824943 0.541345 +vn -0.176125 0.758845 0.627004 +vn -0.297152 0.252488 0.920842 +vn -0.303048 0.293115 0.906777 +vn -0.242177 0.214402 0.946247 +vn -0.884481 0.303125 0.354694 +vn -0.884481 0.303125 0.354694 +vn -0.892874 0.361809 0.268086 +vn -0.884481 0.303125 0.354694 +vn -0.884481 0.303125 0.354694 +vn -0.866346 0.241102 0.437396 +vn -0.414725 0.131763 0.900356 +vn -0.288014 0.147023 0.946273 +vn -0.242177 0.214402 0.946247 +vn -0.787925 -0.317847 0.527397 +vn -0.787925 -0.317847 0.527397 +vn -0.787925 -0.317847 0.527397 +vn -0.969806 -0.157593 0.186122 +vn -0.949488 -0.112338 0.293008 +vn -0.949488 -0.112338 0.293008 +vn -0.776848 -0.467831 0.421475 +vn -0.776848 -0.467831 0.421475 +vn -0.753743 -0.510148 0.414270 +vn -0.915986 -0.065522 0.395825 +vn -0.949488 -0.112338 0.293008 +vn -0.949488 -0.112338 0.293008 +vn -0.018536 -0.986404 -0.163288 +vn -0.018536 -0.986404 -0.163288 +vn -0.018536 -0.986404 -0.163288 +vn 0.000000 -0.996269 -0.086304 +vn 0.000000 -0.999996 0.002857 +vn 0.000000 -0.999320 -0.036864 +vn 0.000000 -0.996269 -0.086303 +vn 0.000000 -0.996269 -0.086304 +vn 0.000000 -0.999320 -0.036864 +vn -0.967289 -0.253000 0.018501 +vn -0.967289 -0.253000 0.018501 +vn -0.967289 -0.253000 0.018501 +vn -0.798106 -0.424402 0.427679 +vn -0.776848 -0.467831 0.421475 +vn -0.776848 -0.467831 0.421475 +vn -0.912248 -0.016130 0.409321 +vn -0.929327 0.078675 0.360780 +vn -0.942588 0.021864 0.333241 +vn -0.942588 0.021864 0.333241 +vn -0.892327 -0.108495 0.438157 +vn -0.912248 -0.016130 0.409321 +vn -0.162527 0.824943 0.541345 +vn -0.154989 0.854371 0.496013 +vn -0.094540 0.854342 0.511040 +vn -0.597535 0.377617 0.707359 +vn -0.597535 0.377617 0.707359 +vn -0.597535 0.377617 0.707359 +vn -0.407300 -0.412110 0.815029 +vn -0.392181 -0.507824 0.767013 +vn -0.464138 -0.375597 0.802187 +vn -0.464138 -0.375597 0.802187 +vn -0.423116 -0.207772 0.881932 +vn -0.407300 -0.412110 0.815029 +vn 0.556814 0.620857 0.551810 +vn 0.556814 0.620857 0.551810 +vn 0.556814 0.620857 0.551810 +vn -0.407300 -0.412110 0.815029 +vn -0.290065 -0.478130 0.829008 +vn -0.392181 -0.507824 0.767013 +vn -0.225733 0.174800 0.958379 +vn -0.414725 0.131763 0.900356 +vn -0.242177 0.214402 0.946247 +vn 0.017339 -0.222257 0.974834 +vn 0.017339 -0.222257 0.974834 +vn 0.017339 -0.222257 0.974834 +vn -0.303048 0.293115 0.906777 +vn -0.297152 0.252488 0.920842 +vn -0.371912 0.250351 0.893871 +vn -0.942588 0.021864 0.333241 +vn -0.929327 0.078675 0.360780 +vn -0.965242 0.059676 0.254453 +vn -0.965242 0.059676 0.254453 +vn -0.986145 0.037847 0.161510 +vn -0.942588 0.021864 0.333241 +vn -0.590212 0.761626 0.267537 +vn -0.732415 0.650156 0.202153 +vn -0.654626 0.738543 0.161308 +vn -0.654626 0.738543 0.161308 +vn -0.553387 0.796346 0.244122 +vn -0.590212 0.761626 0.267537 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.571818 0.820381 +vn 0.000000 0.544401 0.838825 +vn 0.000000 0.598581 0.801062 +vn 0.000000 0.598581 0.801062 +vn 0.000000 0.598581 0.801062 +vn 0.000000 0.571818 0.820381 +vn -0.414725 0.131763 0.900356 +vn -0.599450 0.066758 0.797623 +vn -0.614371 0.100452 0.782596 +vn -0.414725 0.131763 0.900356 +vn -0.614371 0.100452 0.782596 +vn -0.497716 0.115337 0.859637 +vn -0.497716 0.115337 0.859637 +vn -0.288014 0.147023 0.946273 +vn -0.414725 0.131763 0.900356 +vn -0.196265 0.808193 0.555251 +vn -0.154989 0.854371 0.496013 +vn -0.162527 0.824943 0.541345 +vn -0.516975 0.772511 0.368732 +vn -0.502811 0.780685 0.371094 +vn -0.590212 0.761626 0.267537 +vn -0.590212 0.761626 0.267537 +vn -0.553387 0.796346 0.244122 +vn -0.516975 0.772511 0.368732 +vn -0.288014 0.147023 0.946273 +vn -0.297152 0.252488 0.920842 +vn -0.242177 0.214402 0.946247 +vn -0.292402 0.735849 -0.610760 +vn -0.410492 0.676393 -0.611546 +vn -0.410492 0.676393 -0.611546 +vn -0.410492 0.676393 -0.611546 +vn -0.410492 0.676393 -0.611546 +vn -0.521407 0.605113 -0.601642 +vn 0.000000 0.980345 -0.197290 +vn 0.000000 0.980345 -0.197290 +vn 0.000000 0.980345 -0.197290 +vn 0.000000 0.980345 -0.197290 +vn 0.000000 0.980345 -0.197290 +vn 0.000000 0.980345 -0.197290 +vn -0.627354 0.750824 -0.206618 +vn -0.627354 0.750824 -0.206618 +vn -0.627354 0.750824 -0.206618 +vn -0.627754 0.355929 -0.692271 +vn -0.681634 0.191303 -0.706242 +vn -0.738756 0.171591 -0.651764 +vn -0.756996 0.083522 -0.648060 +vn -0.873487 0.059242 -0.483229 +vn -0.738756 0.171591 -0.651764 +vn -0.738756 0.171591 -0.651764 +vn -0.681634 0.191303 -0.706242 +vn -0.756996 0.083522 -0.648060 +vn 0.000000 0.480972 -0.876736 +vn 0.000000 0.480972 -0.876736 +vn 0.000000 0.480972 -0.876736 +vn 0.000000 0.480972 -0.876736 +vn 0.000000 0.480972 -0.876736 +vn 0.000000 0.480972 -0.876736 +vn 0.444201 -0.894845 0.044028 +vn 0.522710 -0.850240 0.062174 +vn 0.444201 -0.894845 0.044028 +vn 0.444201 -0.894845 0.044028 +vn 0.361924 -0.931859 0.025509 +vn 0.444201 -0.894845 0.044028 +vn -0.141749 0.168051 -0.975534 +vn -0.171792 0.085748 -0.981394 +vn -0.141749 0.168051 -0.975534 +vn -0.141749 0.168051 -0.975534 +vn -0.110613 0.249058 -0.962151 +vn -0.141749 0.168051 -0.975534 +vn -0.627754 0.355929 -0.692271 +vn -0.706189 0.208586 -0.676601 +vn -0.681634 0.191303 -0.706242 +vn -0.681634 0.191303 -0.706242 +vn -0.706189 0.208586 -0.676601 +vn -0.712611 0.067971 -0.698259 +vn -0.712611 0.067971 -0.698259 +vn -0.756996 0.083522 -0.648060 +vn -0.681634 0.191303 -0.706242 +vn -0.643784 -0.484445 -0.592330 +vn -0.738344 -0.502115 -0.450255 +vn -0.701412 -0.489811 -0.517790 +vn -0.701412 -0.489811 -0.517790 +vn -0.615331 -0.456499 -0.642632 +vn -0.643784 -0.484445 -0.592330 +vn -0.738344 -0.502115 -0.450255 +vn -0.797670 -0.487419 -0.355168 +vn -0.701412 -0.489811 -0.517790 +vn 0.000000 -0.998058 0.062285 +vn 0.000000 -0.998058 0.062285 +vn 0.000000 -0.999996 0.002857 +vn 0.000000 -0.999996 0.002857 +vn 0.000000 -0.999637 -0.026940 +vn 0.000000 -0.998058 0.062285 +vn -0.726127 0.479824 -0.492452 +vn -0.765806 0.321347 -0.557025 +vn -0.765806 0.321347 -0.557025 +vn -0.619619 -0.388179 -0.682195 +vn -0.619619 -0.388179 -0.682195 +vn -0.619619 -0.388179 -0.682195 +vn -0.667124 0.744400 -0.028542 +vn -0.667124 0.744400 -0.028542 +vn -0.667124 0.744400 -0.028542 +vn -0.635435 -0.329080 -0.698519 +vn -0.635435 -0.329080 -0.698519 +vn -0.635435 -0.329080 -0.698519 +vn 0.411643 0.111793 0.904462 +vn 0.411573 0.112329 0.904428 +vn 0.416151 0.113479 0.902187 +vn 0.411573 0.112329 0.904428 +vn 0.411643 0.111793 0.904462 +vn 0.406887 0.111161 0.906690 +vn -0.781853 0.152955 -0.604410 +vn -0.765806 0.321347 -0.557025 +vn -0.765806 0.321347 -0.557025 +vn 0.411573 0.112329 0.904428 +vn 0.406887 0.111161 0.906690 +vn 0.411465 0.112585 0.904445 +vn -0.746697 0.565425 -0.350341 +vn -0.746697 0.565425 -0.350341 +vn -0.746697 0.565425 -0.350341 +vn -0.609590 -0.460140 -0.645501 +vn -0.609590 -0.460140 -0.645501 +vn -0.609590 -0.460140 -0.645501 +vn 0.416150 0.113473 0.902188 +vn 0.411465 0.112585 0.904445 +vn 0.411428 0.112305 0.904497 +vn 0.406887 0.111161 0.906690 +vn 0.411428 0.112305 0.904497 +vn 0.411465 0.112585 0.904445 +vn 0.000000 -0.996269 -0.086304 +vn -0.000000 -0.996269 -0.086304 +vn 0.000000 -0.999637 -0.026940 +vn 0.000000 -0.999637 -0.026940 +vn 0.000000 -0.999996 0.002857 +vn 0.000000 -0.996269 -0.086304 +vn 0.000000 0.731161 0.682205 +vn 0.000000 0.731161 0.682205 +vn 0.000000 0.839360 0.543576 +vn 0.000000 0.839360 0.543576 +vn 0.000000 0.839360 0.543576 +vn 0.000000 0.731161 0.682205 +vn 0.000000 -0.676198 -0.736720 +vn 0.000000 -0.676198 -0.736720 +vn 0.000000 -0.617996 -0.786181 +vn 0.000000 -0.617996 -0.786181 +vn 0.000000 -0.617996 -0.786181 +vn 0.000000 -0.676198 -0.736720 +vn 0.000000 -0.999996 0.002857 +vn 0.000000 -0.998058 0.062285 +vn 0.000000 -0.999320 -0.036864 +vn 0.000000 -0.449914 0.893072 +vn 0.000000 -0.449914 0.893072 +vn 0.000000 -0.505575 0.862782 +vn 0.000000 -0.505575 0.862782 +vn 0.000000 -0.505575 0.862782 +vn 0.000000 -0.449914 0.893072 +vn 0.000000 0.544401 0.838825 +vn 0.000000 0.571818 0.820381 +vn 0.000000 0.559102 0.829099 +vn 0.000000 0.559102 0.829099 +vn 0.000000 0.559102 0.829099 +vn 0.000000 0.544401 0.838825 +vn 0.000000 -0.012384 -0.999923 +vn 0.000000 -0.012384 -0.999923 +vn 0.000000 -0.012384 -0.999923 +vn 0.000000 -0.012384 -0.999923 +vn 0.000000 -0.012384 -0.999923 +vn 0.000000 -0.012384 -0.999923 +vn 0.000000 -0.676198 -0.736720 +vn 0.000000 -0.730455 -0.682961 +vn 0.000000 -0.730455 -0.682961 +vn 0.000000 -0.730455 -0.682961 +vn 0.000000 -0.676198 -0.736720 +vn 0.000000 -0.676198 -0.736720 +vn 0.000000 -0.999637 -0.026940 +vn -0.000000 -0.999320 -0.036864 +vn 0.000000 -0.998058 0.062285 +vn -0.050914 -0.430254 0.901271 +vn -0.011801 -0.401574 0.915751 +vn -0.001205 -0.461290 0.887249 +vn -0.339284 -0.653399 0.676724 +vn -0.339284 -0.653399 0.676724 +vn -0.339284 -0.653399 0.676724 +s off +g Default_2 +usemtl Default_2SG4 +f 1/1/1 2/2/2 3/3/3 +f 3/3/4 4/4/5 1/1/6 +usemtl Default_2SG3 +f 5/5/7 6/6/8 3/3/9 +usemtl Default_2SG4 +f 7/7/10 4/4/11 3/3/12 +usemtl Default_2SG3 +f 3/3/13 6/6/14 7/7/15 +usemtl Default_2SG4 +f 8/8/16 9/9/17 10/10/18 +f 11/11/19 4/4/20 7/7/21 +usemtl Default_2SG +f 12/12/22 13/13/23 14/14/24 +usemtl Default_2SG6 +f 15/15/25 16/16/26 12/12/27 +f 12/12/28 17/17/29 15/15/30 +usemtl Default_2SG12 +f 18/18/31 13/13/32 19/19/33 +usemtl Default_2SG1 +f 20/20/34 21/21/35 22/22/36 +f 22/22/37 23/23/38 20/20/39 +f 21/21/40 20/20/41 24/24/42 +f 24/24/43 25/25/44 21/21/45 +f 24/24/46 26/26/47 25/25/48 +f 20/20/49 23/23/50 27/27/51 +f 27/27/52 28/28/53 20/20/54 +f 24/24/55 29/29/56 30/30/57 +f 24/24/58 30/30/59 31/31/60 +f 26/26/61 24/24/62 31/31/63 +f 22/22/64 21/21/65 25/25/66 +f 25/25/67 32/32/68 22/22/69 +usemtl Default_2SG10 +f 32/32/70 25/25/71 19/19/72 +usemtl Default_2SG8 +f 7/7/73 6/6/74 17/17/75 +f 17/17/76 18/18/77 7/7/78 +usemtl Default_2SG11 +f 25/25/79 33/33/80 34/34/81 +usemtl Default_2SG9 +f 34/34/82 35/35/83 25/25/84 +usemtl Default_2SG2 +f 6/6/85 5/5/86 36/36/87 +usemtl Default_2SG10 +f 25/25/88 35/35/89 19/19/90 +usemtl Default_2SG6 +f 17/17/91 14/14/92 13/13/93 +usemtl Default_2SG8 +f 13/13/94 18/18/95 17/17/96 +usemtl Default_2SG12 +f 14/14/97 17/17/98 12/12/99 +usemtl Default_2SG +f 37/37/100 16/16/101 38/38/102 +f 38/38/103 39/39/104 37/37/105 +f 32/32/106 40/40/107 23/23/108 +f 23/23/109 22/22/110 32/32/111 +f 32/32/112 16/16/113 37/37/114 +f 37/37/115 40/40/116 32/32/117 +usemtl Default_2SG6 +f 18/18/118 34/34/119 11/11/120 +f 18/18/121 19/19/122 35/35/123 +f 35/35/124 34/34/125 18/18/126 +usemtl Default_2SG7 +f 11/11/127 7/7/128 18/18/129 +usemtl Default_2SG6 +f 12/12/130 16/16/131 32/32/132 +usemtl Default_2SG7 +f 32/32/133 19/19/134 12/12/135 +usemtl Default_2SG6 +f 19/19/136 13/13/137 12/12/138 +usemtl Default_2SG7 +f 15/15/139 17/17/140 41/41/141 +f 41/41/142 42/42/143 15/15/144 +usemtl Default_2SG10 +f 36/36/145 5/5/146 43/43/147 +f 5/5/148 2/2/149 43/43/150 +f 43/43/151 44/44/152 45/45/153 +f 45/45/154 36/36/155 43/43/156 +f 46/46/157 44/44/158 43/43/159 +f 43/43/160 11/11/161 46/46/162 +f 31/31/163 33/33/164 25/25/165 +usemtl Default_2SG1 +f 25/25/166 26/26/167 31/31/168 +usemtl Default_2SG10 +f 31/31/169 34/34/170 33/33/171 +f 34/34/172 31/31/173 11/11/174 +f 45/45/175 44/44/176 47/47/177 +f 44/44/178 46/46/179 48/48/180 +f 48/48/181 47/47/182 44/44/183 +f 49/49/184 48/48/185 46/46/186 +f 46/46/187 31/31/188 49/49/189 +f 31/31/190 46/46/191 11/11/192 +f 50/50/193 43/43/194 1/1/195 +f 9/9/196 8/8/197 43/43/198 +f 51/51/199 43/43/200 8/8/201 +f 51/51/202 11/11/203 43/43/204 +usemtl Default_2SG4 +f 11/11/205 51/51/206 8/8/207 +f 8/8/208 4/4/209 11/11/210 +usemtl Default_2SG10 +f 2/2/211 1/1/212 43/43/213 +usemtl Default_2SG4 +f 8/8/214 10/10/215 4/4/216 +usemtl Default_2SG10 +f 43/43/217 10/10/218 9/9/219 +f 43/43/220 50/50/221 10/10/222 +usemtl Default_2SG4 +f 50/50/223 1/1/224 10/10/225 +f 4/4/226 10/10/227 1/1/228 +usemtl Default_2SG1 +f 30/30/229 52/52/230 53/53/231 +f 53/53/232 31/31/233 30/30/234 +usemtl Default_2SG4 +f 54/54/235 55/55/236 56/56/237 +f 56/56/238 57/57/239 54/54/240 +usemtl Default_2SG3 +f 58/58/241 57/57/242 56/56/243 +f 59/59/244 60/60/245 56/56/246 +usemtl Default_2SG4 +f 56/56/247 55/55/248 59/59/249 +f 61/61/250 62/62/251 63/63/252 +f 64/64/253 59/59/254 55/55/255 +usemtl Default_2SG +f 65/65/256 66/66/257 67/67/258 +usemtl Default_2SG6 +f 42/42/259 65/65/260 38/38/261 +f 65/65/262 42/42/263 41/41/264 +usemtl Default_2SG12 +f 68/68/265 69/69/266 67/67/267 +usemtl Default_2SG1 +f 28/28/268 27/27/269 70/70/270 +f 70/70/271 71/71/272 28/28/273 +f 71/71/274 72/72/275 73/73/276 +f 73/73/277 28/28/278 71/71/279 +f 73/73/280 72/72/281 74/74/282 +f 52/52/283 75/75/284 73/73/285 +f 53/53/286 52/52/287 73/73/288 +f 74/74/289 53/53/290 73/73/291 +f 70/70/292 72/72/293 71/71/294 +f 72/72/295 70/70/296 76/76/297 +usemtl Default_2SG10 +f 76/76/298 69/69/299 72/72/300 +usemtl Default_2SG8 +f 59/59/301 68/68/302 41/41/303 +f 41/41/304 60/60/305 59/59/306 +usemtl Default_2SG9 +f 72/72/307 77/77/308 78/78/309 +usemtl Default_2SG11 +f 78/78/310 79/79/311 72/72/312 +usemtl Default_2SG2 +f 58/58/313 60/60/314 80/80/315 +usemtl Default_2SG10 +f 72/72/316 69/69/317 77/77/318 +usemtl Default_2SG8 +f 41/41/319 68/68/320 67/67/321 +usemtl Default_2SG6 +f 67/67/322 66/66/323 41/41/324 +usemtl Default_2SG12 +f 66/66/325 65/65/326 41/41/327 +usemtl Default_2SG +f 76/76/328 70/70/329 27/27/330 +f 27/27/331 81/81/332 76/76/333 +f 76/76/334 81/81/335 39/39/336 +f 39/39/337 38/38/338 76/76/339 +f 39/39/340 81/81/341 40/40/342 +f 40/40/343 37/37/344 39/39/345 +usemtl Default_2SG5 +f 60/60/346 6/6/347 36/36/348 +f 36/36/349 80/80/350 60/60/351 +usemtl Default_2SG6 +f 68/68/352 64/64/353 78/78/354 +f 68/68/355 78/78/356 77/77/357 +f 77/77/358 69/69/359 68/68/360 +usemtl Default_2SG7 +f 64/64/361 68/68/362 59/59/363 +f 65/65/364 69/69/365 76/76/366 +usemtl Default_2SG6 +f 76/76/367 38/38/368 65/65/369 +f 69/69/370 65/65/371 67/67/372 +usemtl Default_2SG10 +f 80/80/373 82/82/374 58/58/375 +f 58/58/376 82/82/377 57/57/378 +f 83/83/379 80/80/380 36/36/381 +f 36/36/382 45/45/383 83/83/384 +f 82/82/385 80/80/386 83/83/387 +f 83/83/388 84/84/389 82/82/390 +f 85/85/391 64/64/392 82/82/393 +f 82/82/394 84/84/395 85/85/396 +f 45/45/397 47/47/398 86/86/399 +f 86/86/400 83/83/401 45/45/402 +usemtl Default_2SG1 +f 53/53/403 74/74/404 72/72/405 +usemtl Default_2SG10 +f 72/72/406 79/79/407 53/53/408 +f 53/53/409 79/79/410 78/78/411 +f 78/78/412 64/64/413 53/53/414 +f 83/83/415 86/86/416 84/84/417 +f 84/84/418 86/86/419 87/87/420 +f 87/87/421 85/85/422 84/84/423 +f 88/88/424 53/53/425 85/85/426 +f 85/85/427 87/87/428 88/88/429 +f 53/53/430 64/64/431 85/85/432 +usemtl Default_2SG1 +f 20/20/433 28/28/434 75/75/435 +f 75/75/436 29/29/437 20/20/438 +usemtl Default_2SG10 +f 89/89/439 54/54/440 82/82/441 +f 63/63/442 82/82/443 61/61/444 +f 90/90/445 61/61/446 82/82/447 +f 90/90/448 82/82/449 64/64/450 +usemtl Default_2SG4 +f 64/64/451 61/61/452 90/90/453 +f 61/61/454 64/64/455 55/55/456 +usemtl Default_2SG10 +f 57/57/457 82/82/458 54/54/459 +usemtl Default_2SG4 +f 61/61/460 55/55/461 62/62/462 +usemtl Default_2SG10 +f 82/82/463 63/63/464 62/62/465 +f 82/82/466 62/62/467 89/89/468 +usemtl Default_2SG4 +f 89/89/469 62/62/470 54/54/471 +f 55/55/472 54/54/473 62/62/474 +usemtl Default_2SG1 +f 52/52/475 30/30/476 29/29/477 +f 29/29/478 75/75/479 52/52/480 +usemtl Default_2SG7 +f 15/15/481 42/42/482 38/38/483 +f 38/38/484 16/16/485 15/15/486 +usemtl Default_2SG10 +f 49/49/487 88/88/488 87/87/489 +f 87/87/490 48/48/491 49/49/492 +usemtl Default_2SG1 +f 75/75/493 28/28/494 73/73/495 +usemtl Default_2SG +f 40/40/496 81/81/497 27/27/498 +f 27/27/499 23/23/500 40/40/501 +usemtl Default_2SG7 +f 6/6/502 60/60/503 41/41/504 +f 41/41/505 17/17/506 6/6/507 +usemtl Default_2SG10 +f 48/48/508 87/87/509 86/86/510 +f 86/86/511 47/47/512 48/48/513 +f 49/49/514 31/91/515 53/53/516 +f 53/53/517 88/88/518 49/49/519 +usemtl Default_2SG1 +f 29/29/520 24/24/521 20/20/522 +usemtl Default_2SG3 +f 3/3/523 2/2/524 5/5/525 +f 56/56/526 60/60/527 58/58/528 diff --git a/docs/beta/bundle.js b/docs/beta/bundle.js new file mode 100644 index 00000000..207be347 --- /dev/null +++ b/docs/beta/bundle.js @@ -0,0 +1,3814 @@ +(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i { + const rect = container.getBoundingClientRect() + renderFox(rect, lookCurrent, slowDrift) + } + + return createLogoViewer(container, renderScene, { cameraDistance, ...options }) +} + +},{"./beta-fox.json":1,"./fox.json":3,"./util.js":14}],5:[function(require,module,exports){ +'use strict'; + +var deselectCurrent = require('toggle-selection'); + +var defaultMessage = 'Copy to clipboard: #{key}, Enter'; + +function format(message) { + var copyKey = (/mac os x/i.test(navigator.userAgent) ? '⌘' : 'Ctrl') + '+C'; + return message.replace(/#{\s*key\s*}/g, copyKey); +} + +function copy(text, options) { + var debug, message, reselectPrevious, range, selection, mark, success = false; + if (!options) { options = {}; } + debug = options.debug || false; + try { + reselectPrevious = deselectCurrent(); + + range = document.createRange(); + selection = document.getSelection(); + + mark = document.createElement('span'); + mark.textContent = text; + // reset user styles for span element + mark.style.all = 'unset'; + // prevents scrolling to the end of the page + mark.style.position = 'fixed'; + mark.style.top = 0; + mark.style.clip = 'rect(0, 0, 0, 0)'; + // used to preserve spaces and line breaks + mark.style.whiteSpace = 'pre'; + // do not inherit user-select (it may be `none`) + mark.style.webkitUserSelect = 'text'; + mark.style.MozUserSelect = 'text'; + mark.style.msUserSelect = 'text'; + mark.style.userSelect = 'text'; + + document.body.appendChild(mark); + + range.selectNode(mark); + selection.addRange(range); + + var successful = document.execCommand('copy'); + if (!successful) { + throw new Error('copy command was unsuccessful'); + } + success = true; + } catch (err) { + debug && console.error('unable to copy using execCommand: ', err); + debug && console.warn('trying IE specific stuff'); + try { + window.clipboardData.setData('text', text); + success = true; + } catch (err) { + debug && console.error('unable to copy using clipboardData: ', err); + debug && console.error('falling back to prompt'); + message = format('message' in options ? options.message : defaultMessage); + window.prompt(message, text); + } + } finally { + if (selection) { + if (typeof selection.removeRange == 'function') { + selection.removeRange(range); + } else { + selection.removeAllRanges(); + } + } + + if (mark) { + document.body.removeChild(mark); + } + reselectPrevious(); + } + + return success; +} + +module.exports = copy; + +},{"toggle-selection":13}],6:[function(require,module,exports){ +module.exports = identity; + +/** + * Set a mat4 to the identity matrix + * + * @param {mat4} out the receiving matrix + * @returns {mat4} out + */ +function identity(out) { + out[0] = 1; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = 0; + out[5] = 1; + out[6] = 0; + out[7] = 0; + out[8] = 0; + out[9] = 0; + out[10] = 1; + out[11] = 0; + out[12] = 0; + out[13] = 0; + out[14] = 0; + out[15] = 1; + return out; +}; +},{}],7:[function(require,module,exports){ +module.exports = invert; + +/** + * Inverts a mat4 + * + * @param {mat4} out the receiving matrix + * @param {mat4} a the source matrix + * @returns {mat4} out + */ +function invert(out, a) { + var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3], + a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7], + a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11], + a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15], + + b00 = a00 * a11 - a01 * a10, + b01 = a00 * a12 - a02 * a10, + b02 = a00 * a13 - a03 * a10, + b03 = a01 * a12 - a02 * a11, + b04 = a01 * a13 - a03 * a11, + b05 = a02 * a13 - a03 * a12, + b06 = a20 * a31 - a21 * a30, + b07 = a20 * a32 - a22 * a30, + b08 = a20 * a33 - a23 * a30, + b09 = a21 * a32 - a22 * a31, + b10 = a21 * a33 - a23 * a31, + b11 = a22 * a33 - a23 * a32, + + // Calculate the determinant + det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06; + + if (!det) { + return null; + } + det = 1.0 / det; + + out[0] = (a11 * b11 - a12 * b10 + a13 * b09) * det; + out[1] = (a02 * b10 - a01 * b11 - a03 * b09) * det; + out[2] = (a31 * b05 - a32 * b04 + a33 * b03) * det; + out[3] = (a22 * b04 - a21 * b05 - a23 * b03) * det; + out[4] = (a12 * b08 - a10 * b11 - a13 * b07) * det; + out[5] = (a00 * b11 - a02 * b08 + a03 * b07) * det; + out[6] = (a32 * b02 - a30 * b05 - a33 * b01) * det; + out[7] = (a20 * b05 - a22 * b02 + a23 * b01) * det; + out[8] = (a10 * b10 - a11 * b08 + a13 * b06) * det; + out[9] = (a01 * b08 - a00 * b10 - a03 * b06) * det; + out[10] = (a30 * b04 - a31 * b02 + a33 * b00) * det; + out[11] = (a21 * b02 - a20 * b04 - a23 * b00) * det; + out[12] = (a11 * b07 - a10 * b09 - a12 * b06) * det; + out[13] = (a00 * b09 - a01 * b07 + a02 * b06) * det; + out[14] = (a31 * b01 - a30 * b03 - a32 * b00) * det; + out[15] = (a20 * b03 - a21 * b01 + a22 * b00) * det; + + return out; +}; +},{}],8:[function(require,module,exports){ +var identity = require('./identity'); + +module.exports = lookAt; + +/** + * Generates a look-at matrix with the given eye position, focal point, and up axis + * + * @param {mat4} out mat4 frustum matrix will be written into + * @param {vec3} eye Position of the viewer + * @param {vec3} center Point the viewer is looking at + * @param {vec3} up vec3 pointing up + * @returns {mat4} out + */ +function lookAt(out, eye, center, up) { + var x0, x1, x2, y0, y1, y2, z0, z1, z2, len, + eyex = eye[0], + eyey = eye[1], + eyez = eye[2], + upx = up[0], + upy = up[1], + upz = up[2], + centerx = center[0], + centery = center[1], + centerz = center[2]; + + if (Math.abs(eyex - centerx) < 0.000001 && + Math.abs(eyey - centery) < 0.000001 && + Math.abs(eyez - centerz) < 0.000001) { + return identity(out); + } + + z0 = eyex - centerx; + z1 = eyey - centery; + z2 = eyez - centerz; + + len = 1 / Math.sqrt(z0 * z0 + z1 * z1 + z2 * z2); + z0 *= len; + z1 *= len; + z2 *= len; + + x0 = upy * z2 - upz * z1; + x1 = upz * z0 - upx * z2; + x2 = upx * z1 - upy * z0; + len = Math.sqrt(x0 * x0 + x1 * x1 + x2 * x2); + if (!len) { + x0 = 0; + x1 = 0; + x2 = 0; + } else { + len = 1 / len; + x0 *= len; + x1 *= len; + x2 *= len; + } + + y0 = z1 * x2 - z2 * x1; + y1 = z2 * x0 - z0 * x2; + y2 = z0 * x1 - z1 * x0; + + len = Math.sqrt(y0 * y0 + y1 * y1 + y2 * y2); + if (!len) { + y0 = 0; + y1 = 0; + y2 = 0; + } else { + len = 1 / len; + y0 *= len; + y1 *= len; + y2 *= len; + } + + out[0] = x0; + out[1] = y0; + out[2] = z0; + out[3] = 0; + out[4] = x1; + out[5] = y1; + out[6] = z1; + out[7] = 0; + out[8] = x2; + out[9] = y2; + out[10] = z2; + out[11] = 0; + out[12] = -(x0 * eyex + x1 * eyey + x2 * eyez); + out[13] = -(y0 * eyex + y1 * eyey + y2 * eyez); + out[14] = -(z0 * eyex + z1 * eyey + z2 * eyez); + out[15] = 1; + + return out; +}; +},{"./identity":6}],9:[function(require,module,exports){ +module.exports = multiply; + +/** + * Multiplies two mat4's + * + * @param {mat4} out the receiving matrix + * @param {mat4} a the first operand + * @param {mat4} b the second operand + * @returns {mat4} out + */ +function multiply(out, a, b) { + var a00 = a[0], a01 = a[1], a02 = a[2], a03 = a[3], + a10 = a[4], a11 = a[5], a12 = a[6], a13 = a[7], + a20 = a[8], a21 = a[9], a22 = a[10], a23 = a[11], + a30 = a[12], a31 = a[13], a32 = a[14], a33 = a[15]; + + // Cache only the current line of the second matrix + var b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3]; + out[0] = b0*a00 + b1*a10 + b2*a20 + b3*a30; + out[1] = b0*a01 + b1*a11 + b2*a21 + b3*a31; + out[2] = b0*a02 + b1*a12 + b2*a22 + b3*a32; + out[3] = b0*a03 + b1*a13 + b2*a23 + b3*a33; + + b0 = b[4]; b1 = b[5]; b2 = b[6]; b3 = b[7]; + out[4] = b0*a00 + b1*a10 + b2*a20 + b3*a30; + out[5] = b0*a01 + b1*a11 + b2*a21 + b3*a31; + out[6] = b0*a02 + b1*a12 + b2*a22 + b3*a32; + out[7] = b0*a03 + b1*a13 + b2*a23 + b3*a33; + + b0 = b[8]; b1 = b[9]; b2 = b[10]; b3 = b[11]; + out[8] = b0*a00 + b1*a10 + b2*a20 + b3*a30; + out[9] = b0*a01 + b1*a11 + b2*a21 + b3*a31; + out[10] = b0*a02 + b1*a12 + b2*a22 + b3*a32; + out[11] = b0*a03 + b1*a13 + b2*a23 + b3*a33; + + b0 = b[12]; b1 = b[13]; b2 = b[14]; b3 = b[15]; + out[12] = b0*a00 + b1*a10 + b2*a20 + b3*a30; + out[13] = b0*a01 + b1*a11 + b2*a21 + b3*a31; + out[14] = b0*a02 + b1*a12 + b2*a22 + b3*a32; + out[15] = b0*a03 + b1*a13 + b2*a23 + b3*a33; + return out; +}; +},{}],10:[function(require,module,exports){ +module.exports = perspective; + +/** + * Generates a perspective projection matrix with the given bounds + * + * @param {mat4} out mat4 frustum matrix will be written into + * @param {number} fovy Vertical field of view in radians + * @param {number} aspect Aspect ratio. typically viewport width/height + * @param {number} near Near bound of the frustum + * @param {number} far Far bound of the frustum + * @returns {mat4} out + */ +function perspective(out, fovy, aspect, near, far) { + var f = 1.0 / Math.tan(fovy / 2), + nf = 1 / (near - far); + out[0] = f / aspect; + out[1] = 0; + out[2] = 0; + out[3] = 0; + out[4] = 0; + out[5] = f; + out[6] = 0; + out[7] = 0; + out[8] = 0; + out[9] = 0; + out[10] = (far + near) * nf; + out[11] = -1; + out[12] = 0; + out[13] = 0; + out[14] = (2 * far * near) * nf; + out[15] = 0; + return out; +}; +},{}],11:[function(require,module,exports){ +module.exports = rotate; + +/** + * Rotates a mat4 by the given angle + * + * @param {mat4} out the receiving matrix + * @param {mat4} a the matrix to rotate + * @param {Number} rad the angle to rotate the matrix by + * @param {vec3} axis the axis to rotate around + * @returns {mat4} out + */ +function rotate(out, a, rad, axis) { + var x = axis[0], y = axis[1], z = axis[2], + len = Math.sqrt(x * x + y * y + z * z), + s, c, t, + a00, a01, a02, a03, + a10, a11, a12, a13, + a20, a21, a22, a23, + b00, b01, b02, + b10, b11, b12, + b20, b21, b22; + + if (Math.abs(len) < 0.000001) { return null; } + + len = 1 / len; + x *= len; + y *= len; + z *= len; + + s = Math.sin(rad); + c = Math.cos(rad); + t = 1 - c; + + a00 = a[0]; a01 = a[1]; a02 = a[2]; a03 = a[3]; + a10 = a[4]; a11 = a[5]; a12 = a[6]; a13 = a[7]; + a20 = a[8]; a21 = a[9]; a22 = a[10]; a23 = a[11]; + + // Construct the elements of the rotation matrix + b00 = x * x * t + c; b01 = y * x * t + z * s; b02 = z * x * t - y * s; + b10 = x * y * t - z * s; b11 = y * y * t + c; b12 = z * y * t + x * s; + b20 = x * z * t + y * s; b21 = y * z * t - x * s; b22 = z * z * t + c; + + // Perform rotation-specific matrix multiplication + out[0] = a00 * b00 + a10 * b01 + a20 * b02; + out[1] = a01 * b00 + a11 * b01 + a21 * b02; + out[2] = a02 * b00 + a12 * b01 + a22 * b02; + out[3] = a03 * b00 + a13 * b01 + a23 * b02; + out[4] = a00 * b10 + a10 * b11 + a20 * b12; + out[5] = a01 * b10 + a11 * b11 + a21 * b12; + out[6] = a02 * b10 + a12 * b11 + a22 * b12; + out[7] = a03 * b10 + a13 * b11 + a23 * b12; + out[8] = a00 * b20 + a10 * b21 + a20 * b22; + out[9] = a01 * b20 + a11 * b21 + a21 * b22; + out[10] = a02 * b20 + a12 * b21 + a22 * b22; + out[11] = a03 * b20 + a13 * b21 + a23 * b22; + + if (a !== out) { // If the source and destination differ, copy the unchanged last row + out[12] = a[12]; + out[13] = a[13]; + out[14] = a[14]; + out[15] = a[15]; + } + return out; +}; +},{}],12:[function(require,module,exports){ +module.exports = transformMat4; + +/** + * Transforms the vec3 with a mat4. + * 4th vector component is implicitly '1' + * + * @param {vec3} out the receiving vector + * @param {vec3} a the vector to transform + * @param {mat4} m matrix to transform with + * @returns {vec3} out + */ +function transformMat4(out, a, m) { + var x = a[0], y = a[1], z = a[2], + w = m[3] * x + m[7] * y + m[11] * z + m[15] + w = w || 1.0 + out[0] = (m[0] * x + m[4] * y + m[8] * z + m[12]) / w + out[1] = (m[1] * x + m[5] * y + m[9] * z + m[13]) / w + out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w + return out +} +},{}],13:[function(require,module,exports){ + +module.exports = function () { + var selection = document.getSelection(); + if (!selection.rangeCount) { + return function () {}; + } + var active = document.activeElement; + + var ranges = []; + for (var i = 0; i < selection.rangeCount; i++) { + ranges.push(selection.getRangeAt(i)); + } + + switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML + case 'INPUT': + case 'TEXTAREA': + active.blur(); + break; + + default: + active = null; + break; + } + + selection.removeAllRanges(); + return function () { + selection.type === 'Caret' && + selection.removeAllRanges(); + + if (!selection.rangeCount) { + ranges.forEach(function(range) { + selection.addRange(range); + }); + } + + active && + active.focus(); + }; +}; + +},{}],14:[function(require,module,exports){ +const perspective = require('gl-mat4/perspective') +const multiply = require('gl-mat4/multiply') +const lookAt = require('gl-mat4/lookAt') +const invert = require('gl-mat4/invert') +const rotate = require('gl-mat4/rotate') +const transform = require('gl-vec3/transformMat4') + +const SVG_NS = 'http://www.w3.org/2000/svg' + +module.exports = { + calculateSizingOptions, + createLogoViewer, + createModelRenderer, + loadModelFromJson, + positionsFromModel, + createPolygonsFromModelJson, + createStandardModelPolygon, + createMatrixComputer, + compareZ, + createFaceUpdater, + createNode, + setAttribute, + svgElementToSvgImageContent, + Polygon, +} + +function createLogoViewer (container, renderScene, { + followMouse = false, + followMotion = false, + slowDrift = false, + lazyRender = true, +} = {}) { + + let shouldRender = true + const mouse = { + x: 0, + y: 0, + } + const lookCurrent = [0, 0] + const lookRate = 0.3 + + // closes over scene state + const renderCurrentScene = () => { + updateLookCurrent() + renderScene(lookCurrent, slowDrift) + } + + function setLookAtTarget (target) { + const bounds = container.getBoundingClientRect() + mouse.x = 1.0 - ((2.0 * (target.x - bounds.left)) / bounds.width) + mouse.y = 1.0 - ((2.0 * (target.y - bounds.top)) / bounds.height) + } + + function stopAnimation () { + shouldRender = false + } + function startAnimation () { + shouldRender = true + } + function setFollowMouse (state) { + // eslint-disable-next-line no-param-reassign + followMouse = state + } + function setFollowMotion (state) { + // eslint-disable-next-line no-param-reassign + followMotion = state + } + + window.addEventListener('mousemove', function (ev) { + if (!shouldRender) { + startAnimation() + } + if (followMouse) { + setLookAtTarget({ + x: ev.clientX, + y: ev.clientY, + }) + renderCurrentScene() + } + }) + + window.addEventListener('deviceorientation', function (event) { + if (!shouldRender) { + startAnimation() + } + if (followMotion) { + // gamma: left to right + const leftToRight = event.gamma + // beta: front back motion + const frontToBack = event.beta + // x offset: needed to correct the intial position + const xOffset = 200 + // y offset: needed to correct the intial position + const yOffset = -300 + // acceleration + const acceleration = 10 + + setLookAtTarget({ + x: xOffset + (leftToRight * acceleration), + y: yOffset + (frontToBack * acceleration), + }) + renderCurrentScene() + } + }) + + function lookAtAndRender (target) { + // update look target + setLookAtTarget(target) + // this should prolly just call updateLookCurrent or set lookCurrent values to eaxactly lookTarget + // but im not really sure why its different, so im leaving it alone + lookCurrent[0] = mouse.x + lookCurrent[1] = mouse.y + (0.085 / lookRate) + renderCurrentScene() + } + + function renderLoop () { + if (!shouldRender) { + return + } + window.requestAnimationFrame(renderLoop) + renderCurrentScene() + } + + function updateLookCurrent () { + const li = (1.0 - lookRate) + lookCurrent[0] = (li * lookCurrent[0]) + (lookRate * mouse.x) + lookCurrent[1] = (li * lookCurrent[1]) + (lookRate * mouse.y) + 0.085 + } + + if (lazyRender) { + renderCurrentScene() + } else { + renderLoop() + } + + return { + container, + lookAt: setLookAtTarget, + setFollowMouse, + setFollowMotion, + stopAnimation, + startAnimation, + lookAtAndRender, + renderCurrentScene, + } +} + +function loadModelFromJson (modelJson, createSvgPolygon = createStandardModelPolygon) { + const vertCount = modelJson.positions.length + const positions = new Float32Array(3 * vertCount) + const transformed = new Float32Array(3 * vertCount) + const { polygons, polygonsByChunk } = createPolygonsFromModelJson(modelJson, createSvgPolygon) + positionsFromModel(positions, modelJson) + const updatePositions = createPositionUpdater(positions, transformed, vertCount) + const modelObj = { updatePositions, positions, transformed, polygons, polygonsByChunk } + return modelObj +} + +function createModelRenderer (container, cameraDistance, modelObj) { + const { updatePositions, transformed, polygons } = modelObj + + for (const polygon of polygons) { + container.appendChild(polygon.svg) + } + + const computeMatrix = createMatrixComputer(cameraDistance) + const updateFaces = createFaceUpdater(container, polygons, transformed) + + return (rect, lookPos, slowDrift) => { + const matrix = computeMatrix(rect, lookPos, slowDrift) + updatePositions(matrix) + updateFaces(rect, container, polygons, transformed) + } +} + +function positionsFromModel (positions, modelJson) { + const pp = modelJson.positions + let ptr = 0 + for (let i = 0; i < pp.length; ++i) { + const p = pp[i] + for (let j = 0; j < 3; ++j) { + positions[ptr] = p[j] + ptr += 1 + } + } +} + +function createPolygonsFromModelJson (modelJson, createSvgPolygon) { + const polygons = [] + const polygonsByChunk = modelJson.chunks.map((chunk) => { + const { faces } = chunk + return faces.map((face) => { + const svgPolygon = createSvgPolygon(chunk) + const polygon = new Polygon(svgPolygon, face) + polygons.push(polygon) + return polygon + }) + }) + return { polygons, polygonsByChunk } +} + +function createStandardModelPolygon (chunk) { + const color = `rgb(${chunk.color})` + const svgPolygon = createNode('polygon') + setAttribute( + svgPolygon, + 'fill', + color, + ) + setAttribute( + svgPolygon, + 'stroke', + color, + ) + setAttribute( + svgPolygon, + 'points', + '0,0, 10,0, 0,10', + ) + return svgPolygon +} + +function createMatrixComputer (distance) { + const objectCenter = new Float32Array(3) + const up = new Float32Array([0, 1, 0]) + const projection = new Float32Array(16) + const model = new Float32Array(16) + const view = lookAt( + new Float32Array(16), + new Float32Array([0, 0, distance]), + objectCenter, + up, + ) + const invView = invert(new Float32Array(16), view) + const invProjection = new Float32Array(16) + const target = new Float32Array(3) + const transformedMatrix = new Float32Array(16) + + const X = new Float32Array([1, 0, 0]) + const Y = new Float32Array([0, 1, 0]) + const Z = new Float32Array([0, 0, 1]) + + return (rect, lookPos, slowDrift) => { + const viewportWidth = rect.width + const viewportHeight = rect.height + perspective( + projection, + Math.PI / 4.0, + viewportWidth / viewportHeight, + 100.0, + 1000.0, + ) + invert(invProjection, projection) + target[0] = lookPos[0] + target[1] = lookPos[1] + target[2] = 1.2 + transform(target, target, invProjection) + transform(target, target, invView) + lookAt( + model, + objectCenter, + target, + up, + ) + + // this shouldnt operate directly on the matrix/model, + // it should likely operate on the lookPos + // if we do want to operate on the matrix/model, it shouldnt happen here + if (slowDrift) { + const time = (Date.now() / 1000.0) + rotate(model, model, 0.1 + (Math.sin(time / 3) * 0.2), X) + rotate(model, model, -0.1 + (Math.sin(time / 2) * 0.03), Z) + rotate(model, model, 0.5 + (Math.sin(time / 3) * 0.2), Y) + } + + multiply(transformedMatrix, projection, view) + multiply(transformedMatrix, transformedMatrix, model) + + return transformedMatrix + } +} + +function createPositionUpdater (positions, transformed, vertCount) { + return (M) => { + const m00 = M[0] + const m01 = M[1] + const m02 = M[2] + const m03 = M[3] + const m10 = M[4] + const m11 = M[5] + const m12 = M[6] + const m13 = M[7] + const m20 = M[8] + const m21 = M[9] + const m22 = M[10] + const m23 = M[11] + const m30 = M[12] + const m31 = M[13] + const m32 = M[14] + const m33 = M[15] + + for (let i = 0; i < vertCount; ++i) { + const x = positions[3 * i] + const y = positions[(3 * i) + 1] + const z = positions[(3 * i) + 2] + + const tw = (x * m03) + (y * m13) + (z * m23) + m33 + transformed[3 * i] = + ((x * m00) + (y * m10) + (z * m20) + m30) / tw + transformed[(3 * i) + 1] = + ((x * m01) + (y * m11) + (z * m21) + m31) / tw + transformed[(3 * i) + 2] = + ((x * m02) + (y * m12) + (z * m22) + m32) / tw + } + } +} + +function compareZ (a, b) { + return b.zIndex - a.zIndex +} + +function createFaceUpdater (container, polygons, transformed) { + const toDraw = [] + return (rect) => { + let i + const w = rect.width + const h = rect.height + toDraw.length = 0 + for (i = 0; i < polygons.length; ++i) { + const poly = polygons[i] + const { indices } = poly + + const i0 = indices[0] + const i1 = indices[1] + const i2 = indices[2] + const ax = transformed[3 * i0] + const ay = transformed[(3 * i0) + 1] + const bx = transformed[3 * i1] + const by = transformed[(3 * i1) + 1] + const cx = transformed[3 * i2] + const cy = transformed[(3 * i2) + 1] + const det = ((bx - ax) * (cy - ay)) - ((by - ay) * (cx - ax)) + if (det < 0) { + continue + } + + const points = [] + let zmax = -Infinity + let zmin = Infinity + const element = poly.svg + for (let j = 0; j < 3; ++j) { + const idx = indices[j] + points.push( + `${0.5 * w * (1.0 - transformed[3 * idx])},${ + 0.5 * h * (1.0 - transformed[(3 * idx) + 1])}`, + ) + const z = transformed[(3 * idx) + 2] + zmax = Math.max(zmax, z) + zmin = Math.min(zmin, z) + } + poly.zIndex = zmax + (0.25 * zmin) + const joinedPoints = points.join(' ') + + if (joinedPoints.indexOf('NaN') === -1) { + setAttribute(element, 'points', joinedPoints) + } + + toDraw.push(poly) + } + toDraw.sort(compareZ) + container.innerHTML = '' + for (i = 0; i < toDraw.length; ++i) { + container.appendChild(toDraw[i].svg) + } + } +} + +function calculateSizingOptions (options = {}) { + let width = options.width || 400 + let height = options.height || 400 + + if (!options.pxNotRatio) { + width = (window.innerWidth * (options.width || 0.25)) | 0 + height = ((window.innerHeight * options.height) || width) | 0 + + if ('minWidth' in options && width < options.minWidth) { + width = options.minWidth + height = (options.minWidth * options.height / options.width) | 0 + } + } + return { width, height } +} + +function createNode (type) { + return document.createElementNS(SVG_NS, type) +} + +function setAttribute (node, attribute, value) { + node.setAttributeNS(null, attribute, value) +} + +function svgElementToSvgImageContent (svgElement) { + const inner = svgElement.innerHTML + const head = ` ` + + `` + const foot = '' + const content = head + inner + foot + return content +} + +function Polygon (svg, indices) { + this.svg = svg + this.indices = indices + this.zIndex = 0 +} + +},{"gl-mat4/invert":7,"gl-mat4/lookAt":8,"gl-mat4/multiply":9,"gl-mat4/perspective":10,"gl-mat4/rotate":11,"gl-vec3/transformMat4":12}]},{},[2]); diff --git a/docs/beta/index.html b/docs/beta/index.html new file mode 100644 index 00000000..2077c88e --- /dev/null +++ b/docs/beta/index.html @@ -0,0 +1,14 @@ + + + + + --- + + + + +

+ +

Press C to copy the SVG text of the image.

+ + diff --git a/docs/distort/bundle.js b/docs/distort/bundle.js index 3350a1aa..65a797d0 100644 --- a/docs/distort/bundle.js +++ b/docs/distort/bundle.js @@ -37,7 +37,7 @@ function createDistortedLogo (options) { 'Grow': distortGrow, } let applyDistortion = Object.values(distortionMethods)[0] - + Object.entries(distortionMethods).forEach(([description, distortionFn]) => { const button = document.createElement('button') button.innerText = description @@ -125,11 +125,6 @@ function distortFold (positions, origPositions) { } } -// random between (-1, 1) -function getRandom () { - return (2 * Math.random()) - 1 -} - // sin between 0-1 function getSinIntensity (speed = 1000) { return (Math.sin(Date.now() / speed) + 1) / 2 @@ -1962,9 +1957,11 @@ function createLogoViewer (container, renderScene, { shouldRender = true } function setFollowMouse (state) { + // eslint-disable-next-line no-param-reassign followMouse = state } function setFollowMotion (state) { + // eslint-disable-next-line no-param-reassign followMotion = state } diff --git a/docs/gradient/bundle.js b/docs/gradient/bundle.js index 84ed2230..a4f8b7ba 100644 --- a/docs/gradient/bundle.js +++ b/docs/gradient/bundle.js @@ -2056,9 +2056,11 @@ function createLogoViewer (container, renderScene, { shouldRender = true } function setFollowMouse (state) { + // eslint-disable-next-line no-param-reassign followMouse = state } function setFollowMotion (state) { + // eslint-disable-next-line no-param-reassign followMotion = state } diff --git a/docs/index.html b/docs/index.html index 1dd7aad5..dfd9a522 100644 --- a/docs/index.html +++ b/docs/index.html @@ -13,6 +13,7 @@
  • gradient
  • recolor
  • distort
  • +
  • beta
  • diff --git a/docs/normal/bundle.js b/docs/normal/bundle.js index 74554424..3a742b09 100644 --- a/docs/normal/bundle.js +++ b/docs/normal/bundle.js @@ -1,4 +1,1458 @@ (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i { const rect = container.getBoundingClientRect() @@ -1478,7 +2934,7 @@ function createLogo (options = {}) { return createLogoViewer(container, renderScene, { cameraDistance, ...options }) } -},{"./fox.json":2,"./util.js":13}],4:[function(require,module,exports){ +},{"./beta-fox.json":1,"./fox.json":3,"./util.js":14}],5:[function(require,module,exports){ 'use strict'; var deselectCurrent = require('toggle-selection'); @@ -1558,7 +3014,7 @@ function copy(text, options) { module.exports = copy; -},{"toggle-selection":12}],5:[function(require,module,exports){ +},{"toggle-selection":13}],6:[function(require,module,exports){ module.exports = identity; /** @@ -1586,7 +3042,7 @@ function identity(out) { out[15] = 1; return out; }; -},{}],6:[function(require,module,exports){ +},{}],7:[function(require,module,exports){ module.exports = invert; /** @@ -1642,7 +3098,7 @@ function invert(out, a) { return out; }; -},{}],7:[function(require,module,exports){ +},{}],8:[function(require,module,exports){ var identity = require('./identity'); module.exports = lookAt; @@ -1733,7 +3189,7 @@ function lookAt(out, eye, center, up) { return out; }; -},{"./identity":5}],8:[function(require,module,exports){ +},{"./identity":6}],9:[function(require,module,exports){ module.exports = multiply; /** @@ -1776,7 +3232,7 @@ function multiply(out, a, b) { out[15] = b0*a03 + b1*a13 + b2*a23 + b3*a33; return out; }; -},{}],9:[function(require,module,exports){ +},{}],10:[function(require,module,exports){ module.exports = perspective; /** @@ -1810,7 +3266,7 @@ function perspective(out, fovy, aspect, near, far) { out[15] = 0; return out; }; -},{}],10:[function(require,module,exports){ +},{}],11:[function(require,module,exports){ module.exports = rotate; /** @@ -1875,7 +3331,7 @@ function rotate(out, a, rad, axis) { } return out; }; -},{}],11:[function(require,module,exports){ +},{}],12:[function(require,module,exports){ module.exports = transformMat4; /** @@ -1896,7 +3352,7 @@ function transformMat4(out, a, m) { out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w return out } -},{}],12:[function(require,module,exports){ +},{}],13:[function(require,module,exports){ module.exports = function () { var selection = document.getSelection(); @@ -1937,7 +3393,7 @@ module.exports = function () { }; }; -},{}],13:[function(require,module,exports){ +},{}],14:[function(require,module,exports){ const perspective = require('gl-mat4/perspective') const multiply = require('gl-mat4/multiply') const lookAt = require('gl-mat4/lookAt') @@ -1998,9 +3454,11 @@ function createLogoViewer (container, renderScene, { shouldRender = true } function setFollowMouse (state) { + // eslint-disable-next-line no-param-reassign followMouse = state } function setFollowMotion (state) { + // eslint-disable-next-line no-param-reassign followMotion = state } @@ -2352,4 +3810,4 @@ function Polygon (svg, indices) { this.zIndex = 0 } -},{"gl-mat4/invert":6,"gl-mat4/lookAt":7,"gl-mat4/multiply":8,"gl-mat4/perspective":9,"gl-mat4/rotate":10,"gl-vec3/transformMat4":11}]},{},[1]); +},{"gl-mat4/invert":7,"gl-mat4/lookAt":8,"gl-mat4/multiply":9,"gl-mat4/perspective":10,"gl-mat4/rotate":11,"gl-vec3/transformMat4":12}]},{},[2]); diff --git a/docs/recolor/bundle.js b/docs/recolor/bundle.js index 81f9722a..803d445a 100644 --- a/docs/recolor/bundle.js +++ b/docs/recolor/bundle.js @@ -2172,9 +2172,11 @@ function createLogoViewer (container, renderScene, { shouldRender = true } function setFollowMouse (state) { + // eslint-disable-next-line no-param-reassign followMouse = state } function setFollowMotion (state) { + // eslint-disable-next-line no-param-reassign followMotion = state } diff --git a/example/beta.js b/example/beta.js new file mode 100644 index 00000000..37756eb9 --- /dev/null +++ b/example/beta.js @@ -0,0 +1,19 @@ +const copy = require('copy-to-clipboard') +const createViewer = require('..') +const { svgElementToSvgImageContent } = require('../util') + +document.addEventListener('keypress', function (event) { + if (event.keyCode === 99) { // the c key + const svg = document.querySelector('svg') + const content = svgElementToSvgImageContent(svg) + copy(content) + } +}) + +createViewer({ + width: 0.4, + height: 0.4, + followMouse: true, + followMotion: true, + beta: true, +}) diff --git a/fox.fbx b/fox.fbx new file mode 100644 index 0000000000000000000000000000000000000000..936ecc9f10b75699780b66b4c38b86648e54d59b GIT binary patch literal 60080 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 literal 0 HcmV?d00001 diff --git a/index.js b/index.js index aacdfeb3..6d50eb7f 100644 --- a/index.js +++ b/index.js @@ -1,4 +1,5 @@ const foxJson = require('./fox.json') +const betaFoxJson = require('./beta-fox.json') const { calculateSizingOptions, createLogoViewer, @@ -13,13 +14,14 @@ module.exports = createLogo function createLogo (options = {}) { const cameraDistance = options.cameraDistance || 400 const { height, width } = calculateSizingOptions(options) + const modelJson = options.beta ? betaFoxJson : foxJson const container = createNode('svg') setAttribute(container, 'width', `${width}px`) setAttribute(container, 'height', `${height}px`) document.body.appendChild(container) - const modelObj = loadModelFromJson(foxJson) + const modelObj = loadModelFromJson(modelJson) const renderFox = createModelRenderer(container, cameraDistance, modelObj) const renderScene = (lookCurrent, slowDrift) => { const rect = container.getBoundingClientRect() diff --git a/package.json b/package.json index 79bbe977..082bf88a 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "node": ">=12.0.0" }, "scripts": { - "build": "yarn bundle normal && yarn bundle gradient && yarn bundle recolor && yarn bundle distort", + "build": "yarn bundle normal && yarn bundle gradient && yarn bundle recolor && yarn bundle distort && yarn bundle beta", "bundle": "./example/build.sh", "convert": "node convert.js > fox.json", "lint": "eslint . --ext js,json", From 295ec5e9ebf183add1acf2a760109742cfd5b168 Mon Sep 17 00:00:00 2001 From: David Walsh Date: Fri, 28 May 2021 17:17:55 -0500 Subject: [PATCH 2/4] Provide meshJson option, remove unncessary files --- beta-fox.fbx | Bin 60080 -> 0 bytes beta-fox.mtl | 104 --- beta-fox.obj | 965 --------------------------- docs/beta/bundle.js | 10 +- docs/normal/bundle.js | 1483 +---------------------------------------- example/beta.js | 3 +- fox.fbx | Bin 60080 -> 0 bytes index.js | 3 +- 8 files changed, 22 insertions(+), 2546 deletions(-) delete mode 100644 beta-fox.fbx delete mode 100644 beta-fox.mtl delete mode 100644 beta-fox.obj delete mode 100644 fox.fbx diff --git a/beta-fox.fbx b/beta-fox.fbx deleted file mode 100644 index 936ecc9f10b75699780b66b4c38b86648e54d59b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60080 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 diff --git a/beta-fox.mtl b/beta-fox.mtl deleted file mode 100644 index 0522f505..00000000 --- a/beta-fox.mtl +++ /dev/null @@ -1,104 +0,0 @@ -newmtl Default_2SG -illum 4 -Kd 0.00 0.00 0.00 -Ka 0.00 0.00 0.00 -Tf 1.00 1.00 1.00 -Ni 1.00 -Ks 0.20 0.20 0.20 -Ns 30.00 -newmtl Default_2SG1 -illum 4 -Kd 0.86 0.81 0.75 -Ka 0.00 0.00 0.00 -Tf 1.00 1.00 1.00 -Ni 1.00 -Ks 0.20 0.20 0.20 -Ns 30.00 -newmtl Default_2SG2 -illum 4 -Kd 0.22 0.80 0.45 -Ka 0.00 0.00 0.00 -Tf 1.00 1.00 1.00 -Ni 1.00 -Ks 0.20 0.20 0.20 -Ns 30.00 -newmtl Default_2SG3 -illum 4 -Kd 0.10 0.38 0.21 -Ka 0.00 0.00 0.00 -Tf 1.00 1.00 1.00 -Ni 1.00 -Ks 0.20 0.20 0.20 -Ns 30.00 -newmtl Default_2SG4 -illum 4 -Kd 0.07 0.25 0.14 -Ka 0.00 0.00 0.00 -Tf 1.00 1.00 1.00 -Ni 1.00 -Ks 0.20 0.20 0.20 -Ns 30.00 -newmtl Default_2SG5 -illum 4 -Kd 0.22 0.80 0.66 -Ka 0.00 0.00 0.00 -Tf 1.00 1.00 1.00 -Ni 1.00 -Ks 0.20 0.20 0.20 -Ns 30.00 -newmtl Default_2SG6 -illum 4 -Kd 0.41 0.82 0.85 -Ka 0.00 0.00 0.00 -Tf 1.00 1.00 1.00 -Ni 1.00 -Ks 0.20 0.20 0.20 -Ns 30.00 -newmtl Default_2SG7 -illum 4 -Kd 0.64 0.87 0.86 -Ka 0.00 0.00 0.00 -Tf 1.00 1.00 1.00 -Ni 1.00 -Ks 0.20 0.20 0.20 -Ns 30.00 -newmtl Default_2SG8 -illum 4 -Kd 0.66 0.95 0.94 -Ka 0.00 0.00 0.00 -Tf 1.00 1.00 1.00 -Ni 1.00 -Ks 0.20 0.20 0.20 -Ns 30.00 -newmtl Default_2SG9 -illum 4 -Kd 0.25 0.53 0.80 -Ka 0.00 0.00 0.00 -Tf 1.00 1.00 1.00 -Ni 1.00 -Ks 0.20 0.20 0.20 -Ns 30.00 -newmtl Default_2SG10 -illum 4 -Kd 0.22 0.62 0.80 -Ka 0.00 0.00 0.00 -Tf 1.00 1.00 1.00 -Ni 1.00 -Ks 0.20 0.20 0.20 -Ns 30.00 -newmtl Default_2SG11 -illum 4 -Kd 0.14 0.43 0.69 -Ka 0.00 0.00 0.00 -Tf 1.00 1.00 1.00 -Ni 1.00 -Ks 0.20 0.20 0.20 -Ns 30.00 -newmtl Default_2SG12 -illum 4 -Kd 0.22 0.76 0.80 -Ka 0.00 0.00 0.00 -Tf 1.00 1.00 1.00 -Ni 1.00 -Ks 0.20 0.20 0.20 -Ns 30.00 diff --git a/beta-fox.obj b/beta-fox.obj deleted file mode 100644 index f716478c..00000000 --- a/beta-fox.obj +++ /dev/null @@ -1,965 +0,0 @@ -# This file uses centimeters as units for non-parametric coordinates. - -mtllib beta-fox.mtl -g default -v 111.024597 52.604599 46.225899 -v 114.025002 87.673302 58.981800 -v 66.192001 80.898003 55.394299 -v 72.113297 35.491798 30.871401 -v 97.804497 116.560997 73.978798 -v 16.762300 58.010899 58.078201 -v 52.608898 30.364100 42.556099 -v 106.881401 31.945499 46.913300 -v 113.484596 38.604900 49.121498 -v 108.663300 43.233200 46.315399 -v 101.216599 15.982200 46.308201 -v 16.660500 -16.288300 93.618698 -v 40.775002 -10.228800 85.276398 -v 23.926901 -2.510300 86.736504 -v 11.169100 -7.003700 99.377602 -v 9.569200 -34.393902 141.671997 -v 12.596000 7.165500 88.740997 -v 61.180901 8.814200 76.996803 -v 39.719501 -28.927099 88.963799 -v 13.796200 -68.575699 132.057007 -v 15.267400 -62.320000 129.688004 -v 14.844600 -52.609600 140.113007 -v 12.891700 -49.771599 144.740997 -v 35.604198 -71.758003 81.063904 -v 47.462502 -68.606102 63.369701 -v 38.248600 -64.730202 38.909901 -v -12.891700 -49.771599 144.740997 -v -13.796200 -68.575699 132.057007 -v 17.802099 -71.758003 81.063904 -v 19.124300 -69.016800 49.420101 -v 38.248600 -66.275597 17.776199 -v 12.892800 -36.703499 141.671997 -v 109.283997 -93.589897 27.824301 -v 122.117996 -36.889400 35.025002 -v 67.766800 -30.197001 78.417801 -v 33.180698 101.851997 25.318600 -v 9.406300 -35.589802 150.722000 -v -9.569200 -34.393902 141.671997 -v -9.406300 -35.589802 150.722000 -v 11.456500 -37.899399 150.722000 -v -12.596000 7.165500 88.740997 -v -11.169100 -7.003700 99.377602 -v 70.236504 62.836201 -3.947500 -v 47.263401 54.293999 -27.414801 -v 28.730200 91.731102 -24.972601 -v 69.167603 6.586200 -12.775700 -v 28.730200 49.100300 -48.359600 -v 31.903000 5.692000 -47.821999 -v 35.075802 -34.432899 -16.280899 -v 115.284103 48.681499 48.684101 -v 110.842796 28.482100 49.176201 -v -19.124300 -69.016800 49.420101 -v -38.248600 -66.275597 17.776199 -v -111.024597 52.604599 46.225899 -v -72.113297 35.491798 30.871401 -v -66.192001 80.898003 55.394299 -v -114.025002 87.673302 58.981800 -v -97.804497 116.560997 73.978798 -v -52.608898 30.364100 42.556099 -v -16.762300 58.010899 58.078201 -v -106.881401 31.945499 46.913300 -v -108.663300 43.233200 46.315399 -v -113.484596 38.604900 49.121498 -v -101.216599 15.982200 46.308201 -v -16.660500 -16.288300 93.618698 -v -23.926901 -2.510300 86.736504 -v -40.775002 -10.228800 85.276398 -v -61.180901 8.814200 76.996803 -v -39.719501 -28.927099 88.963799 -v -14.844600 -52.609600 140.113007 -v -15.267400 -62.320000 129.688004 -v -47.462502 -68.606102 63.369701 -v -35.604198 -71.758003 81.063904 -v -38.248600 -64.730202 38.909901 -v -17.802099 -71.758003 81.063904 -v -12.892800 -36.703499 141.671997 -v -67.766800 -30.197001 78.417801 -v -122.117996 -36.889400 35.025002 -v -109.283997 -93.589897 27.824301 -v -33.180698 101.851997 25.318600 -v -11.456500 -37.899399 150.722000 -v -70.236504 62.836201 -3.947500 -v -28.730200 91.731102 -24.972601 -v -47.263401 54.293999 -27.414801 -v -69.167603 6.586200 -12.775700 -v -28.730200 49.100300 -48.359600 -v -31.903000 5.692000 -47.821999 -v -35.075802 -34.432899 -16.280899 -v -115.284103 48.681499 48.684101 -v -110.842796 28.482100 49.176201 -vt 0.970623 0.666610 -vt 0.997111 0.837521 -vt 0.760879 0.845395 -vt 0.800317 0.596474 -vt 0.949525 0.997966 -vt 0.576270 0.698799 -vt 0.723134 0.561439 -vt 0.949671 0.569435 -vt 0.980427 0.597613 -vt 0.960062 0.620633 -vt 0.920729 0.504251 -vt 0.577579 0.331406 -vt 0.692276 0.366982 -vt 0.613663 0.407103 -vt 0.553963 0.381940 -vt 0.555467 0.186515 -vt 0.560170 0.453798 -vt 0.778882 0.465645 -vt 0.687918 0.270342 -vt 0.580235 -0.000010 -vt 0.589149 0.027460 -vt 0.587773 0.072978 -vt 0.577473 0.082833 -vt 0.670765 0.046594 -vt 0.708846 0.105031 -vt 0.678010 0.099881 -vt 0.419525 0.086676 -vt 0.419553 0.000561 -vt 0.599903 -0.005812 -vt 0.606999 0.007994 -vt 0.678427 0.090415 -vt 0.573878 0.176913 -vt 0.926441 0.040370 -vt 0.988497 0.270610 -vt 0.807707 0.272056 -vt 0.632962 0.871696 -vt 0.554959 0.176524 -vt 0.443450 0.187338 -vt 0.443815 0.177783 -vt 0.566913 0.163658 -vt 0.438685 0.454376 -vt 0.445725 0.380079 -vt 0.780674 0.758674 -vt 0.692180 0.696538 -vt 0.617587 0.825290 -vt 0.810031 0.458665 -vt 0.622539 0.658801 -vt 0.648572 0.445144 -vt 0.668403 0.242748 -vt 0.988818 0.646274 -vt 0.965276 0.554268 -vt 0.395462 0.007500 -vt 0.325839 0.087892 -vt 0.031202 0.671137 -vt 0.197948 0.596528 -vt 0.242119 0.841264 -vt 0.002056 0.836843 -vt 0.048092 0.999935 -vt 0.272639 0.559895 -vt 0.425070 0.698168 -vt 0.054412 0.576650 -vt 0.043452 0.627958 -vt 0.024277 0.606099 -vt 0.082815 0.505955 -vt 0.419331 0.332867 -vt 0.387057 0.409320 -vt 0.308295 0.368626 -vt 0.221626 0.463599 -vt 0.313457 0.274184 -vt 0.409851 0.075899 -vt 0.409263 0.027954 -vt 0.293570 0.105813 -vt 0.336375 0.042655 -vt 0.325602 0.098050 -vt 0.403084 -0.005386 -vt 0.426231 0.177841 -vt 0.191929 0.271064 -vt 0.008693 0.271180 -vt 0.073992 0.037633 -vt 0.365397 0.871017 -vt 0.432413 0.165009 -vt 0.220227 0.750798 -vt 0.381923 0.829012 -vt 0.301382 0.682138 -vt 0.192319 0.456416 -vt 0.371466 0.644344 -vt 0.349793 0.446140 -vt 0.334530 0.247169 -vt 0.014492 0.652537 -vt 0.038954 0.560849 -vt 0.678403 0.090469 -vn -0.075817 -0.414073 0.907081 -vn -0.011801 -0.401574 0.915751 -vn -0.050914 -0.430254 0.901271 -vn -0.050914 -0.430254 0.901271 -vn -0.128575 -0.484187 0.865466 -vn -0.075817 -0.414073 0.907081 -vn 0.339284 -0.653400 0.676724 -vn 0.339284 -0.653400 0.676724 -vn 0.339284 -0.653400 0.676724 -vn 0.547465 -0.341269 0.764080 -vn 0.547465 -0.341269 0.764080 -vn 0.547465 -0.341269 0.764080 -vn 0.184507 -0.288299 0.939596 -vn 0.184507 -0.288299 0.939596 -vn 0.184507 -0.288299 0.939596 -vn -0.411573 0.112329 0.904428 -vn -0.416152 0.113483 0.902186 -vn -0.411465 0.112585 0.904445 -vn 0.196265 0.808193 0.555251 -vn 0.176125 0.758845 0.627004 -vn 0.162527 0.824943 0.541344 -vn 0.297152 0.252488 0.920842 -vn 0.242177 0.214402 0.946247 -vn 0.303048 0.293116 0.906777 -vn 0.884481 0.303125 0.354694 -vn 0.892874 0.361809 0.268086 -vn 0.884481 0.303125 0.354694 -vn 0.884481 0.303125 0.354694 -vn 0.866346 0.241102 0.437396 -vn 0.884481 0.303125 0.354694 -vn 0.414725 0.131763 0.900356 -vn 0.242177 0.214402 0.946247 -vn 0.288014 0.147023 0.946273 -vn 0.949488 -0.112338 0.293008 -vn 0.949488 -0.112338 0.293008 -vn 0.969806 -0.157593 0.186122 -vn 0.787925 -0.317847 0.527397 -vn 0.787925 -0.317847 0.527397 -vn 0.787925 -0.317847 0.527397 -vn 0.949488 -0.112338 0.293008 -vn 0.949488 -0.112338 0.293008 -vn 0.915986 -0.065522 0.395825 -vn 0.753743 -0.510149 0.414270 -vn 0.776848 -0.467832 0.421475 -vn 0.776848 -0.467832 0.421475 -vn 0.018536 -0.986404 -0.163288 -vn 0.018536 -0.986404 -0.163288 -vn 0.018536 -0.986404 -0.163288 -vn 0.000000 -0.559207 0.829028 -vn 0.000000 -0.505575 0.862782 -vn 0.000000 -0.505575 0.862782 -vn 0.000000 -0.505575 0.862782 -vn 0.000000 -0.559207 0.829028 -vn 0.000000 -0.559207 0.829028 -vn -0.000000 -0.999320 -0.036864 -vn 0.000000 -0.999637 -0.026940 -vn -0.000000 -0.996269 -0.086304 -vn -0.000000 -0.999320 -0.036864 -vn -0.000000 -0.996269 -0.086304 -vn -0.000000 -0.996269 -0.086303 -vn 0.967289 -0.253000 0.018501 -vn 0.967289 -0.253000 0.018501 -vn 0.967289 -0.253000 0.018501 -vn 0.798106 -0.424403 0.427679 -vn 0.776848 -0.467832 0.421475 -vn 0.776848 -0.467832 0.421475 -vn 0.912248 -0.016130 0.409321 -vn 0.942588 0.021864 0.333241 -vn 0.929327 0.078675 0.360780 -vn 0.942588 0.021864 0.333241 -vn 0.912248 -0.016130 0.409321 -vn 0.892327 -0.108495 0.438157 -vn 0.597535 0.377617 0.707359 -vn 0.597535 0.377617 0.707359 -vn 0.597535 0.377617 0.707359 -vn 0.094540 0.854342 0.511040 -vn 0.154989 0.854371 0.496013 -vn 0.162527 0.824943 0.541344 -vn 0.407300 -0.412110 0.815029 -vn 0.423116 -0.207772 0.881932 -vn 0.464138 -0.375597 0.802187 -vn 0.464138 -0.375597 0.802187 -vn 0.392181 -0.507824 0.767013 -vn 0.407300 -0.412110 0.815029 -vn -0.556814 0.620857 0.551810 -vn -0.556814 0.620857 0.551810 -vn -0.556814 0.620857 0.551810 -vn 0.407300 -0.412110 0.815029 -vn 0.392181 -0.507824 0.767013 -vn 0.290065 -0.478130 0.829008 -vn -0.017339 -0.222257 0.974834 -vn -0.017339 -0.222257 0.974834 -vn -0.017339 -0.222257 0.974834 -vn 0.242177 0.214402 0.946247 -vn 0.414725 0.131763 0.900356 -vn 0.225733 0.174800 0.958379 -vn 0.303048 0.293116 0.906777 -vn 0.371912 0.250351 0.893871 -vn 0.297152 0.252488 0.920842 -vn 0.000000 0.991382 0.131005 -vn 0.000000 0.991382 0.131005 -vn 0.000000 0.991382 0.131005 -vn 0.000000 0.991382 0.131005 -vn 0.000000 0.991382 0.131005 -vn 0.000000 0.991382 0.131005 -vn 0.942588 0.021864 0.333241 -vn 0.986145 0.037847 0.161510 -vn 0.965242 0.059676 0.254453 -vn 0.965242 0.059676 0.254453 -vn 0.929327 0.078675 0.360780 -vn 0.942588 0.021864 0.333241 -vn 0.590212 0.761626 0.267537 -vn 0.553387 0.796346 0.244122 -vn 0.654626 0.738543 0.161308 -vn 0.654626 0.738543 0.161308 -vn 0.732415 0.650156 0.202153 -vn 0.590212 0.761626 0.267537 -vn 0.414725 0.131763 0.900356 -vn 0.614371 0.100452 0.782596 -vn 0.599450 0.066758 0.797623 -vn 0.414725 0.131763 0.900356 -vn 0.288014 0.147023 0.946273 -vn 0.497716 0.115337 0.859637 -vn 0.497716 0.115337 0.859637 -vn 0.614371 0.100452 0.782596 -vn 0.414725 0.131763 0.900356 -vn 0.196265 0.808193 0.555251 -vn 0.162527 0.824943 0.541344 -vn 0.154989 0.854371 0.496013 -vn 0.516975 0.772511 0.368732 -vn 0.553387 0.796346 0.244122 -vn 0.590212 0.761626 0.267537 -vn 0.590212 0.761626 0.267537 -vn 0.502812 0.780686 0.371094 -vn 0.516975 0.772511 0.368732 -vn 0.288014 0.147023 0.946273 -vn 0.242177 0.214402 0.946247 -vn 0.297152 0.252488 0.920842 -vn 0.000000 0.731161 0.682205 -vn 0.000000 0.559102 0.829099 -vn 0.000000 0.559102 0.829099 -vn 0.000000 0.559102 0.829099 -vn 0.000000 0.731161 0.682205 -vn 0.000000 0.731161 0.682205 -vn 0.292402 0.735849 -0.610760 -vn 0.410492 0.676393 -0.611546 -vn 0.410492 0.676393 -0.611546 -vn 0.410492 0.676393 -0.611546 -vn 0.521407 0.605113 -0.601642 -vn 0.410492 0.676393 -0.611546 -vn 0.738756 0.171591 -0.651764 -vn 0.681634 0.191303 -0.706242 -vn 0.627754 0.355929 -0.692271 -vn 0.627354 0.750824 -0.206618 -vn 0.627354 0.750824 -0.206618 -vn 0.627354 0.750824 -0.206618 -vn 0.756996 0.083522 -0.648060 -vn 0.681634 0.191303 -0.706242 -vn 0.738756 0.171591 -0.651764 -vn 0.738756 0.171591 -0.651764 -vn 0.873488 0.059242 -0.483229 -vn 0.756996 0.083522 -0.648060 -vn -0.444201 -0.894845 0.044028 -vn -0.361924 -0.931859 0.025509 -vn -0.444201 -0.894845 0.044028 -vn -0.444201 -0.894845 0.044028 -vn -0.522710 -0.850240 0.062174 -vn -0.444201 -0.894845 0.044028 -vn 0.141749 0.168051 -0.975534 -vn 0.141749 0.168051 -0.975534 -vn 0.171792 0.085748 -0.981394 -vn 0.141749 0.168051 -0.975534 -vn 0.141749 0.168051 -0.975534 -vn 0.110613 0.249058 -0.962151 -vn 0.627754 0.355929 -0.692271 -vn 0.681634 0.191303 -0.706242 -vn 0.706189 0.208586 -0.676601 -vn 0.681634 0.191303 -0.706242 -vn 0.756996 0.083522 -0.648060 -vn 0.712611 0.067971 -0.698259 -vn 0.712611 0.067971 -0.698259 -vn 0.706189 0.208586 -0.676601 -vn 0.681634 0.191303 -0.706242 -vn 0.643784 -0.484445 -0.592330 -vn 0.615331 -0.456499 -0.642632 -vn 0.701412 -0.489811 -0.517790 -vn 0.701412 -0.489811 -0.517790 -vn 0.738344 -0.502115 -0.450255 -vn 0.643784 -0.484445 -0.592330 -vn 0.738344 -0.502115 -0.450255 -vn 0.701412 -0.489811 -0.517790 -vn 0.797670 -0.487419 -0.355169 -vn 0.726127 0.479824 -0.492452 -vn 0.765806 0.321348 -0.557025 -vn 0.765806 0.321348 -0.557025 -vn 0.619619 -0.388179 -0.682195 -vn 0.619619 -0.388179 -0.682195 -vn 0.619619 -0.388179 -0.682195 -vn 0.667124 0.744400 -0.028542 -vn 0.667124 0.744400 -0.028542 -vn 0.667124 0.744400 -0.028542 -vn 0.635435 -0.329080 -0.698519 -vn 0.635435 -0.329080 -0.698519 -vn 0.635435 -0.329080 -0.698519 -vn -0.411643 0.111793 0.904463 -vn -0.416151 0.113479 0.902187 -vn -0.411573 0.112329 0.904428 -vn -0.411573 0.112329 0.904428 -vn -0.406887 0.111161 0.906690 -vn -0.411643 0.111793 0.904463 -vn 0.781853 0.152955 -0.604410 -vn 0.765806 0.321348 -0.557025 -vn 0.765806 0.321348 -0.557025 -vn -0.411573 0.112329 0.904428 -vn -0.411465 0.112585 0.904445 -vn -0.406887 0.111161 0.906690 -vn 0.746697 0.565425 -0.350341 -vn 0.746697 0.565425 -0.350341 -vn 0.746697 0.565425 -0.350341 -vn 0.609590 -0.460140 -0.645501 -vn 0.609590 -0.460140 -0.645501 -vn 0.609590 -0.460140 -0.645501 -vn -0.416150 0.113473 0.902188 -vn -0.411428 0.112305 0.904497 -vn -0.411465 0.112585 0.904445 -vn -0.406887 0.111161 0.906690 -vn -0.411465 0.112585 0.904445 -vn -0.411428 0.112305 0.904497 -vn -0.000000 -0.996269 -0.086304 -vn 0.000000 -0.996269 -0.086304 -vn 0.000000 -0.996269 -0.086303 -vn 0.000000 -0.996269 -0.086303 -vn -0.000000 -0.996269 -0.086303 -vn -0.000000 -0.996269 -0.086304 -vn 0.075817 -0.414073 0.907081 -vn 0.128575 -0.484187 0.865466 -vn 0.050914 -0.430254 0.901271 -vn 0.050914 -0.430254 0.901271 -vn 0.011801 -0.401574 0.915751 -vn 0.075817 -0.414073 0.907081 -vn 0.001205 -0.461290 0.887249 -vn 0.011801 -0.401574 0.915751 -vn 0.050914 -0.430254 0.901271 -vn -0.184507 -0.288299 0.939596 -vn -0.184507 -0.288299 0.939596 -vn -0.184507 -0.288299 0.939596 -vn -0.547465 -0.341269 0.764080 -vn -0.547465 -0.341269 0.764080 -vn -0.547465 -0.341269 0.764080 -vn 0.411573 0.112329 0.904428 -vn 0.411465 0.112585 0.904445 -vn 0.416152 0.113483 0.902186 -vn -0.196265 0.808193 0.555251 -vn -0.162527 0.824943 0.541345 -vn -0.176125 0.758845 0.627004 -vn -0.297152 0.252488 0.920842 -vn -0.303048 0.293115 0.906777 -vn -0.242177 0.214402 0.946247 -vn -0.884481 0.303125 0.354694 -vn -0.884481 0.303125 0.354694 -vn -0.892874 0.361809 0.268086 -vn -0.884481 0.303125 0.354694 -vn -0.884481 0.303125 0.354694 -vn -0.866346 0.241102 0.437396 -vn -0.414725 0.131763 0.900356 -vn -0.288014 0.147023 0.946273 -vn -0.242177 0.214402 0.946247 -vn -0.787925 -0.317847 0.527397 -vn -0.787925 -0.317847 0.527397 -vn -0.787925 -0.317847 0.527397 -vn -0.969806 -0.157593 0.186122 -vn -0.949488 -0.112338 0.293008 -vn -0.949488 -0.112338 0.293008 -vn -0.776848 -0.467831 0.421475 -vn -0.776848 -0.467831 0.421475 -vn -0.753743 -0.510148 0.414270 -vn -0.915986 -0.065522 0.395825 -vn -0.949488 -0.112338 0.293008 -vn -0.949488 -0.112338 0.293008 -vn -0.018536 -0.986404 -0.163288 -vn -0.018536 -0.986404 -0.163288 -vn -0.018536 -0.986404 -0.163288 -vn 0.000000 -0.996269 -0.086304 -vn 0.000000 -0.999996 0.002857 -vn 0.000000 -0.999320 -0.036864 -vn 0.000000 -0.996269 -0.086303 -vn 0.000000 -0.996269 -0.086304 -vn 0.000000 -0.999320 -0.036864 -vn -0.967289 -0.253000 0.018501 -vn -0.967289 -0.253000 0.018501 -vn -0.967289 -0.253000 0.018501 -vn -0.798106 -0.424402 0.427679 -vn -0.776848 -0.467831 0.421475 -vn -0.776848 -0.467831 0.421475 -vn -0.912248 -0.016130 0.409321 -vn -0.929327 0.078675 0.360780 -vn -0.942588 0.021864 0.333241 -vn -0.942588 0.021864 0.333241 -vn -0.892327 -0.108495 0.438157 -vn -0.912248 -0.016130 0.409321 -vn -0.162527 0.824943 0.541345 -vn -0.154989 0.854371 0.496013 -vn -0.094540 0.854342 0.511040 -vn -0.597535 0.377617 0.707359 -vn -0.597535 0.377617 0.707359 -vn -0.597535 0.377617 0.707359 -vn -0.407300 -0.412110 0.815029 -vn -0.392181 -0.507824 0.767013 -vn -0.464138 -0.375597 0.802187 -vn -0.464138 -0.375597 0.802187 -vn -0.423116 -0.207772 0.881932 -vn -0.407300 -0.412110 0.815029 -vn 0.556814 0.620857 0.551810 -vn 0.556814 0.620857 0.551810 -vn 0.556814 0.620857 0.551810 -vn -0.407300 -0.412110 0.815029 -vn -0.290065 -0.478130 0.829008 -vn -0.392181 -0.507824 0.767013 -vn -0.225733 0.174800 0.958379 -vn -0.414725 0.131763 0.900356 -vn -0.242177 0.214402 0.946247 -vn 0.017339 -0.222257 0.974834 -vn 0.017339 -0.222257 0.974834 -vn 0.017339 -0.222257 0.974834 -vn -0.303048 0.293115 0.906777 -vn -0.297152 0.252488 0.920842 -vn -0.371912 0.250351 0.893871 -vn -0.942588 0.021864 0.333241 -vn -0.929327 0.078675 0.360780 -vn -0.965242 0.059676 0.254453 -vn -0.965242 0.059676 0.254453 -vn -0.986145 0.037847 0.161510 -vn -0.942588 0.021864 0.333241 -vn -0.590212 0.761626 0.267537 -vn -0.732415 0.650156 0.202153 -vn -0.654626 0.738543 0.161308 -vn -0.654626 0.738543 0.161308 -vn -0.553387 0.796346 0.244122 -vn -0.590212 0.761626 0.267537 -vn 0.000000 0.000000 1.000000 -vn 0.000000 0.000000 1.000000 -vn 0.000000 0.000000 1.000000 -vn 0.000000 0.000000 1.000000 -vn 0.000000 0.000000 1.000000 -vn 0.000000 0.000000 1.000000 -vn 0.000000 0.571818 0.820381 -vn 0.000000 0.544401 0.838825 -vn 0.000000 0.598581 0.801062 -vn 0.000000 0.598581 0.801062 -vn 0.000000 0.598581 0.801062 -vn 0.000000 0.571818 0.820381 -vn -0.414725 0.131763 0.900356 -vn -0.599450 0.066758 0.797623 -vn -0.614371 0.100452 0.782596 -vn -0.414725 0.131763 0.900356 -vn -0.614371 0.100452 0.782596 -vn -0.497716 0.115337 0.859637 -vn -0.497716 0.115337 0.859637 -vn -0.288014 0.147023 0.946273 -vn -0.414725 0.131763 0.900356 -vn -0.196265 0.808193 0.555251 -vn -0.154989 0.854371 0.496013 -vn -0.162527 0.824943 0.541345 -vn -0.516975 0.772511 0.368732 -vn -0.502811 0.780685 0.371094 -vn -0.590212 0.761626 0.267537 -vn -0.590212 0.761626 0.267537 -vn -0.553387 0.796346 0.244122 -vn -0.516975 0.772511 0.368732 -vn -0.288014 0.147023 0.946273 -vn -0.297152 0.252488 0.920842 -vn -0.242177 0.214402 0.946247 -vn -0.292402 0.735849 -0.610760 -vn -0.410492 0.676393 -0.611546 -vn -0.410492 0.676393 -0.611546 -vn -0.410492 0.676393 -0.611546 -vn -0.410492 0.676393 -0.611546 -vn -0.521407 0.605113 -0.601642 -vn 0.000000 0.980345 -0.197290 -vn 0.000000 0.980345 -0.197290 -vn 0.000000 0.980345 -0.197290 -vn 0.000000 0.980345 -0.197290 -vn 0.000000 0.980345 -0.197290 -vn 0.000000 0.980345 -0.197290 -vn -0.627354 0.750824 -0.206618 -vn -0.627354 0.750824 -0.206618 -vn -0.627354 0.750824 -0.206618 -vn -0.627754 0.355929 -0.692271 -vn -0.681634 0.191303 -0.706242 -vn -0.738756 0.171591 -0.651764 -vn -0.756996 0.083522 -0.648060 -vn -0.873487 0.059242 -0.483229 -vn -0.738756 0.171591 -0.651764 -vn -0.738756 0.171591 -0.651764 -vn -0.681634 0.191303 -0.706242 -vn -0.756996 0.083522 -0.648060 -vn 0.000000 0.480972 -0.876736 -vn 0.000000 0.480972 -0.876736 -vn 0.000000 0.480972 -0.876736 -vn 0.000000 0.480972 -0.876736 -vn 0.000000 0.480972 -0.876736 -vn 0.000000 0.480972 -0.876736 -vn 0.444201 -0.894845 0.044028 -vn 0.522710 -0.850240 0.062174 -vn 0.444201 -0.894845 0.044028 -vn 0.444201 -0.894845 0.044028 -vn 0.361924 -0.931859 0.025509 -vn 0.444201 -0.894845 0.044028 -vn -0.141749 0.168051 -0.975534 -vn -0.171792 0.085748 -0.981394 -vn -0.141749 0.168051 -0.975534 -vn -0.141749 0.168051 -0.975534 -vn -0.110613 0.249058 -0.962151 -vn -0.141749 0.168051 -0.975534 -vn -0.627754 0.355929 -0.692271 -vn -0.706189 0.208586 -0.676601 -vn -0.681634 0.191303 -0.706242 -vn -0.681634 0.191303 -0.706242 -vn -0.706189 0.208586 -0.676601 -vn -0.712611 0.067971 -0.698259 -vn -0.712611 0.067971 -0.698259 -vn -0.756996 0.083522 -0.648060 -vn -0.681634 0.191303 -0.706242 -vn -0.643784 -0.484445 -0.592330 -vn -0.738344 -0.502115 -0.450255 -vn -0.701412 -0.489811 -0.517790 -vn -0.701412 -0.489811 -0.517790 -vn -0.615331 -0.456499 -0.642632 -vn -0.643784 -0.484445 -0.592330 -vn -0.738344 -0.502115 -0.450255 -vn -0.797670 -0.487419 -0.355168 -vn -0.701412 -0.489811 -0.517790 -vn 0.000000 -0.998058 0.062285 -vn 0.000000 -0.998058 0.062285 -vn 0.000000 -0.999996 0.002857 -vn 0.000000 -0.999996 0.002857 -vn 0.000000 -0.999637 -0.026940 -vn 0.000000 -0.998058 0.062285 -vn -0.726127 0.479824 -0.492452 -vn -0.765806 0.321347 -0.557025 -vn -0.765806 0.321347 -0.557025 -vn -0.619619 -0.388179 -0.682195 -vn -0.619619 -0.388179 -0.682195 -vn -0.619619 -0.388179 -0.682195 -vn -0.667124 0.744400 -0.028542 -vn -0.667124 0.744400 -0.028542 -vn -0.667124 0.744400 -0.028542 -vn -0.635435 -0.329080 -0.698519 -vn -0.635435 -0.329080 -0.698519 -vn -0.635435 -0.329080 -0.698519 -vn 0.411643 0.111793 0.904462 -vn 0.411573 0.112329 0.904428 -vn 0.416151 0.113479 0.902187 -vn 0.411573 0.112329 0.904428 -vn 0.411643 0.111793 0.904462 -vn 0.406887 0.111161 0.906690 -vn -0.781853 0.152955 -0.604410 -vn -0.765806 0.321347 -0.557025 -vn -0.765806 0.321347 -0.557025 -vn 0.411573 0.112329 0.904428 -vn 0.406887 0.111161 0.906690 -vn 0.411465 0.112585 0.904445 -vn -0.746697 0.565425 -0.350341 -vn -0.746697 0.565425 -0.350341 -vn -0.746697 0.565425 -0.350341 -vn -0.609590 -0.460140 -0.645501 -vn -0.609590 -0.460140 -0.645501 -vn -0.609590 -0.460140 -0.645501 -vn 0.416150 0.113473 0.902188 -vn 0.411465 0.112585 0.904445 -vn 0.411428 0.112305 0.904497 -vn 0.406887 0.111161 0.906690 -vn 0.411428 0.112305 0.904497 -vn 0.411465 0.112585 0.904445 -vn 0.000000 -0.996269 -0.086304 -vn -0.000000 -0.996269 -0.086304 -vn 0.000000 -0.999637 -0.026940 -vn 0.000000 -0.999637 -0.026940 -vn 0.000000 -0.999996 0.002857 -vn 0.000000 -0.996269 -0.086304 -vn 0.000000 0.731161 0.682205 -vn 0.000000 0.731161 0.682205 -vn 0.000000 0.839360 0.543576 -vn 0.000000 0.839360 0.543576 -vn 0.000000 0.839360 0.543576 -vn 0.000000 0.731161 0.682205 -vn 0.000000 -0.676198 -0.736720 -vn 0.000000 -0.676198 -0.736720 -vn 0.000000 -0.617996 -0.786181 -vn 0.000000 -0.617996 -0.786181 -vn 0.000000 -0.617996 -0.786181 -vn 0.000000 -0.676198 -0.736720 -vn 0.000000 -0.999996 0.002857 -vn 0.000000 -0.998058 0.062285 -vn 0.000000 -0.999320 -0.036864 -vn 0.000000 -0.449914 0.893072 -vn 0.000000 -0.449914 0.893072 -vn 0.000000 -0.505575 0.862782 -vn 0.000000 -0.505575 0.862782 -vn 0.000000 -0.505575 0.862782 -vn 0.000000 -0.449914 0.893072 -vn 0.000000 0.544401 0.838825 -vn 0.000000 0.571818 0.820381 -vn 0.000000 0.559102 0.829099 -vn 0.000000 0.559102 0.829099 -vn 0.000000 0.559102 0.829099 -vn 0.000000 0.544401 0.838825 -vn 0.000000 -0.012384 -0.999923 -vn 0.000000 -0.012384 -0.999923 -vn 0.000000 -0.012384 -0.999923 -vn 0.000000 -0.012384 -0.999923 -vn 0.000000 -0.012384 -0.999923 -vn 0.000000 -0.012384 -0.999923 -vn 0.000000 -0.676198 -0.736720 -vn 0.000000 -0.730455 -0.682961 -vn 0.000000 -0.730455 -0.682961 -vn 0.000000 -0.730455 -0.682961 -vn 0.000000 -0.676198 -0.736720 -vn 0.000000 -0.676198 -0.736720 -vn 0.000000 -0.999637 -0.026940 -vn -0.000000 -0.999320 -0.036864 -vn 0.000000 -0.998058 0.062285 -vn -0.050914 -0.430254 0.901271 -vn -0.011801 -0.401574 0.915751 -vn -0.001205 -0.461290 0.887249 -vn -0.339284 -0.653399 0.676724 -vn -0.339284 -0.653399 0.676724 -vn -0.339284 -0.653399 0.676724 -s off -g Default_2 -usemtl Default_2SG4 -f 1/1/1 2/2/2 3/3/3 -f 3/3/4 4/4/5 1/1/6 -usemtl Default_2SG3 -f 5/5/7 6/6/8 3/3/9 -usemtl Default_2SG4 -f 7/7/10 4/4/11 3/3/12 -usemtl Default_2SG3 -f 3/3/13 6/6/14 7/7/15 -usemtl Default_2SG4 -f 8/8/16 9/9/17 10/10/18 -f 11/11/19 4/4/20 7/7/21 -usemtl Default_2SG -f 12/12/22 13/13/23 14/14/24 -usemtl Default_2SG6 -f 15/15/25 16/16/26 12/12/27 -f 12/12/28 17/17/29 15/15/30 -usemtl Default_2SG12 -f 18/18/31 13/13/32 19/19/33 -usemtl Default_2SG1 -f 20/20/34 21/21/35 22/22/36 -f 22/22/37 23/23/38 20/20/39 -f 21/21/40 20/20/41 24/24/42 -f 24/24/43 25/25/44 21/21/45 -f 24/24/46 26/26/47 25/25/48 -f 20/20/49 23/23/50 27/27/51 -f 27/27/52 28/28/53 20/20/54 -f 24/24/55 29/29/56 30/30/57 -f 24/24/58 30/30/59 31/31/60 -f 26/26/61 24/24/62 31/31/63 -f 22/22/64 21/21/65 25/25/66 -f 25/25/67 32/32/68 22/22/69 -usemtl Default_2SG10 -f 32/32/70 25/25/71 19/19/72 -usemtl Default_2SG8 -f 7/7/73 6/6/74 17/17/75 -f 17/17/76 18/18/77 7/7/78 -usemtl Default_2SG11 -f 25/25/79 33/33/80 34/34/81 -usemtl Default_2SG9 -f 34/34/82 35/35/83 25/25/84 -usemtl Default_2SG2 -f 6/6/85 5/5/86 36/36/87 -usemtl Default_2SG10 -f 25/25/88 35/35/89 19/19/90 -usemtl Default_2SG6 -f 17/17/91 14/14/92 13/13/93 -usemtl Default_2SG8 -f 13/13/94 18/18/95 17/17/96 -usemtl Default_2SG12 -f 14/14/97 17/17/98 12/12/99 -usemtl Default_2SG -f 37/37/100 16/16/101 38/38/102 -f 38/38/103 39/39/104 37/37/105 -f 32/32/106 40/40/107 23/23/108 -f 23/23/109 22/22/110 32/32/111 -f 32/32/112 16/16/113 37/37/114 -f 37/37/115 40/40/116 32/32/117 -usemtl Default_2SG6 -f 18/18/118 34/34/119 11/11/120 -f 18/18/121 19/19/122 35/35/123 -f 35/35/124 34/34/125 18/18/126 -usemtl Default_2SG7 -f 11/11/127 7/7/128 18/18/129 -usemtl Default_2SG6 -f 12/12/130 16/16/131 32/32/132 -usemtl Default_2SG7 -f 32/32/133 19/19/134 12/12/135 -usemtl Default_2SG6 -f 19/19/136 13/13/137 12/12/138 -usemtl Default_2SG7 -f 15/15/139 17/17/140 41/41/141 -f 41/41/142 42/42/143 15/15/144 -usemtl Default_2SG10 -f 36/36/145 5/5/146 43/43/147 -f 5/5/148 2/2/149 43/43/150 -f 43/43/151 44/44/152 45/45/153 -f 45/45/154 36/36/155 43/43/156 -f 46/46/157 44/44/158 43/43/159 -f 43/43/160 11/11/161 46/46/162 -f 31/31/163 33/33/164 25/25/165 -usemtl Default_2SG1 -f 25/25/166 26/26/167 31/31/168 -usemtl Default_2SG10 -f 31/31/169 34/34/170 33/33/171 -f 34/34/172 31/31/173 11/11/174 -f 45/45/175 44/44/176 47/47/177 -f 44/44/178 46/46/179 48/48/180 -f 48/48/181 47/47/182 44/44/183 -f 49/49/184 48/48/185 46/46/186 -f 46/46/187 31/31/188 49/49/189 -f 31/31/190 46/46/191 11/11/192 -f 50/50/193 43/43/194 1/1/195 -f 9/9/196 8/8/197 43/43/198 -f 51/51/199 43/43/200 8/8/201 -f 51/51/202 11/11/203 43/43/204 -usemtl Default_2SG4 -f 11/11/205 51/51/206 8/8/207 -f 8/8/208 4/4/209 11/11/210 -usemtl Default_2SG10 -f 2/2/211 1/1/212 43/43/213 -usemtl Default_2SG4 -f 8/8/214 10/10/215 4/4/216 -usemtl Default_2SG10 -f 43/43/217 10/10/218 9/9/219 -f 43/43/220 50/50/221 10/10/222 -usemtl Default_2SG4 -f 50/50/223 1/1/224 10/10/225 -f 4/4/226 10/10/227 1/1/228 -usemtl Default_2SG1 -f 30/30/229 52/52/230 53/53/231 -f 53/53/232 31/31/233 30/30/234 -usemtl Default_2SG4 -f 54/54/235 55/55/236 56/56/237 -f 56/56/238 57/57/239 54/54/240 -usemtl Default_2SG3 -f 58/58/241 57/57/242 56/56/243 -f 59/59/244 60/60/245 56/56/246 -usemtl Default_2SG4 -f 56/56/247 55/55/248 59/59/249 -f 61/61/250 62/62/251 63/63/252 -f 64/64/253 59/59/254 55/55/255 -usemtl Default_2SG -f 65/65/256 66/66/257 67/67/258 -usemtl Default_2SG6 -f 42/42/259 65/65/260 38/38/261 -f 65/65/262 42/42/263 41/41/264 -usemtl Default_2SG12 -f 68/68/265 69/69/266 67/67/267 -usemtl Default_2SG1 -f 28/28/268 27/27/269 70/70/270 -f 70/70/271 71/71/272 28/28/273 -f 71/71/274 72/72/275 73/73/276 -f 73/73/277 28/28/278 71/71/279 -f 73/73/280 72/72/281 74/74/282 -f 52/52/283 75/75/284 73/73/285 -f 53/53/286 52/52/287 73/73/288 -f 74/74/289 53/53/290 73/73/291 -f 70/70/292 72/72/293 71/71/294 -f 72/72/295 70/70/296 76/76/297 -usemtl Default_2SG10 -f 76/76/298 69/69/299 72/72/300 -usemtl Default_2SG8 -f 59/59/301 68/68/302 41/41/303 -f 41/41/304 60/60/305 59/59/306 -usemtl Default_2SG9 -f 72/72/307 77/77/308 78/78/309 -usemtl Default_2SG11 -f 78/78/310 79/79/311 72/72/312 -usemtl Default_2SG2 -f 58/58/313 60/60/314 80/80/315 -usemtl Default_2SG10 -f 72/72/316 69/69/317 77/77/318 -usemtl Default_2SG8 -f 41/41/319 68/68/320 67/67/321 -usemtl Default_2SG6 -f 67/67/322 66/66/323 41/41/324 -usemtl Default_2SG12 -f 66/66/325 65/65/326 41/41/327 -usemtl Default_2SG -f 76/76/328 70/70/329 27/27/330 -f 27/27/331 81/81/332 76/76/333 -f 76/76/334 81/81/335 39/39/336 -f 39/39/337 38/38/338 76/76/339 -f 39/39/340 81/81/341 40/40/342 -f 40/40/343 37/37/344 39/39/345 -usemtl Default_2SG5 -f 60/60/346 6/6/347 36/36/348 -f 36/36/349 80/80/350 60/60/351 -usemtl Default_2SG6 -f 68/68/352 64/64/353 78/78/354 -f 68/68/355 78/78/356 77/77/357 -f 77/77/358 69/69/359 68/68/360 -usemtl Default_2SG7 -f 64/64/361 68/68/362 59/59/363 -f 65/65/364 69/69/365 76/76/366 -usemtl Default_2SG6 -f 76/76/367 38/38/368 65/65/369 -f 69/69/370 65/65/371 67/67/372 -usemtl Default_2SG10 -f 80/80/373 82/82/374 58/58/375 -f 58/58/376 82/82/377 57/57/378 -f 83/83/379 80/80/380 36/36/381 -f 36/36/382 45/45/383 83/83/384 -f 82/82/385 80/80/386 83/83/387 -f 83/83/388 84/84/389 82/82/390 -f 85/85/391 64/64/392 82/82/393 -f 82/82/394 84/84/395 85/85/396 -f 45/45/397 47/47/398 86/86/399 -f 86/86/400 83/83/401 45/45/402 -usemtl Default_2SG1 -f 53/53/403 74/74/404 72/72/405 -usemtl Default_2SG10 -f 72/72/406 79/79/407 53/53/408 -f 53/53/409 79/79/410 78/78/411 -f 78/78/412 64/64/413 53/53/414 -f 83/83/415 86/86/416 84/84/417 -f 84/84/418 86/86/419 87/87/420 -f 87/87/421 85/85/422 84/84/423 -f 88/88/424 53/53/425 85/85/426 -f 85/85/427 87/87/428 88/88/429 -f 53/53/430 64/64/431 85/85/432 -usemtl Default_2SG1 -f 20/20/433 28/28/434 75/75/435 -f 75/75/436 29/29/437 20/20/438 -usemtl Default_2SG10 -f 89/89/439 54/54/440 82/82/441 -f 63/63/442 82/82/443 61/61/444 -f 90/90/445 61/61/446 82/82/447 -f 90/90/448 82/82/449 64/64/450 -usemtl Default_2SG4 -f 64/64/451 61/61/452 90/90/453 -f 61/61/454 64/64/455 55/55/456 -usemtl Default_2SG10 -f 57/57/457 82/82/458 54/54/459 -usemtl Default_2SG4 -f 61/61/460 55/55/461 62/62/462 -usemtl Default_2SG10 -f 82/82/463 63/63/464 62/62/465 -f 82/82/466 62/62/467 89/89/468 -usemtl Default_2SG4 -f 89/89/469 62/62/470 54/54/471 -f 55/55/472 54/54/473 62/62/474 -usemtl Default_2SG1 -f 52/52/475 30/30/476 29/29/477 -f 29/29/478 75/75/479 52/52/480 -usemtl Default_2SG7 -f 15/15/481 42/42/482 38/38/483 -f 38/38/484 16/16/485 15/15/486 -usemtl Default_2SG10 -f 49/49/487 88/88/488 87/87/489 -f 87/87/490 48/48/491 49/49/492 -usemtl Default_2SG1 -f 75/75/493 28/28/494 73/73/495 -usemtl Default_2SG -f 40/40/496 81/81/497 27/27/498 -f 27/27/499 23/23/500 40/40/501 -usemtl Default_2SG7 -f 6/6/502 60/60/503 41/41/504 -f 41/41/505 17/17/506 6/6/507 -usemtl Default_2SG10 -f 48/48/508 87/87/509 86/86/510 -f 86/86/511 47/47/512 48/48/513 -f 49/49/514 31/91/515 53/53/516 -f 53/53/517 88/88/518 49/49/519 -usemtl Default_2SG1 -f 29/29/520 24/24/521 20/20/522 -usemtl Default_2SG3 -f 3/3/523 2/2/524 5/5/525 -f 56/56/526 60/60/527 58/58/528 diff --git a/docs/beta/bundle.js b/docs/beta/bundle.js index 207be347..b19898cb 100644 --- a/docs/beta/bundle.js +++ b/docs/beta/bundle.js @@ -1456,6 +1456,7 @@ module.exports={ const copy = require('copy-to-clipboard') const createViewer = require('..') const { svgElementToSvgImageContent } = require('../util') +const betaMesh = require('../beta-fox.json') document.addEventListener('keypress', function (event) { if (event.keyCode === 99) { // the c key @@ -1470,10 +1471,10 @@ createViewer({ height: 0.4, followMouse: true, followMotion: true, - beta: true, + meshJson: betaMesh, }) -},{"..":4,"../util":14,"copy-to-clipboard":5}],3:[function(require,module,exports){ +},{"..":4,"../beta-fox.json":1,"../util":14,"copy-to-clipboard":5}],3:[function(require,module,exports){ module.exports={ "positions": [ [ @@ -2903,7 +2904,6 @@ module.exports={ },{}],4:[function(require,module,exports){ const foxJson = require('./fox.json') -const betaFoxJson = require('./beta-fox.json') const { calculateSizingOptions, createLogoViewer, @@ -2918,7 +2918,7 @@ module.exports = createLogo function createLogo (options = {}) { const cameraDistance = options.cameraDistance || 400 const { height, width } = calculateSizingOptions(options) - const modelJson = options.beta ? betaFoxJson : foxJson; + const modelJson = options.meshJson || foxJson const container = createNode('svg') setAttribute(container, 'width', `${width}px`) @@ -2935,7 +2935,7 @@ function createLogo (options = {}) { return createLogoViewer(container, renderScene, { cameraDistance, ...options }) } -},{"./beta-fox.json":1,"./fox.json":3,"./util.js":14}],5:[function(require,module,exports){ +},{"./fox.json":3,"./util.js":14}],5:[function(require,module,exports){ 'use strict'; var deselectCurrent = require('toggle-selection'); diff --git a/docs/normal/bundle.js b/docs/normal/bundle.js index 3a742b09..c7343c2e 100644 --- a/docs/normal/bundle.js +++ b/docs/normal/bundle.js @@ -1,1458 +1,4 @@ (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;ip~2Q+9STl^yEE7O?wSPny|p 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 diff --git a/index.js b/index.js index 6d50eb7f..bfa4f3fb 100644 --- a/index.js +++ b/index.js @@ -1,5 +1,4 @@ const foxJson = require('./fox.json') -const betaFoxJson = require('./beta-fox.json') const { calculateSizingOptions, createLogoViewer, @@ -14,7 +13,7 @@ module.exports = createLogo function createLogo (options = {}) { const cameraDistance = options.cameraDistance || 400 const { height, width } = calculateSizingOptions(options) - const modelJson = options.beta ? betaFoxJson : foxJson + const modelJson = options.meshJson || foxJson const container = createNode('svg') setAttribute(container, 'width', `${width}px`) From bd38c223fa958c717c16bb4b2a8ce6e6645145ae Mon Sep 17 00:00:00 2001 From: David Walsh Date: Fri, 28 May 2021 17:33:06 -0500 Subject: [PATCH 3/4] Require a meshJson parameter --- docs/beta/bundle.js | 1463 +-------------------------------------- docs/distort/bundle.js | 1 + docs/gradient/bundle.js | 1 + docs/normal/bundle.js | 13 +- docs/recolor/bundle.js | 1 + example/beta.js | 4 +- example/distort.js | 1 + example/gradient.js | 1 + example/normal.js | 2 + example/recolor.js | 1 + index.js | 8 +- 11 files changed, 43 insertions(+), 1453 deletions(-) diff --git a/docs/beta/bundle.js b/docs/beta/bundle.js index b19898cb..bad475b5 100644 --- a/docs/beta/bundle.js +++ b/docs/beta/bundle.js @@ -1456,7 +1456,7 @@ module.exports={ const copy = require('copy-to-clipboard') const createViewer = require('..') const { svgElementToSvgImageContent } = require('../util') -const betaMesh = require('../beta-fox.json') +const meshJson = require('../beta-fox.json') document.addEventListener('keypress', function (event) { if (event.keyCode === 99) { // the c key @@ -1471,1439 +1471,10 @@ createViewer({ height: 0.4, followMouse: true, followMotion: true, - meshJson: betaMesh, + meshJson, }) -},{"..":4,"../beta-fox.json":1,"../util":14,"copy-to-clipboard":5}],3:[function(require,module,exports){ -module.exports={ - "positions": [ - [ - 111.0246, - 52.6046, - 46.2259 - ], - [ - 114.025, - 87.6733, - 58.9818 - ], - [ - 66.192, - 80.898, - 55.3943 - ], - [ - 72.1133, - 35.4918, - 30.8714 - ], - [ - 97.8045, - 116.561, - 73.9788 - ], - [ - 16.7623, - 58.0109, - 58.0782 - ], - [ - 52.6089, - 30.3641, - 42.5561 - ], - [ - 106.8814, - 31.9455, - 46.9133 - ], - [ - 113.4846, - 38.6049, - 49.1215 - ], - [ - 108.6633, - 43.2332, - 46.3154 - ], - [ - 101.2166, - 15.9822, - 46.3082 - ], - [ - 16.6605, - -16.2883, - 93.6187 - ], - [ - 40.775, - -10.2288, - 85.2764 - ], - [ - 23.9269, - -2.5103, - 86.7365 - ], - [ - 11.1691, - -7.0037, - 99.3776 - ], - [ - 9.5692, - -34.3939, - 141.672 - ], - [ - 12.596, - 7.1655, - 88.741 - ], - [ - 61.1809, - 8.8142, - 76.9968 - ], - [ - 39.7195, - -28.9271, - 88.9638 - ], - [ - 13.7962, - -68.5757, - 132.057 - ], - [ - 15.2674, - -62.32, - 129.688 - ], - [ - 14.8446, - -52.6096, - 140.113 - ], - [ - 12.8917, - -49.7716, - 144.741 - ], - [ - 35.6042, - -71.758, - 81.0639 - ], - [ - 47.4625, - -68.6061, - 63.3697 - ], - [ - 38.2486, - -64.7302, - 38.9099 - ], - [ - -12.8917, - -49.7716, - 144.741 - ], - [ - -13.7962, - -68.5757, - 132.057 - ], - [ - 17.8021, - -71.758, - 81.0639 - ], - [ - 19.1243, - -69.0168, - 49.4201 - ], - [ - 38.2486, - -66.2756, - 17.7762 - ], - [ - 12.8928, - -36.7035, - 141.672 - ], - [ - 109.284, - -93.5899, - 27.8243 - ], - [ - 122.118, - -36.8894, - 35.025 - ], - [ - 67.7668, - -30.197, - 78.4178 - ], - [ - 33.1807, - 101.852, - 25.3186 - ], - [ - 9.4063, - -35.5898, - 150.722 - ], - [ - -9.5692, - -34.3939, - 141.672 - ], - [ - -9.4063, - -35.5898, - 150.722 - ], - [ - 11.4565, - -37.8994, - 150.722 - ], - [ - -12.596, - 7.1655, - 88.741 - ], - [ - -11.1691, - -7.0037, - 99.3776 - ], - [ - 70.2365, - 62.8362, - -3.9475 - ], - [ - 47.2634, - 54.294, - -27.4148 - ], - [ - 28.7302, - 91.7311, - -24.9726 - ], - [ - 69.1676, - 6.5862, - -12.7757 - ], - [ - 28.7302, - 49.1003, - -48.3596 - ], - [ - 31.903, - 5.692, - -47.822 - ], - [ - 35.0758, - -34.4329, - -16.2809 - ], - [ - 115.2841, - 48.6815, - 48.6841 - ], - [ - 110.8428, - 28.4821, - 49.1762 - ], - [ - -19.1243, - -69.0168, - 49.4201 - ], - [ - -38.2486, - -66.2756, - 17.7762 - ], - [ - -111.0246, - 52.6046, - 46.2259 - ], - [ - -72.1133, - 35.4918, - 30.8714 - ], - [ - -66.192, - 80.898, - 55.3943 - ], - [ - -114.025, - 87.6733, - 58.9818 - ], - [ - -97.8045, - 116.561, - 73.9788 - ], - [ - -52.6089, - 30.3641, - 42.5561 - ], - [ - -16.7623, - 58.0109, - 58.0782 - ], - [ - -106.8814, - 31.9455, - 46.9133 - ], - [ - -108.6633, - 43.2332, - 46.3154 - ], - [ - -113.4846, - 38.6049, - 49.1215 - ], - [ - -101.2166, - 15.9822, - 46.3082 - ], - [ - -16.6605, - -16.2883, - 93.6187 - ], - [ - -23.9269, - -2.5103, - 86.7365 - ], - [ - -40.775, - -10.2288, - 85.2764 - ], - [ - -61.1809, - 8.8142, - 76.9968 - ], - [ - -39.7195, - -28.9271, - 88.9638 - ], - [ - -14.8446, - -52.6096, - 140.113 - ], - [ - -15.2674, - -62.32, - 129.688 - ], - [ - -47.4625, - -68.6061, - 63.3697 - ], - [ - -35.6042, - -71.758, - 81.0639 - ], - [ - -38.2486, - -64.7302, - 38.9099 - ], - [ - -17.8021, - -71.758, - 81.0639 - ], - [ - -12.8928, - -36.7035, - 141.672 - ], - [ - -67.7668, - -30.197, - 78.4178 - ], - [ - -122.118, - -36.8894, - 35.025 - ], - [ - -109.284, - -93.5899, - 27.8243 - ], - [ - -33.1807, - 101.852, - 25.3186 - ], - [ - -11.4565, - -37.8994, - 150.722 - ], - [ - -70.2365, - 62.8362, - -3.9475 - ], - [ - -28.7302, - 91.7311, - -24.9726 - ], - [ - -47.2634, - 54.294, - -27.4148 - ], - [ - -69.1676, - 6.5862, - -12.7757 - ], - [ - -28.7302, - 49.1003, - -48.3596 - ], - [ - -31.903, - 5.692, - -47.822 - ], - [ - -35.0758, - -34.4329, - -16.2809 - ], - [ - -115.2841, - 48.6815, - 48.6841 - ], - [ - -110.8428, - 28.4821, - 49.1762 - ] - ], - "chunks": [ - { - "color": [ - 246, - 133, - 27 - ], - "faces": [ - [ - 17, - 33, - 10 - ], - [ - 17, - 18, - 34 - ], - [ - 34, - 33, - 17 - ], - [ - 10, - 6, - 17 - ], - [ - 11, - 15, - 31 - ], - [ - 31, - 18, - 11 - ], - [ - 18, - 12, - 11 - ], - [ - 14, - 16, - 40 - ], - [ - 40, - 41, - 14 - ], - [ - 59, - 5, - 35 - ], - [ - 35, - 79, - 59 - ], - [ - 67, - 63, - 77 - ], - [ - 67, - 77, - 76 - ], - [ - 76, - 68, - 67 - ], - [ - 63, - 67, - 58 - ], - [ - 64, - 68, - 75 - ], - [ - 75, - 37, - 64 - ], - [ - 68, - 64, - 66 - ], - [ - 14, - 41, - 37 - ], - [ - 37, - 15, - 14 - ], - [ - 5, - 59, - 40 - ], - [ - 40, - 16, - 5 - ] - ] - }, - { - "color": [ - 228, - 118, - 27 - ], - "faces": [ - [ - 31, - 24, - 18 - ], - [ - 6, - 5, - 16 - ], - [ - 16, - 17, - 6 - ], - [ - 24, - 32, - 33 - ], - [ - 33, - 34, - 24 - ], - [ - 5, - 4, - 35 - ], - [ - 75, - 68, - 71 - ], - [ - 58, - 67, - 40 - ], - [ - 40, - 59, - 58 - ], - [ - 71, - 76, - 77 - ], - [ - 77, - 78, - 71 - ] - ] - }, - { - "color": [ - 118, - 61, - 22 - ], - "faces": [ - [ - 0, - 1, - 2 - ], - [ - 2, - 3, - 0 - ], - [ - 4, - 5, - 2 - ], - [ - 6, - 3, - 2 - ], - [ - 2, - 5, - 6 - ], - [ - 7, - 8, - 9 - ], - [ - 10, - 3, - 6 - ], - [ - 10, - 50, - 7 - ], - [ - 7, - 3, - 10 - ], - [ - 7, - 9, - 3 - ], - [ - 49, - 0, - 9 - ], - [ - 3, - 9, - 0 - ], - [ - 53, - 54, - 55 - ], - [ - 55, - 56, - 53 - ], - [ - 57, - 56, - 55 - ], - [ - 58, - 59, - 55 - ], - [ - 55, - 54, - 58 - ], - [ - 60, - 61, - 62 - ], - [ - 63, - 58, - 54 - ], - [ - 63, - 60, - 89 - ], - [ - 60, - 63, - 54 - ], - [ - 60, - 54, - 61 - ], - [ - 88, - 61, - 53 - ], - [ - 54, - 53, - 61 - ], - [ - 2, - 1, - 4 - ], - [ - 55, - 59, - 57 - ] - ] - }, - { - "color": [ - 22, - 22, - 22 - ], - "faces": [ - [ - 36, - 15, - 37 - ], - [ - 37, - 38, - 36 - ], - [ - 31, - 39, - 22 - ], - [ - 22, - 21, - 31 - ], - [ - 31, - 15, - 36 - ], - [ - 36, - 39, - 31 - ], - [ - 75, - 69, - 26 - ], - [ - 26, - 80, - 75 - ], - [ - 75, - 80, - 38 - ], - [ - 38, - 37, - 75 - ], - [ - 38, - 80, - 39 - ], - [ - 39, - 36, - 38 - ], - [ - 39, - 80, - 26 - ], - [ - 26, - 22, - 39 - ] - ] - }, - { - "color": [ - 215, - 193, - 179 - ], - "faces": [ - [ - 21, - 20, - 24 - ], - [ - 24, - 31, - 21 - ], - [ - 69, - 71, - 70 - ], - [ - 71, - 69, - 75 - ] - ] - }, - { - "color": [ - 192, - 173, - 158 - ], - "faces": [ - [ - 19, - 20, - 21 - ], - [ - 21, - 22, - 19 - ], - [ - 20, - 19, - 23 - ], - [ - 23, - 24, - 20 - ], - [ - 23, - 25, - 24 - ], - [ - 19, - 22, - 26 - ], - [ - 26, - 27, - 19 - ], - [ - 23, - 28, - 29 - ], - [ - 23, - 29, - 30 - ], - [ - 25, - 23, - 30 - ], - [ - 29, - 51, - 52 - ], - [ - 52, - 30, - 29 - ], - [ - 27, - 26, - 69 - ], - [ - 69, - 70, - 27 - ], - [ - 70, - 71, - 72 - ], - [ - 72, - 27, - 70 - ], - [ - 72, - 71, - 73 - ], - [ - 51, - 74, - 72 - ], - [ - 52, - 51, - 72 - ], - [ - 73, - 52, - 72 - ], - [ - 19, - 27, - 74 - ], - [ - 74, - 28, - 19 - ], - [ - 51, - 29, - 28 - ], - [ - 28, - 74, - 51 - ], - [ - 74, - 27, - 72 - ], - [ - 28, - 23, - 19 - ] - ] - }, - { - "color": [ - 205, - 97, - 22 - ], - "faces": [ - [ - 24, - 34, - 18 - ], - [ - 16, - 13, - 12 - ], - [ - 12, - 17, - 16 - ], - [ - 13, - 16, - 11 - ], - [ - 71, - 68, - 76 - ], - [ - 40, - 67, - 66 - ], - [ - 66, - 65, - 40 - ], - [ - 65, - 64, - 40 - ] - ] - }, - { - "color": [ - 35, - 52, - 71 - ], - "faces": [ - [ - 11, - 12, - 13 - ], - [ - 64, - 65, - 66 - ] - ] - }, - { - "color": [ - 228, - 117, - 31 - ], - "faces": [ - [ - 14, - 15, - 11 - ], - [ - 11, - 16, - 14 - ], - [ - 17, - 12, - 18 - ], - [ - 41, - 64, - 37 - ], - [ - 67, - 68, - 66 - ] - ] - }, - { - "color": [ - 226, - 118, - 27 - ], - "faces": [ - [ - 35, - 4, - 42 - ], - [ - 4, - 1, - 42 - ], - [ - 42, - 43, - 44 - ], - [ - 44, - 35, - 42 - ], - [ - 45, - 43, - 42 - ], - [ - 42, - 10, - 45 - ], - [ - 30, - 32, - 24 - ], - [ - 24, - 25, - 30 - ], - [ - 30, - 33, - 32 - ], - [ - 33, - 30, - 10 - ], - [ - 44, - 43, - 46 - ], - [ - 43, - 45, - 47 - ], - [ - 47, - 46, - 43 - ], - [ - 48, - 47, - 45 - ], - [ - 45, - 30, - 48 - ], - [ - 30, - 45, - 10 - ], - [ - 49, - 42, - 0 - ], - [ - 8, - 7, - 42 - ], - [ - 50, - 42, - 7 - ], - [ - 50, - 10, - 42 - ], - [ - 1, - 0, - 42 - ], - [ - 42, - 9, - 8 - ], - [ - 42, - 49, - 9 - ], - [ - 64, - 41, - 40 - ], - [ - 57, - 59, - 79 - ], - [ - 79, - 81, - 57 - ], - [ - 57, - 81, - 56 - ], - [ - 82, - 79, - 35 - ], - [ - 35, - 44, - 82 - ], - [ - 81, - 79, - 82 - ], - [ - 82, - 83, - 81 - ], - [ - 84, - 63, - 81 - ], - [ - 81, - 83, - 84 - ], - [ - 44, - 46, - 85 - ], - [ - 85, - 82, - 44 - ], - [ - 52, - 73, - 71 - ], - [ - 71, - 78, - 52 - ], - [ - 52, - 78, - 77 - ], - [ - 77, - 63, - 52 - ], - [ - 82, - 85, - 83 - ], - [ - 83, - 85, - 86 - ], - [ - 86, - 84, - 83 - ], - [ - 87, - 52, - 84 - ], - [ - 84, - 86, - 87 - ], - [ - 52, - 63, - 84 - ], - [ - 88, - 53, - 81 - ], - [ - 62, - 81, - 60 - ], - [ - 89, - 60, - 81 - ], - [ - 89, - 81, - 63 - ], - [ - 56, - 81, - 53 - ], - [ - 81, - 62, - 61 - ], - [ - 81, - 61, - 88 - ], - [ - 48, - 87, - 86 - ], - [ - 86, - 47, - 48 - ], - [ - 47, - 86, - 85 - ], - [ - 85, - 46, - 47 - ], - [ - 48, - 30, - 52 - ], - [ - 52, - 87, - 48 - ] - ] - } - ] -} - -},{}],4:[function(require,module,exports){ -const foxJson = require('./fox.json') +},{"..":3,"../beta-fox.json":1,"../util":13,"copy-to-clipboard":4}],3:[function(require,module,exports){ const { calculateSizingOptions, createLogoViewer, @@ -2916,9 +1487,13 @@ const { module.exports = createLogo function createLogo (options = {}) { + if (!options.meshJson) { + throw new Error('The meshJson parameter is required') + } + const cameraDistance = options.cameraDistance || 400 const { height, width } = calculateSizingOptions(options) - const modelJson = options.meshJson || foxJson + const modelJson = options.meshJson const container = createNode('svg') setAttribute(container, 'width', `${width}px`) @@ -2935,7 +1510,7 @@ function createLogo (options = {}) { return createLogoViewer(container, renderScene, { cameraDistance, ...options }) } -},{"./fox.json":3,"./util.js":14}],5:[function(require,module,exports){ +},{"./util.js":13}],4:[function(require,module,exports){ 'use strict'; var deselectCurrent = require('toggle-selection'); @@ -3015,7 +1590,7 @@ function copy(text, options) { module.exports = copy; -},{"toggle-selection":13}],6:[function(require,module,exports){ +},{"toggle-selection":12}],5:[function(require,module,exports){ module.exports = identity; /** @@ -3043,7 +1618,7 @@ function identity(out) { out[15] = 1; return out; }; -},{}],7:[function(require,module,exports){ +},{}],6:[function(require,module,exports){ module.exports = invert; /** @@ -3099,7 +1674,7 @@ function invert(out, a) { return out; }; -},{}],8:[function(require,module,exports){ +},{}],7:[function(require,module,exports){ var identity = require('./identity'); module.exports = lookAt; @@ -3190,7 +1765,7 @@ function lookAt(out, eye, center, up) { return out; }; -},{"./identity":6}],9:[function(require,module,exports){ +},{"./identity":5}],8:[function(require,module,exports){ module.exports = multiply; /** @@ -3233,7 +1808,7 @@ function multiply(out, a, b) { out[15] = b0*a03 + b1*a13 + b2*a23 + b3*a33; return out; }; -},{}],10:[function(require,module,exports){ +},{}],9:[function(require,module,exports){ module.exports = perspective; /** @@ -3267,7 +1842,7 @@ function perspective(out, fovy, aspect, near, far) { out[15] = 0; return out; }; -},{}],11:[function(require,module,exports){ +},{}],10:[function(require,module,exports){ module.exports = rotate; /** @@ -3332,7 +1907,7 @@ function rotate(out, a, rad, axis) { } return out; }; -},{}],12:[function(require,module,exports){ +},{}],11:[function(require,module,exports){ module.exports = transformMat4; /** @@ -3353,7 +1928,7 @@ function transformMat4(out, a, m) { out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w return out } -},{}],13:[function(require,module,exports){ +},{}],12:[function(require,module,exports){ module.exports = function () { var selection = document.getSelection(); @@ -3394,7 +1969,7 @@ module.exports = function () { }; }; -},{}],14:[function(require,module,exports){ +},{}],13:[function(require,module,exports){ const perspective = require('gl-mat4/perspective') const multiply = require('gl-mat4/multiply') const lookAt = require('gl-mat4/lookAt') @@ -3811,4 +2386,4 @@ function Polygon (svg, indices) { this.zIndex = 0 } -},{"gl-mat4/invert":7,"gl-mat4/lookAt":8,"gl-mat4/multiply":9,"gl-mat4/perspective":10,"gl-mat4/rotate":11,"gl-vec3/transformMat4":12}]},{},[2]); +},{"gl-mat4/invert":6,"gl-mat4/lookAt":7,"gl-mat4/multiply":8,"gl-mat4/perspective":9,"gl-mat4/rotate":10,"gl-vec3/transformMat4":11}]},{},[2]); diff --git a/docs/distort/bundle.js b/docs/distort/bundle.js index 65a797d0..18abc78b 100644 --- a/docs/distort/bundle.js +++ b/docs/distort/bundle.js @@ -15,6 +15,7 @@ createDistortedLogo({ followMouse: true, followMotion: true, lazyRender: false, + meshJson: foxJson, }) function createDistortedLogo (options) { diff --git a/docs/gradient/bundle.js b/docs/gradient/bundle.js index a4f8b7ba..cc76815b 100644 --- a/docs/gradient/bundle.js +++ b/docs/gradient/bundle.js @@ -24,6 +24,7 @@ createGradientLogo({ height: 0.4, followMouse: true, followMotion: true, + meshJson: foxJson, }) function createGradientLogo (options) { diff --git a/docs/normal/bundle.js b/docs/normal/bundle.js index c7343c2e..8928d67e 100644 --- a/docs/normal/bundle.js +++ b/docs/normal/bundle.js @@ -2,6 +2,7 @@ const copy = require('copy-to-clipboard') const createViewer = require('..') const { svgElementToSvgImageContent } = require('../util') +const foxJson = require('../fox.json') document.addEventListener('keypress', function (event) { if (event.keyCode === 99) { // the c key @@ -16,9 +17,10 @@ createViewer({ height: 0.4, followMouse: true, followMotion: true, + meshJson: foxJson, }) -},{"..":3,"../util":13,"copy-to-clipboard":4}],2:[function(require,module,exports){ +},{"..":3,"../fox.json":2,"../util":13,"copy-to-clipboard":4}],2:[function(require,module,exports){ module.exports={ "positions": [ [ @@ -1447,7 +1449,6 @@ module.exports={ } },{}],3:[function(require,module,exports){ -const foxJson = require('./fox.json') const { calculateSizingOptions, createLogoViewer, @@ -1460,9 +1461,13 @@ const { module.exports = createLogo function createLogo (options = {}) { + if (!options.meshJson) { + throw new Error('The meshJson parameter is required') + } + const cameraDistance = options.cameraDistance || 400 const { height, width } = calculateSizingOptions(options) - const modelJson = options.meshJson || foxJson + const modelJson = options.meshJson const container = createNode('svg') setAttribute(container, 'width', `${width}px`) @@ -1479,7 +1484,7 @@ function createLogo (options = {}) { return createLogoViewer(container, renderScene, { cameraDistance, ...options }) } -},{"./fox.json":2,"./util.js":13}],4:[function(require,module,exports){ +},{"./util.js":13}],4:[function(require,module,exports){ 'use strict'; var deselectCurrent = require('toggle-selection'); diff --git a/docs/recolor/bundle.js b/docs/recolor/bundle.js index 803d445a..30721a67 100644 --- a/docs/recolor/bundle.js +++ b/docs/recolor/bundle.js @@ -55,6 +55,7 @@ const viewer = createRecolorLogo({ height: 0.4, followMouse: true, followMotion: true, + meshJson: foxJson, }) const foxDiv = document.querySelector('body div.fox') diff --git a/example/beta.js b/example/beta.js index f888b30c..06dad38c 100644 --- a/example/beta.js +++ b/example/beta.js @@ -1,7 +1,7 @@ const copy = require('copy-to-clipboard') const createViewer = require('..') const { svgElementToSvgImageContent } = require('../util') -const betaMesh = require('../beta-fox.json') +const meshJson = require('../beta-fox.json') document.addEventListener('keypress', function (event) { if (event.keyCode === 99) { // the c key @@ -16,5 +16,5 @@ createViewer({ height: 0.4, followMouse: true, followMotion: true, - meshJson: betaMesh, + meshJson, }) diff --git a/example/distort.js b/example/distort.js index 8c6dfc73..a2f87c84 100644 --- a/example/distort.js +++ b/example/distort.js @@ -14,6 +14,7 @@ createDistortedLogo({ followMouse: true, followMotion: true, lazyRender: false, + meshJson: foxJson, }) function createDistortedLogo (options) { diff --git a/example/gradient.js b/example/gradient.js index 6cdfbd5d..30b86b63 100644 --- a/example/gradient.js +++ b/example/gradient.js @@ -23,6 +23,7 @@ createGradientLogo({ height: 0.4, followMouse: true, followMotion: true, + meshJson: foxJson, }) function createGradientLogo (options) { diff --git a/example/normal.js b/example/normal.js index ae13e57b..f12a08ed 100644 --- a/example/normal.js +++ b/example/normal.js @@ -1,6 +1,7 @@ const copy = require('copy-to-clipboard') const createViewer = require('..') const { svgElementToSvgImageContent } = require('../util') +const foxJson = require('../fox.json') document.addEventListener('keypress', function (event) { if (event.keyCode === 99) { // the c key @@ -15,4 +16,5 @@ createViewer({ height: 0.4, followMouse: true, followMotion: true, + meshJson: foxJson, }) diff --git a/example/recolor.js b/example/recolor.js index 5d17c240..9955d23c 100644 --- a/example/recolor.js +++ b/example/recolor.js @@ -54,6 +54,7 @@ const viewer = createRecolorLogo({ height: 0.4, followMouse: true, followMotion: true, + meshJson: foxJson, }) const foxDiv = document.querySelector('body div.fox') diff --git a/index.js b/index.js index bfa4f3fb..02fa62a3 100644 --- a/index.js +++ b/index.js @@ -1,4 +1,3 @@ -const foxJson = require('./fox.json') const { calculateSizingOptions, createLogoViewer, @@ -11,16 +10,19 @@ const { module.exports = createLogo function createLogo (options = {}) { + if (!options.meshJson) { + throw new Error('The meshJson parameter is required') + } + const cameraDistance = options.cameraDistance || 400 const { height, width } = calculateSizingOptions(options) - const modelJson = options.meshJson || foxJson const container = createNode('svg') setAttribute(container, 'width', `${width}px`) setAttribute(container, 'height', `${height}px`) document.body.appendChild(container) - const modelObj = loadModelFromJson(modelJson) + const modelObj = loadModelFromJson(options.meshJson) const renderFox = createModelRenderer(container, cameraDistance, modelObj) const renderScene = (lookCurrent, slowDrift) => { const rect = container.getBoundingClientRect() From 5774ea5b19a57c00cc907a536b88f521a89af8c3 Mon Sep 17 00:00:00 2001 From: David Walsh Date: Thu, 3 Jun 2021 09:51:35 -0500 Subject: [PATCH 4/4] Revert to using default fox --- docs/beta/bundle.js | 1460 ++++++++++++++++++++++++++++++++++++++- docs/distort/bundle.js | 1 - docs/gradient/bundle.js | 1 - docs/normal/bundle.js | 14 +- docs/recolor/bundle.js | 1 - example/distort.js | 1 - example/gradient.js | 1 - example/normal.js | 2 - example/recolor.js | 1 - index.js | 7 +- 10 files changed, 1448 insertions(+), 41 deletions(-) diff --git a/docs/beta/bundle.js b/docs/beta/bundle.js index bad475b5..af2bbad6 100644 --- a/docs/beta/bundle.js +++ b/docs/beta/bundle.js @@ -1474,7 +1474,1436 @@ createViewer({ meshJson, }) -},{"..":3,"../beta-fox.json":1,"../util":13,"copy-to-clipboard":4}],3:[function(require,module,exports){ +},{"..":4,"../beta-fox.json":1,"../util":14,"copy-to-clipboard":5}],3:[function(require,module,exports){ +module.exports={ + "positions": [ + [ + 111.0246, + 52.6046, + 46.2259 + ], + [ + 114.025, + 87.6733, + 58.9818 + ], + [ + 66.192, + 80.898, + 55.3943 + ], + [ + 72.1133, + 35.4918, + 30.8714 + ], + [ + 97.8045, + 116.561, + 73.9788 + ], + [ + 16.7623, + 58.0109, + 58.0782 + ], + [ + 52.6089, + 30.3641, + 42.5561 + ], + [ + 106.8814, + 31.9455, + 46.9133 + ], + [ + 113.4846, + 38.6049, + 49.1215 + ], + [ + 108.6633, + 43.2332, + 46.3154 + ], + [ + 101.2166, + 15.9822, + 46.3082 + ], + [ + 16.6605, + -16.2883, + 93.6187 + ], + [ + 40.775, + -10.2288, + 85.2764 + ], + [ + 23.9269, + -2.5103, + 86.7365 + ], + [ + 11.1691, + -7.0037, + 99.3776 + ], + [ + 9.5692, + -34.3939, + 141.672 + ], + [ + 12.596, + 7.1655, + 88.741 + ], + [ + 61.1809, + 8.8142, + 76.9968 + ], + [ + 39.7195, + -28.9271, + 88.9638 + ], + [ + 13.7962, + -68.5757, + 132.057 + ], + [ + 15.2674, + -62.32, + 129.688 + ], + [ + 14.8446, + -52.6096, + 140.113 + ], + [ + 12.8917, + -49.7716, + 144.741 + ], + [ + 35.6042, + -71.758, + 81.0639 + ], + [ + 47.4625, + -68.6061, + 63.3697 + ], + [ + 38.2486, + -64.7302, + 38.9099 + ], + [ + -12.8917, + -49.7716, + 144.741 + ], + [ + -13.7962, + -68.5757, + 132.057 + ], + [ + 17.8021, + -71.758, + 81.0639 + ], + [ + 19.1243, + -69.0168, + 49.4201 + ], + [ + 38.2486, + -66.2756, + 17.7762 + ], + [ + 12.8928, + -36.7035, + 141.672 + ], + [ + 109.284, + -93.5899, + 27.8243 + ], + [ + 122.118, + -36.8894, + 35.025 + ], + [ + 67.7668, + -30.197, + 78.4178 + ], + [ + 33.1807, + 101.852, + 25.3186 + ], + [ + 9.4063, + -35.5898, + 150.722 + ], + [ + -9.5692, + -34.3939, + 141.672 + ], + [ + -9.4063, + -35.5898, + 150.722 + ], + [ + 11.4565, + -37.8994, + 150.722 + ], + [ + -12.596, + 7.1655, + 88.741 + ], + [ + -11.1691, + -7.0037, + 99.3776 + ], + [ + 70.2365, + 62.8362, + -3.9475 + ], + [ + 47.2634, + 54.294, + -27.4148 + ], + [ + 28.7302, + 91.7311, + -24.9726 + ], + [ + 69.1676, + 6.5862, + -12.7757 + ], + [ + 28.7302, + 49.1003, + -48.3596 + ], + [ + 31.903, + 5.692, + -47.822 + ], + [ + 35.0758, + -34.4329, + -16.2809 + ], + [ + 115.2841, + 48.6815, + 48.6841 + ], + [ + 110.8428, + 28.4821, + 49.1762 + ], + [ + -19.1243, + -69.0168, + 49.4201 + ], + [ + -38.2486, + -66.2756, + 17.7762 + ], + [ + -111.0246, + 52.6046, + 46.2259 + ], + [ + -72.1133, + 35.4918, + 30.8714 + ], + [ + -66.192, + 80.898, + 55.3943 + ], + [ + -114.025, + 87.6733, + 58.9818 + ], + [ + -97.8045, + 116.561, + 73.9788 + ], + [ + -52.6089, + 30.3641, + 42.5561 + ], + [ + -16.7623, + 58.0109, + 58.0782 + ], + [ + -106.8814, + 31.9455, + 46.9133 + ], + [ + -108.6633, + 43.2332, + 46.3154 + ], + [ + -113.4846, + 38.6049, + 49.1215 + ], + [ + -101.2166, + 15.9822, + 46.3082 + ], + [ + -16.6605, + -16.2883, + 93.6187 + ], + [ + -23.9269, + -2.5103, + 86.7365 + ], + [ + -40.775, + -10.2288, + 85.2764 + ], + [ + -61.1809, + 8.8142, + 76.9968 + ], + [ + -39.7195, + -28.9271, + 88.9638 + ], + [ + -14.8446, + -52.6096, + 140.113 + ], + [ + -15.2674, + -62.32, + 129.688 + ], + [ + -47.4625, + -68.6061, + 63.3697 + ], + [ + -35.6042, + -71.758, + 81.0639 + ], + [ + -38.2486, + -64.7302, + 38.9099 + ], + [ + -17.8021, + -71.758, + 81.0639 + ], + [ + -12.8928, + -36.7035, + 141.672 + ], + [ + -67.7668, + -30.197, + 78.4178 + ], + [ + -122.118, + -36.8894, + 35.025 + ], + [ + -109.284, + -93.5899, + 27.8243 + ], + [ + -33.1807, + 101.852, + 25.3186 + ], + [ + -11.4565, + -37.8994, + 150.722 + ], + [ + -70.2365, + 62.8362, + -3.9475 + ], + [ + -28.7302, + 91.7311, + -24.9726 + ], + [ + -47.2634, + 54.294, + -27.4148 + ], + [ + -69.1676, + 6.5862, + -12.7757 + ], + [ + -28.7302, + 49.1003, + -48.3596 + ], + [ + -31.903, + 5.692, + -47.822 + ], + [ + -35.0758, + -34.4329, + -16.2809 + ], + [ + -115.2841, + 48.6815, + 48.6841 + ], + [ + -110.8428, + 28.4821, + 49.1762 + ] + ], + "chunks": [ + { + "color": [ + 246, + 133, + 27 + ], + "faces": [ + [ + 17, + 33, + 10 + ], + [ + 17, + 18, + 34 + ], + [ + 34, + 33, + 17 + ], + [ + 10, + 6, + 17 + ], + [ + 11, + 15, + 31 + ], + [ + 31, + 18, + 11 + ], + [ + 18, + 12, + 11 + ], + [ + 14, + 16, + 40 + ], + [ + 40, + 41, + 14 + ], + [ + 59, + 5, + 35 + ], + [ + 35, + 79, + 59 + ], + [ + 67, + 63, + 77 + ], + [ + 67, + 77, + 76 + ], + [ + 76, + 68, + 67 + ], + [ + 63, + 67, + 58 + ], + [ + 64, + 68, + 75 + ], + [ + 75, + 37, + 64 + ], + [ + 68, + 64, + 66 + ], + [ + 14, + 41, + 37 + ], + [ + 37, + 15, + 14 + ], + [ + 5, + 59, + 40 + ], + [ + 40, + 16, + 5 + ] + ] + }, + { + "color": [ + 228, + 118, + 27 + ], + "faces": [ + [ + 31, + 24, + 18 + ], + [ + 6, + 5, + 16 + ], + [ + 16, + 17, + 6 + ], + [ + 24, + 32, + 33 + ], + [ + 33, + 34, + 24 + ], + [ + 5, + 4, + 35 + ], + [ + 75, + 68, + 71 + ], + [ + 58, + 67, + 40 + ], + [ + 40, + 59, + 58 + ], + [ + 71, + 76, + 77 + ], + [ + 77, + 78, + 71 + ] + ] + }, + { + "color": [ + 118, + 61, + 22 + ], + "faces": [ + [ + 0, + 1, + 2 + ], + [ + 2, + 3, + 0 + ], + [ + 4, + 5, + 2 + ], + [ + 6, + 3, + 2 + ], + [ + 2, + 5, + 6 + ], + [ + 7, + 8, + 9 + ], + [ + 10, + 3, + 6 + ], + [ + 10, + 50, + 7 + ], + [ + 7, + 3, + 10 + ], + [ + 7, + 9, + 3 + ], + [ + 49, + 0, + 9 + ], + [ + 3, + 9, + 0 + ], + [ + 53, + 54, + 55 + ], + [ + 55, + 56, + 53 + ], + [ + 57, + 56, + 55 + ], + [ + 58, + 59, + 55 + ], + [ + 55, + 54, + 58 + ], + [ + 60, + 61, + 62 + ], + [ + 63, + 58, + 54 + ], + [ + 63, + 60, + 89 + ], + [ + 60, + 63, + 54 + ], + [ + 60, + 54, + 61 + ], + [ + 88, + 61, + 53 + ], + [ + 54, + 53, + 61 + ], + [ + 2, + 1, + 4 + ], + [ + 55, + 59, + 57 + ] + ] + }, + { + "color": [ + 22, + 22, + 22 + ], + "faces": [ + [ + 36, + 15, + 37 + ], + [ + 37, + 38, + 36 + ], + [ + 31, + 39, + 22 + ], + [ + 22, + 21, + 31 + ], + [ + 31, + 15, + 36 + ], + [ + 36, + 39, + 31 + ], + [ + 75, + 69, + 26 + ], + [ + 26, + 80, + 75 + ], + [ + 75, + 80, + 38 + ], + [ + 38, + 37, + 75 + ], + [ + 38, + 80, + 39 + ], + [ + 39, + 36, + 38 + ], + [ + 39, + 80, + 26 + ], + [ + 26, + 22, + 39 + ] + ] + }, + { + "color": [ + 215, + 193, + 179 + ], + "faces": [ + [ + 21, + 20, + 24 + ], + [ + 24, + 31, + 21 + ], + [ + 69, + 71, + 70 + ], + [ + 71, + 69, + 75 + ] + ] + }, + { + "color": [ + 192, + 173, + 158 + ], + "faces": [ + [ + 19, + 20, + 21 + ], + [ + 21, + 22, + 19 + ], + [ + 20, + 19, + 23 + ], + [ + 23, + 24, + 20 + ], + [ + 23, + 25, + 24 + ], + [ + 19, + 22, + 26 + ], + [ + 26, + 27, + 19 + ], + [ + 23, + 28, + 29 + ], + [ + 23, + 29, + 30 + ], + [ + 25, + 23, + 30 + ], + [ + 29, + 51, + 52 + ], + [ + 52, + 30, + 29 + ], + [ + 27, + 26, + 69 + ], + [ + 69, + 70, + 27 + ], + [ + 70, + 71, + 72 + ], + [ + 72, + 27, + 70 + ], + [ + 72, + 71, + 73 + ], + [ + 51, + 74, + 72 + ], + [ + 52, + 51, + 72 + ], + [ + 73, + 52, + 72 + ], + [ + 19, + 27, + 74 + ], + [ + 74, + 28, + 19 + ], + [ + 51, + 29, + 28 + ], + [ + 28, + 74, + 51 + ], + [ + 74, + 27, + 72 + ], + [ + 28, + 23, + 19 + ] + ] + }, + { + "color": [ + 205, + 97, + 22 + ], + "faces": [ + [ + 24, + 34, + 18 + ], + [ + 16, + 13, + 12 + ], + [ + 12, + 17, + 16 + ], + [ + 13, + 16, + 11 + ], + [ + 71, + 68, + 76 + ], + [ + 40, + 67, + 66 + ], + [ + 66, + 65, + 40 + ], + [ + 65, + 64, + 40 + ] + ] + }, + { + "color": [ + 35, + 52, + 71 + ], + "faces": [ + [ + 11, + 12, + 13 + ], + [ + 64, + 65, + 66 + ] + ] + }, + { + "color": [ + 228, + 117, + 31 + ], + "faces": [ + [ + 14, + 15, + 11 + ], + [ + 11, + 16, + 14 + ], + [ + 17, + 12, + 18 + ], + [ + 41, + 64, + 37 + ], + [ + 67, + 68, + 66 + ] + ] + }, + { + "color": [ + 226, + 118, + 27 + ], + "faces": [ + [ + 35, + 4, + 42 + ], + [ + 4, + 1, + 42 + ], + [ + 42, + 43, + 44 + ], + [ + 44, + 35, + 42 + ], + [ + 45, + 43, + 42 + ], + [ + 42, + 10, + 45 + ], + [ + 30, + 32, + 24 + ], + [ + 24, + 25, + 30 + ], + [ + 30, + 33, + 32 + ], + [ + 33, + 30, + 10 + ], + [ + 44, + 43, + 46 + ], + [ + 43, + 45, + 47 + ], + [ + 47, + 46, + 43 + ], + [ + 48, + 47, + 45 + ], + [ + 45, + 30, + 48 + ], + [ + 30, + 45, + 10 + ], + [ + 49, + 42, + 0 + ], + [ + 8, + 7, + 42 + ], + [ + 50, + 42, + 7 + ], + [ + 50, + 10, + 42 + ], + [ + 1, + 0, + 42 + ], + [ + 42, + 9, + 8 + ], + [ + 42, + 49, + 9 + ], + [ + 64, + 41, + 40 + ], + [ + 57, + 59, + 79 + ], + [ + 79, + 81, + 57 + ], + [ + 57, + 81, + 56 + ], + [ + 82, + 79, + 35 + ], + [ + 35, + 44, + 82 + ], + [ + 81, + 79, + 82 + ], + [ + 82, + 83, + 81 + ], + [ + 84, + 63, + 81 + ], + [ + 81, + 83, + 84 + ], + [ + 44, + 46, + 85 + ], + [ + 85, + 82, + 44 + ], + [ + 52, + 73, + 71 + ], + [ + 71, + 78, + 52 + ], + [ + 52, + 78, + 77 + ], + [ + 77, + 63, + 52 + ], + [ + 82, + 85, + 83 + ], + [ + 83, + 85, + 86 + ], + [ + 86, + 84, + 83 + ], + [ + 87, + 52, + 84 + ], + [ + 84, + 86, + 87 + ], + [ + 52, + 63, + 84 + ], + [ + 88, + 53, + 81 + ], + [ + 62, + 81, + 60 + ], + [ + 89, + 60, + 81 + ], + [ + 89, + 81, + 63 + ], + [ + 56, + 81, + 53 + ], + [ + 81, + 62, + 61 + ], + [ + 81, + 61, + 88 + ], + [ + 48, + 87, + 86 + ], + [ + 86, + 47, + 48 + ], + [ + 47, + 86, + 85 + ], + [ + 85, + 46, + 47 + ], + [ + 48, + 30, + 52 + ], + [ + 52, + 87, + 48 + ] + ] + } + ] +} + +},{}],4:[function(require,module,exports){ +const foxJson = require('./fox.json') const { calculateSizingOptions, createLogoViewer, @@ -1487,20 +2916,15 @@ const { module.exports = createLogo function createLogo (options = {}) { - if (!options.meshJson) { - throw new Error('The meshJson parameter is required') - } - const cameraDistance = options.cameraDistance || 400 const { height, width } = calculateSizingOptions(options) - const modelJson = options.meshJson const container = createNode('svg') setAttribute(container, 'width', `${width}px`) setAttribute(container, 'height', `${height}px`) document.body.appendChild(container) - const modelObj = loadModelFromJson(modelJson) + const modelObj = loadModelFromJson(options.meshJson || foxJson) const renderFox = createModelRenderer(container, cameraDistance, modelObj) const renderScene = (lookCurrent, slowDrift) => { const rect = container.getBoundingClientRect() @@ -1510,7 +2934,7 @@ function createLogo (options = {}) { return createLogoViewer(container, renderScene, { cameraDistance, ...options }) } -},{"./util.js":13}],4:[function(require,module,exports){ +},{"./fox.json":3,"./util.js":14}],5:[function(require,module,exports){ 'use strict'; var deselectCurrent = require('toggle-selection'); @@ -1590,7 +3014,7 @@ function copy(text, options) { module.exports = copy; -},{"toggle-selection":12}],5:[function(require,module,exports){ +},{"toggle-selection":13}],6:[function(require,module,exports){ module.exports = identity; /** @@ -1618,7 +3042,7 @@ function identity(out) { out[15] = 1; return out; }; -},{}],6:[function(require,module,exports){ +},{}],7:[function(require,module,exports){ module.exports = invert; /** @@ -1674,7 +3098,7 @@ function invert(out, a) { return out; }; -},{}],7:[function(require,module,exports){ +},{}],8:[function(require,module,exports){ var identity = require('./identity'); module.exports = lookAt; @@ -1765,7 +3189,7 @@ function lookAt(out, eye, center, up) { return out; }; -},{"./identity":5}],8:[function(require,module,exports){ +},{"./identity":6}],9:[function(require,module,exports){ module.exports = multiply; /** @@ -1808,7 +3232,7 @@ function multiply(out, a, b) { out[15] = b0*a03 + b1*a13 + b2*a23 + b3*a33; return out; }; -},{}],9:[function(require,module,exports){ +},{}],10:[function(require,module,exports){ module.exports = perspective; /** @@ -1842,7 +3266,7 @@ function perspective(out, fovy, aspect, near, far) { out[15] = 0; return out; }; -},{}],10:[function(require,module,exports){ +},{}],11:[function(require,module,exports){ module.exports = rotate; /** @@ -1907,7 +3331,7 @@ function rotate(out, a, rad, axis) { } return out; }; -},{}],11:[function(require,module,exports){ +},{}],12:[function(require,module,exports){ module.exports = transformMat4; /** @@ -1928,7 +3352,7 @@ function transformMat4(out, a, m) { out[2] = (m[2] * x + m[6] * y + m[10] * z + m[14]) / w return out } -},{}],12:[function(require,module,exports){ +},{}],13:[function(require,module,exports){ module.exports = function () { var selection = document.getSelection(); @@ -1969,7 +3393,7 @@ module.exports = function () { }; }; -},{}],13:[function(require,module,exports){ +},{}],14:[function(require,module,exports){ const perspective = require('gl-mat4/perspective') const multiply = require('gl-mat4/multiply') const lookAt = require('gl-mat4/lookAt') @@ -2386,4 +3810,4 @@ function Polygon (svg, indices) { this.zIndex = 0 } -},{"gl-mat4/invert":6,"gl-mat4/lookAt":7,"gl-mat4/multiply":8,"gl-mat4/perspective":9,"gl-mat4/rotate":10,"gl-vec3/transformMat4":11}]},{},[2]); +},{"gl-mat4/invert":7,"gl-mat4/lookAt":8,"gl-mat4/multiply":9,"gl-mat4/perspective":10,"gl-mat4/rotate":11,"gl-vec3/transformMat4":12}]},{},[2]); diff --git a/docs/distort/bundle.js b/docs/distort/bundle.js index 18abc78b..65a797d0 100644 --- a/docs/distort/bundle.js +++ b/docs/distort/bundle.js @@ -15,7 +15,6 @@ createDistortedLogo({ followMouse: true, followMotion: true, lazyRender: false, - meshJson: foxJson, }) function createDistortedLogo (options) { diff --git a/docs/gradient/bundle.js b/docs/gradient/bundle.js index cc76815b..a4f8b7ba 100644 --- a/docs/gradient/bundle.js +++ b/docs/gradient/bundle.js @@ -24,7 +24,6 @@ createGradientLogo({ height: 0.4, followMouse: true, followMotion: true, - meshJson: foxJson, }) function createGradientLogo (options) { diff --git a/docs/normal/bundle.js b/docs/normal/bundle.js index 8928d67e..9f1b9700 100644 --- a/docs/normal/bundle.js +++ b/docs/normal/bundle.js @@ -2,7 +2,6 @@ const copy = require('copy-to-clipboard') const createViewer = require('..') const { svgElementToSvgImageContent } = require('../util') -const foxJson = require('../fox.json') document.addEventListener('keypress', function (event) { if (event.keyCode === 99) { // the c key @@ -17,10 +16,9 @@ createViewer({ height: 0.4, followMouse: true, followMotion: true, - meshJson: foxJson, }) -},{"..":3,"../fox.json":2,"../util":13,"copy-to-clipboard":4}],2:[function(require,module,exports){ +},{"..":3,"../util":13,"copy-to-clipboard":4}],2:[function(require,module,exports){ module.exports={ "positions": [ [ @@ -1449,6 +1447,7 @@ module.exports={ } },{}],3:[function(require,module,exports){ +const foxJson = require('./fox.json') const { calculateSizingOptions, createLogoViewer, @@ -1461,20 +1460,15 @@ const { module.exports = createLogo function createLogo (options = {}) { - if (!options.meshJson) { - throw new Error('The meshJson parameter is required') - } - const cameraDistance = options.cameraDistance || 400 const { height, width } = calculateSizingOptions(options) - const modelJson = options.meshJson const container = createNode('svg') setAttribute(container, 'width', `${width}px`) setAttribute(container, 'height', `${height}px`) document.body.appendChild(container) - const modelObj = loadModelFromJson(modelJson) + const modelObj = loadModelFromJson(options.meshJson || foxJson) const renderFox = createModelRenderer(container, cameraDistance, modelObj) const renderScene = (lookCurrent, slowDrift) => { const rect = container.getBoundingClientRect() @@ -1484,7 +1478,7 @@ function createLogo (options = {}) { return createLogoViewer(container, renderScene, { cameraDistance, ...options }) } -},{"./util.js":13}],4:[function(require,module,exports){ +},{"./fox.json":2,"./util.js":13}],4:[function(require,module,exports){ 'use strict'; var deselectCurrent = require('toggle-selection'); diff --git a/docs/recolor/bundle.js b/docs/recolor/bundle.js index 30721a67..803d445a 100644 --- a/docs/recolor/bundle.js +++ b/docs/recolor/bundle.js @@ -55,7 +55,6 @@ const viewer = createRecolorLogo({ height: 0.4, followMouse: true, followMotion: true, - meshJson: foxJson, }) const foxDiv = document.querySelector('body div.fox') diff --git a/example/distort.js b/example/distort.js index a2f87c84..8c6dfc73 100644 --- a/example/distort.js +++ b/example/distort.js @@ -14,7 +14,6 @@ createDistortedLogo({ followMouse: true, followMotion: true, lazyRender: false, - meshJson: foxJson, }) function createDistortedLogo (options) { diff --git a/example/gradient.js b/example/gradient.js index 30b86b63..6cdfbd5d 100644 --- a/example/gradient.js +++ b/example/gradient.js @@ -23,7 +23,6 @@ createGradientLogo({ height: 0.4, followMouse: true, followMotion: true, - meshJson: foxJson, }) function createGradientLogo (options) { diff --git a/example/normal.js b/example/normal.js index f12a08ed..ae13e57b 100644 --- a/example/normal.js +++ b/example/normal.js @@ -1,7 +1,6 @@ const copy = require('copy-to-clipboard') const createViewer = require('..') const { svgElementToSvgImageContent } = require('../util') -const foxJson = require('../fox.json') document.addEventListener('keypress', function (event) { if (event.keyCode === 99) { // the c key @@ -16,5 +15,4 @@ createViewer({ height: 0.4, followMouse: true, followMotion: true, - meshJson: foxJson, }) diff --git a/example/recolor.js b/example/recolor.js index 9955d23c..5d17c240 100644 --- a/example/recolor.js +++ b/example/recolor.js @@ -54,7 +54,6 @@ const viewer = createRecolorLogo({ height: 0.4, followMouse: true, followMotion: true, - meshJson: foxJson, }) const foxDiv = document.querySelector('body div.fox') diff --git a/index.js b/index.js index 02fa62a3..082f0678 100644 --- a/index.js +++ b/index.js @@ -1,3 +1,4 @@ +const foxJson = require('./fox.json') const { calculateSizingOptions, createLogoViewer, @@ -10,10 +11,6 @@ const { module.exports = createLogo function createLogo (options = {}) { - if (!options.meshJson) { - throw new Error('The meshJson parameter is required') - } - const cameraDistance = options.cameraDistance || 400 const { height, width } = calculateSizingOptions(options) @@ -22,7 +19,7 @@ function createLogo (options = {}) { setAttribute(container, 'height', `${height}px`) document.body.appendChild(container) - const modelObj = loadModelFromJson(options.meshJson) + const modelObj = loadModelFromJson(options.meshJson || foxJson) const renderFox = createModelRenderer(container, cameraDistance, modelObj) const renderScene = (lookCurrent, slowDrift) => { const rect = container.getBoundingClientRect()