├── MewChooFlock ├── Boid.pde ├── Flock.pde ├── MewChooFlock.pde └── data │ ├── mewchoo.mtl │ └── mewchoo.obj └── README.md /MewChooFlock/Boid.pde: -------------------------------------------------------------------------------- 1 | // The Boid class 2 | 3 | class Boid { 4 | 5 | PVector position; 6 | PVector velocity; 7 | PVector acceleration; 8 | float r; 9 | float maxforce; // Maximum steering force 10 | float maxspeed; // Maximum speed 11 | 12 | Boid(float x, float y) { 13 | acceleration = new PVector(0, 0); 14 | 15 | // This is a new PVector method not yet implemented in JS 16 | // velocity = PVector.random2D(); 17 | 18 | // Leaving the code temporarily this way so that this example runs in JS 19 | float angle = random(TWO_PI); 20 | velocity = PVector.random3D();//new PVector(cos(angle), sin(angle)); 21 | 22 | position = new PVector(x, y); 23 | r = 2.0; 24 | maxspeed = 2; 25 | maxforce = 0.03; 26 | } 27 | 28 | void run(ArrayList boids, boolean first) { 29 | flock(boids); 30 | update(); 31 | borders(); 32 | //if (!first) { 33 | render(); 34 | //} 35 | } 36 | 37 | void applyForce(PVector force) { 38 | // We could add mass here if we want A = F / M 39 | acceleration.add(force); 40 | } 41 | 42 | // We accumulate a new acceleration each time based on three rules 43 | void flock(ArrayList boids) { 44 | PVector sep = separate(boids); // Separation 45 | PVector ali = align(boids); // Alignment 46 | PVector coh = cohesion(boids); // Cohesion 47 | // Arbitrarily weight these forces 48 | sep.mult(5.0); 49 | ali.mult(1.0); 50 | coh.mult(1.0); 51 | // Add the force vectors to acceleration 52 | applyForce(sep); 53 | applyForce(ali); 54 | applyForce(coh); 55 | } 56 | 57 | // Method to update position 58 | void update() { 59 | // Update velocity 60 | velocity.add(acceleration); 61 | // Limit speed 62 | velocity.limit(maxspeed); 63 | position.add(velocity); 64 | // Reset accelertion to 0 each cycle 65 | acceleration.mult(0); 66 | } 67 | 68 | // A method that calculates and applies a steering force towards a target 69 | // STEER = DESIRED MINUS VELOCITY 70 | PVector seek(PVector target) { 71 | PVector desired = PVector.sub(target, position); // A vector pointing from the position to the target 72 | // Scale to maximum speed 73 | desired.normalize(); 74 | desired.mult(maxspeed); 75 | 76 | // Above two lines of code below could be condensed with new PVector setMag() method 77 | // Not using this method until Processing.js catches up 78 | // desired.setMag(maxspeed); 79 | 80 | // Steering = Desired minus Velocity 81 | PVector steer = PVector.sub(desired, velocity); 82 | steer.limit(maxforce); // Limit to maximum steering force 83 | return steer; 84 | } 85 | 86 | void render() { 87 | // Draw a triangle rotated in the direction of velocity 88 | float theta = velocity.heading2D() + radians(90); 89 | // heading2D() above is now heading() but leaving old syntax until Processing.js catches up 90 | 91 | fill(200, 100); 92 | stroke(255); 93 | pushMatrix(); 94 | translate(position.x, position.y, position.z); 95 | translate(0, 0, 5); 96 | rotateX(PI/2); 97 | //rotateX(PI); 98 | rotateY(theta); 99 | scale(0.05); 100 | shape(mewChoo); 101 | 102 | 103 | //beginShape(TRIANGLES); 104 | //vertex(0, -r*2); 105 | //vertex(-r, r*2); 106 | //vertex(r, r*2); 107 | //endShape(); 108 | popMatrix(); 109 | } 110 | 111 | // Wraparound 112 | void borders() { 113 | if (position.x < -dim) position.x = dim; 114 | if (position.y < -dim) position.y = dim; 115 | if (position.z < -dim) position.z = dim; 116 | if (position.x > dim) position.x = -dim; 117 | if (position.y > dim) position.y = -dim; 118 | if (position.z > dim) position.z = -dim; 119 | } 120 | //void borders() { 121 | // if (position.x < -dim) { 122 | // velocity.x *= -1; 123 | // position.x = -dim; 124 | // } else if (position.x > dim) { 125 | // velocity.x *= -1; 126 | // position.x = dim; 127 | // } 128 | 129 | // if (position.y < -dim) { 130 | // velocity.y *= -1; 131 | // position.y = -dim; 132 | // } else if (position.y > dim) { 133 | // velocity.y *= -1; 134 | // position.y = dim; 135 | // } 136 | 137 | 138 | // if (position.z < -dim) { 139 | // velocity.z *= -1; 140 | // position.z = -dim; 141 | // } else if (position.z > dim) { 142 | // velocity.z *= -1; 143 | // position.z = dim; 144 | // } 145 | //} 146 | 147 | 148 | 149 | 150 | // Separation 151 | // Method checks for nearby boids and steers away 152 | PVector separate (ArrayList boids) { 153 | float desiredseparation = 0.1*dim; 154 | PVector steer = new PVector(0, 0, 0); 155 | int count = 0; 156 | // For every boid in the system, check if it's too close 157 | for (Boid other : boids) { 158 | float d = PVector.dist(position, other.position); 159 | // If the distance is greater than 0 and less than an arbitrary amount (0 when you are yourself) 160 | if ((d > 0) && (d < desiredseparation)) { 161 | // Calculate vector pointing away from neighbor 162 | PVector diff = PVector.sub(position, other.position); 163 | diff.normalize(); 164 | diff.div(d); // Weight by distance 165 | steer.add(diff); 166 | count++; // Keep track of how many 167 | } 168 | } 169 | // Average -- divide by how many 170 | if (count > 0) { 171 | steer.div((float)count); 172 | } 173 | 174 | // As long as the vector is greater than 0 175 | if (steer.mag() > 0) { 176 | // First two lines of code below could be condensed with new PVector setMag() method 177 | // Not using this method until Processing.js catches up 178 | // steer.setMag(maxspeed); 179 | 180 | // Implement Reynolds: Steering = Desired - Velocity 181 | steer.normalize(); 182 | steer.mult(maxspeed); 183 | steer.sub(velocity); 184 | steer.limit(maxforce); 185 | } 186 | return steer; 187 | } 188 | 189 | // Alignment 190 | // For every nearby boid in the system, calculate the average velocity 191 | PVector align (ArrayList boids) { 192 | float neighbordist = 0.2*dim; 193 | PVector sum = new PVector(0, 0); 194 | int count = 0; 195 | for (Boid other : boids) { 196 | float d = PVector.dist(position, other.position); 197 | if ((d > 0) && (d < neighbordist)) { 198 | sum.add(other.velocity); 199 | count++; 200 | } 201 | } 202 | if (count > 0) { 203 | sum.div((float)count); 204 | // First two lines of code below could be condensed with new PVector setMag() method 205 | // Not using this method until Processing.js catches up 206 | // sum.setMag(maxspeed); 207 | 208 | // Implement Reynolds: Steering = Desired - Velocity 209 | sum.normalize(); 210 | sum.mult(maxspeed); 211 | PVector steer = PVector.sub(sum, velocity); 212 | steer.limit(maxforce); 213 | return steer; 214 | } else { 215 | return new PVector(0, 0); 216 | } 217 | } 218 | 219 | // Cohesion 220 | // For the average position (i.e. center) of all nearby boids, calculate steering vector towards that position 221 | PVector cohesion (ArrayList boids) { 222 | float neighbordist = 0.2*dim; 223 | PVector sum = new PVector(0, 0); // Start with empty vector to accumulate all positions 224 | int count = 0; 225 | for (Boid other : boids) { 226 | float d = PVector.dist(position, other.position); 227 | if ((d > 0) && (d < neighbordist)) { 228 | sum.add(other.position); // Add position 229 | count++; 230 | } 231 | } 232 | if (count > 0) { 233 | sum.div(count); 234 | return seek(sum); // Steer towards the position 235 | } else { 236 | return new PVector(0, 0); 237 | } 238 | } 239 | } 240 | -------------------------------------------------------------------------------- /MewChooFlock/Flock.pde: -------------------------------------------------------------------------------- 1 | // The Flock (a list of Boid objects) 2 | 3 | class Flock { 4 | ArrayList boids; // An ArrayList for all the boids 5 | 6 | Flock() { 7 | boids = new ArrayList(); // Initialize the ArrayList 8 | } 9 | 10 | void run() { 11 | boolean first = true; 12 | for (Boid b : boids) { 13 | b.run(boids, first); // Passing the entire list of boids to each boid individually 14 | first = false; 15 | } 16 | } 17 | 18 | void addBoid(Boid b) { 19 | boids.add(b); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /MewChooFlock/MewChooFlock.pde: -------------------------------------------------------------------------------- 1 | /** 2 | * Flocking 3 | * by Daniel Shiffman. 4 | * 5 | * An implementation of Craig Reynold's Boids program to simulate 6 | * the flocking behavior of birds. Each boid steers itself based on 7 | * rules of avoidance, alignment, and coherence. 8 | * 9 | * Click the mouse to add a new boid. 10 | */ 11 | import peasy.PeasyCam; 12 | 13 | Flock flock; 14 | PeasyCam cam; 15 | 16 | float dim = 500; 17 | PShape mewChoo; 18 | float angle = 0; 19 | 20 | void setup() { 21 | //size(1280, 720, P3D); 22 | fullScreen(P3D); 23 | //cam = new PeasyCam(this, 200); 24 | mewChoo = loadShape("mewchoo.obj"); 25 | //mewChoo.fill(255, 0, 255); 26 | flock = new Flock(); 27 | // Add an initial set of boids into the system 28 | for (int i = 0; i < 500; i++) { 29 | flock.addBoid(new Boid(0, 0)); 30 | } 31 | } 32 | 33 | PVector lerpV = new PVector(); 34 | 35 | void draw() { 36 | background(45, 197, 244); 37 | lights(); 38 | ambientLight(240, 99, 164); 39 | 40 | Boid follow = flock.boids.get(0); 41 | //translate(width/2,height/2); 42 | 43 | PVector pos = follow.position.copy(); 44 | lerpV.lerp(follow.velocity, 0.01); 45 | PVector lookAt = PVector.sub(follow.position, PVector.mult(lerpV,250)); 46 | 47 | //translate(-follow.position.x, -follow.position.y, -follow.position.z); 48 | camera( 49 | lookAt.x, lookAt.y, lookAt.z, 50 | pos.x, pos.y, pos.z, 51 | 0, 0, -1); 52 | 53 | 54 | 55 | //translate(0, 0, -dim*4); 56 | //translate(0,0, -dim*2); 57 | // rotateY(angle); 58 | //rotateX(PI/4); 59 | stroke(252, 238, 33); 60 | strokeWeight(16); 61 | noFill(); 62 | //rect(0,0,dim*2,dim*2); 63 | //fill(252, 238, 33, 50); 64 | box(dim*2); 65 | 66 | flock.run(); 67 | angle+=0.001; 68 | } 69 | 70 | // Add a new boid into the System 71 | void mousePressed() { 72 | flock.addBoid(new Boid(mouseX, mouseY)); 73 | } 74 | -------------------------------------------------------------------------------- /MewChooFlock/data/mewchoo.mtl: -------------------------------------------------------------------------------- 1 | # Blender MTL File: 'codingtrainmodel.blend' 2 | # Material Count: 1 3 | 4 | newmtl None 5 | Ns 500 6 | Ka 0.8 0.8 0.8 7 | Kd 0.8 0.8 0.8 8 | Ks 0.8 0.8 0.8 9 | d 1 10 | illum 2 11 | -------------------------------------------------------------------------------- /MewChooFlock/data/mewchoo.obj: -------------------------------------------------------------------------------- 1 | # Blender v2.83.2 OBJ File: 'codingtrainmodel.blend' 2 | # www.blender.org 3 | mtllib mewchoo.mtl 4 | o Body_Plane 5 | v 24.977650 -181.496536 65.178909 6 | v 81.604179 -142.773560 66.944794 7 | v -3.469315 -8.183455 12.176638 8 | v 84.241928 -102.229584 62.797295 9 | v -3.564858 -201.119202 2.466501 10 | v 57.757103 -68.113091 64.599983 11 | v -3.469315 -8.183455 12.176638 12 | v 39.100163 -35.930080 66.280060 13 | v -3.564858 -201.119202 2.466501 14 | v 27.314137 -14.473094 67.398087 15 | v 104.857063 -158.153854 4.278479 16 | v 40.165112 -187.230728 -51.722485 17 | v 100.300011 -109.377243 6.748133 18 | v 98.217506 -148.313812 -53.742065 19 | v 31.692322 -193.492645 7.371853 20 | v 94.203529 -105.350174 -51.566734 21 | v 70.231796 -70.644821 8.794727 22 | v 67.718704 -71.233665 -49.764042 23 | v 49.050591 -34.107468 10.702161 24 | v 49.061768 -39.050652 -48.083965 25 | v 35.669926 -9.747367 11.971456 26 | v 37.275742 -17.593666 -46.965939 27 | v -13.896569 -180.618546 65.348755 28 | v 1.711607 -151.245926 55.961601 29 | v 0.639342 -111.634598 57.958702 30 | v 1.852105 -78.854225 59.604618 31 | v -1.411747 -47.003273 61.218224 32 | v 1.716010 -21.718914 62.480675 33 | v -14.237527 -175.309723 -40.131622 34 | v 1.370649 -145.937134 -49.518780 35 | v 0.298384 -106.325790 -47.521679 36 | v 1.511148 -73.545403 -45.875763 37 | v -1.752705 -41.694450 -44.262157 38 | v 1.375052 -16.410091 -42.999706 39 | v 1.711607 -151.245926 55.961601 40 | v 0.639342 -111.634598 57.958702 41 | v 1.852108 -78.854225 59.604618 42 | v -1.411746 -47.003273 61.218224 43 | v 1.716011 -21.718914 62.480675 44 | v 1.370649 -145.937134 -49.518780 45 | v 0.298384 -106.325790 -47.521679 46 | v 1.511150 -73.545403 -45.875763 47 | v -1.752704 -41.694450 -44.262157 48 | v 1.375054 -16.410091 -42.999706 49 | v -13.896569 -180.618546 65.348755 50 | v -14.237527 -175.309723 -40.131622 51 | v 118.974617 98.739182 103.043892 52 | v 86.252586 167.227615 74.873871 53 | v 130.941345 59.023796 99.831100 54 | v 131.045120 27.713940 107.654663 55 | v 110.533295 -1.328760 107.434052 56 | v 71.710960 -9.414449 91.877716 57 | v 62.884178 190.554733 34.999092 58 | v 118.223450 110.436424 -129.341156 59 | v 85.643387 174.457062 -115.436966 60 | v 130.243423 74.406166 -112.393814 61 | v 130.414368 40.921398 -84.705223 62 | v 109.931656 27.224913 -63.003662 63 | v 71.208229 5.185263 -58.112949 64 | v 62.478554 193.485519 -93.254494 65 | v 11.864152 92.536919 103.077911 66 | v 10.414765 161.104721 74.810844 67 | v 13.532016 55.562889 100.036430 68 | v 13.635778 24.253035 107.859993 69 | v 12.507727 0.794596 107.857826 70 | v 23.179697 -12.305161 91.889099 71 | v 12.318235 186.887131 36.110275 72 | v 11.112982 104.234154 -129.307083 73 | v 9.805561 168.334167 -115.500031 74 | v 12.834082 70.945259 -112.188484 75 | v 13.005039 37.460514 -84.499893 76 | v 16.663910 26.197464 -62.753853 77 | v 22.676966 2.294562 -58.101562 78 | v 15.099921 190.422089 -91.098305 79 | v 65.419395 95.638046 103.060921 80 | v 72.236702 57.293354 99.933762 81 | v 72.340462 25.983488 107.757332 82 | v 63.899414 -1.842483 107.558937 83 | v 47.445332 -10.859807 91.883453 84 | v 64.668228 107.335289 -129.324127 85 | v 71.538765 72.675720 -112.291100 86 | v 71.709724 39.190956 -84.602554 87 | v 63.297783 26.711187 -62.878738 88 | v 46.942596 3.739915 -58.107216 89 | v 48.333679 164.166153 74.842407 90 | v 45.743488 189.325150 34.992653 91 | v 47.724476 171.395615 -115.468475 92 | v 45.337864 192.255890 -93.261009 93 | v 62.623936 211.535217 -31.670208 94 | v 130.527390 75.626945 -19.932379 95 | v 130.600845 44.789043 -21.484859 96 | v 85.935921 176.672882 -19.400501 97 | v 118.581985 104.853294 -18.422672 98 | v 110.099182 9.945283 -23.172491 99 | v 71.337273 -3.595347 -23.728785 100 | v 22.806005 -6.486048 -23.717400 101 | v 0.271875 204.745300 -29.418095 102 | v 17.412558 205.974884 -29.411617 103 | v 47.071636 -5.040695 -23.723047 104 | v -23.650747 -181.619980 65.329887 105 | v -80.461060 -143.184937 67.447952 106 | v 3.586382 -8.165546 12.154732 107 | v -83.330299 -102.654922 63.317551 108 | v 4.601058 -201.098480 2.441149 109 | v -57.008324 -68.404396 64.956291 110 | v 3.586382 -8.165546 12.154732 111 | v -38.504929 -36.127064 66.520996 112 | v 4.601058 -201.098480 2.441149 113 | v -26.821266 -14.610504 67.566162 114 | v -104.024246 -158.684036 4.926988 115 | v -39.534485 -187.433029 -51.475044 116 | v -99.699615 -109.884903 7.369067 117 | v -97.795120 -148.811340 -53.133511 118 | v -30.663246 -193.650909 7.565447 119 | v -93.985870 -105.827850 -50.982464 120 | v -69.816277 -71.000305 9.229531 121 | v -67.663879 -71.577309 -49.343723 122 | v -48.809380 -34.355865 11.005984 123 | v -49.160480 -39.299965 -47.779015 124 | v -35.544930 -9.928129 12.192554 125 | v -37.476826 -17.783409 -46.733856 126 | v 15.218819 -180.544632 65.258362 127 | v -0.596251 -151.251785 55.968765 128 | v 0.287295 -111.635498 57.959797 129 | v -1.081618 -78.861671 59.613724 130 | v 2.030460 -46.994537 61.207539 131 | v -1.217713 -21.726360 62.489784 132 | v 14.877861 -175.235809 -40.222015 133 | v -0.937209 -145.942993 -49.511616 134 | v -0.053662 -106.326691 -47.520584 135 | v -1.422575 -73.552849 -45.866653 136 | v 1.689502 -41.685715 -44.272842 137 | v -1.558671 -16.417538 -42.990597 138 | v -0.596251 -151.251785 55.968765 139 | v 0.287295 -111.635498 57.959797 140 | v -1.081620 -78.861671 59.613724 141 | v 2.030458 -46.994537 61.207539 142 | v -1.217715 -21.726360 62.489784 143 | v -0.937209 -145.942993 -49.511616 144 | v -0.053662 -106.326691 -47.520584 145 | v -1.422578 -73.552849 -45.866653 146 | v 1.689500 -41.685715 -44.272842 147 | v -1.558672 -16.417538 -42.990597 148 | v 15.218819 -180.544632 65.258362 149 | v 14.877861 -175.235809 -40.222015 150 | v -118.832191 98.135559 103.782204 151 | v -86.633797 166.788773 75.410629 152 | v -130.616882 58.359894 100.643150 153 | v -130.513107 27.050037 108.466721 154 | v -109.855873 -1.888167 108.118286 155 | v -71.090340 -9.776917 92.321068 156 | v -63.632145 190.233597 35.391884 157 | v -119.583366 109.832802 -128.602844 158 | v -87.242996 174.018219 -114.900208 159 | v -131.314804 73.742256 -111.581757 160 | v -131.143860 40.257496 -83.893166 161 | v -110.457512 26.665506 -62.319427 162 | v -71.593071 4.822795 -57.669598 163 | v -64.037766 193.164383 -92.861702 164 | v -11.693467 92.477119 103.151047 165 | v -10.767722 161.050949 74.876610 166 | v -13.192466 55.495056 100.119400 167 | v -13.088703 24.185202 107.942963 168 | v -11.841616 0.732791 107.933426 169 | v -22.545895 -12.421225 92.031059 170 | v -13.042317 186.822769 36.189011 171 | v -12.444637 104.174355 -129.233948 172 | v -11.376926 168.280396 -115.434265 173 | v -13.890400 70.877419 -112.105515 174 | v -13.719442 37.392681 -84.416916 175 | v -17.185987 26.111546 -62.648758 176 | v -23.048626 2.178498 -57.959602 177 | v -16.631729 190.341553 -90.999786 178 | v -65.262833 95.306335 103.466652 179 | v -71.904663 56.927486 100.381271 180 | v -71.800903 25.617620 108.204842 181 | v -63.220116 -2.165146 107.953598 182 | v -46.818108 -11.099072 92.176109 183 | v -66.014000 107.003578 -128.918396 184 | v -72.602600 72.309845 -111.843590 185 | v -72.431641 38.825089 -84.155045 186 | v -63.821747 26.388525 -62.484074 187 | v -47.320843 3.500649 -57.814556 188 | v -48.700760 163.919846 75.143661 189 | v -46.485813 189.091049 35.278999 190 | v -49.309963 171.149307 -115.167213 191 | v -46.891438 192.021790 -92.974670 192 | v -63.892387 211.214081 -31.277416 193 | v -131.030838 74.963036 -19.120325 194 | v -130.957382 44.125141 -20.672806 195 | v -86.950462 176.234039 -18.863747 196 | v -119.224831 104.249672 -17.684361 197 | v -110.289986 9.385877 -22.488255 198 | v -71.464027 -3.957815 -23.285433 199 | v -22.919586 -6.602112 -23.575436 200 | v -1.493882 204.740814 -29.412613 201 | v -18.640215 205.883362 -29.299685 202 | v -47.191803 -5.279960 -23.430389 203 | vt 0.500000 0.000000 204 | vt 0.500000 1.000000 205 | vt 1.000000 1.000000 206 | vt 1.000000 0.000000 207 | vt 0.500000 1.000000 208 | vt 1.000000 1.000000 209 | vt 0.500000 1.000000 210 | vt 1.000000 1.000000 211 | vt 0.500000 1.000000 212 | vt 1.000000 1.000000 213 | vt 0.500000 1.000000 214 | vt 1.000000 1.000000 215 | vt 0.500000 0.000000 216 | vt 1.000000 0.000000 217 | vt 1.000000 1.000000 218 | vt 0.500000 1.000000 219 | vt 1.000000 1.000000 220 | vt 0.500000 1.000000 221 | vt 1.000000 1.000000 222 | vt 0.500000 1.000000 223 | vt 1.000000 1.000000 224 | vt 0.500000 1.000000 225 | vt 1.000000 1.000000 226 | vt 0.500000 1.000000 227 | vt 0.500000 0.000000 228 | vt 0.500000 0.000000 229 | vt 0.500000 0.000000 230 | vt 1.000000 0.000000 231 | vt 1.000000 1.000000 232 | vt 1.000000 1.000000 233 | vt 1.000000 1.000000 234 | vt 1.000000 1.000000 235 | vt 1.000000 1.000000 236 | vt 0.500000 0.000000 237 | vt 0.500000 1.000000 238 | vt 0.500711 1.000000 239 | vt 0.500000 1.000000 240 | vt 0.340519 1.000000 241 | vt 0.500000 1.000000 242 | vt 0.500000 1.000000 243 | vt 0.500711 1.000000 244 | vt 0.500000 1.000000 245 | vt 0.510683 1.000000 246 | vt 0.500000 1.000000 247 | vt 0.500000 1.000000 248 | vt 0.250000 0.500000 249 | vt 0.750000 0.000000 250 | vt 0.750000 1.000000 251 | vt 1.000000 1.000000 252 | vt 1.000000 0.000000 253 | vt 0.750000 1.000000 254 | vt 1.000000 1.000000 255 | vt 0.750000 0.000000 256 | vt 1.000000 0.000000 257 | vt 1.000000 1.000000 258 | vt 0.750000 1.000000 259 | vt 1.000000 1.000000 260 | vt 0.750000 1.000000 261 | vt 1.000000 0.000000 262 | vt 1.000000 0.000000 263 | vt 1.000000 0.000000 264 | vt 1.000000 0.000000 265 | vt 1.000000 0.000000 266 | vt 1.000000 1.000000 267 | vt 1.000000 1.000000 268 | vt 1.000000 0.000000 269 | vt 1.000000 0.000000 270 | vt 0.750000 0.000000 271 | vt 1.000000 0.000000 272 | vt 1.000000 0.000000 273 | vt 0.750000 0.000000 274 | vt 0.750000 1.000000 275 | vt 0.500000 1.000000 276 | vt 0.500000 1.000000 277 | vt 0.750000 0.000000 278 | vt 0.500000 0.000000 279 | vt 0.500000 0.000000 280 | vt 0.750000 0.000000 281 | vt 0.500000 0.000000 282 | vt 0.750000 0.000000 283 | vt 0.500000 0.000000 284 | vt 0.500000 0.000000 285 | vt 0.750000 0.000000 286 | vt 0.750000 0.000000 287 | vt 0.500000 0.000000 288 | vt 0.500000 0.000000 289 | vt 0.750000 0.000000 290 | vt 0.500000 0.000000 291 | vt 0.750000 0.000000 292 | vt 0.500000 0.000000 293 | vt 0.500000 0.000000 294 | vt 1.000000 0.000000 295 | vt 1.000000 0.000000 296 | vt 1.000000 0.000000 297 | vt 1.000000 0.000000 298 | vt 0.500000 0.000000 299 | vt 0.500000 1.000000 300 | vt 0.500000 1.000000 301 | vt 0.500000 1.000000 302 | vt 0.500000 0.000000 303 | vt 1.000000 0.000000 304 | vt 1.000000 1.000000 305 | vt 0.500000 1.000000 306 | vt 1.000000 1.000000 307 | vt 0.500000 1.000000 308 | vt 1.000000 1.000000 309 | vt 0.500000 1.000000 310 | vt 1.000000 1.000000 311 | vt 0.500000 1.000000 312 | vt 1.000000 1.000000 313 | vt 0.500000 1.000000 314 | vt 0.500000 0.000000 315 | vt 0.500000 1.000000 316 | vt 1.000000 1.000000 317 | vt 1.000000 0.000000 318 | vt 0.500000 1.000000 319 | vt 1.000000 1.000000 320 | vt 0.500000 1.000000 321 | vt 1.000000 1.000000 322 | vt 0.500000 1.000000 323 | vt 1.000000 1.000000 324 | vt 0.500000 1.000000 325 | vt 1.000000 1.000000 326 | vt 0.500000 0.000000 327 | vt 0.500000 0.000000 328 | vt 0.500000 0.000000 329 | vt 1.000000 0.000000 330 | vt 1.000000 1.000000 331 | vt 1.000000 1.000000 332 | vt 1.000000 1.000000 333 | vt 1.000000 1.000000 334 | vt 1.000000 1.000000 335 | vt 0.500000 0.000000 336 | vt 0.500000 1.000000 337 | vt 0.500711 1.000000 338 | vt 0.500000 1.000000 339 | vt 0.340519 1.000000 340 | vt 0.500000 1.000000 341 | vt 0.500000 1.000000 342 | vt 0.500711 1.000000 343 | vt 0.500000 1.000000 344 | vt 0.510683 1.000000 345 | vt 0.500000 1.000000 346 | vt 0.500000 1.000000 347 | vt 0.250000 0.500000 348 | vt 0.750000 0.000000 349 | vt 1.000000 0.000000 350 | vt 1.000000 1.000000 351 | vt 0.750000 1.000000 352 | vt 1.000000 1.000000 353 | vt 0.750000 1.000000 354 | vt 0.750000 0.000000 355 | vt 0.750000 1.000000 356 | vt 1.000000 1.000000 357 | vt 1.000000 0.000000 358 | vt 0.750000 1.000000 359 | vt 1.000000 1.000000 360 | vt 1.000000 0.000000 361 | vt 1.000000 0.000000 362 | vt 1.000000 0.000000 363 | vt 1.000000 0.000000 364 | vt 1.000000 0.000000 365 | vt 1.000000 1.000000 366 | vt 1.000000 1.000000 367 | vt 1.000000 0.000000 368 | vt 1.000000 0.000000 369 | vt 0.750000 0.000000 370 | vt 0.750000 0.000000 371 | vt 1.000000 0.000000 372 | vt 1.000000 0.000000 373 | vt 0.750000 1.000000 374 | vt 0.500000 1.000000 375 | vt 0.500000 1.000000 376 | vt 0.750000 0.000000 377 | vt 0.500000 0.000000 378 | vt 0.500000 0.000000 379 | vt 0.750000 0.000000 380 | vt 0.500000 0.000000 381 | vt 0.750000 0.000000 382 | vt 0.500000 0.000000 383 | vt 0.500000 0.000000 384 | vt 0.750000 0.000000 385 | vt 0.500000 0.000000 386 | vt 0.500000 0.000000 387 | vt 0.750000 0.000000 388 | vt 0.750000 0.000000 389 | vt 0.500000 0.000000 390 | vt 0.750000 0.000000 391 | vt 0.500000 0.000000 392 | vt 0.500000 0.000000 393 | vt 1.000000 0.000000 394 | vt 1.000000 0.000000 395 | vt 1.000000 0.000000 396 | vt 1.000000 0.000000 397 | vt 0.500000 0.000000 398 | vt 0.500000 1.000000 399 | vt 0.500000 1.000000 400 | vt 0.500000 1.000000 401 | vn 0.1023 -0.2171 -0.9708 402 | vn 0.0994 -0.0286 -0.9946 403 | vn 0.0595 0.0738 -0.9955 404 | vn 0.0854 0.0803 -0.9931 405 | vn 0.1287 0.0742 -0.9889 406 | vn 0.1084 0.0489 0.9929 407 | vn 0.0429 -0.0478 0.9979 408 | vn 0.0501 -0.0325 0.9982 409 | vn 0.0669 -0.0284 0.9974 410 | vn 0.0900 -0.0340 0.9954 411 | vn 0.0000 0.0000 1.0000 412 | vn -0.0703 0.9607 -0.2686 413 | vn -0.8749 -0.4827 0.0404 414 | vn -0.8634 -0.5027 0.0421 415 | vn 0.0679 0.9519 0.2987 416 | vn -0.7883 -0.6140 0.0400 417 | vn -0.8565 -0.4877 -0.1693 418 | vn -0.9905 -0.0974 0.0968 419 | vn -0.4861 0.8667 0.1116 420 | vn -0.0286 -0.9900 0.1378 421 | vn 0.0000 0.0518 -0.9987 422 | vn 0.0000 0.0608 -0.9982 423 | vn 0.0000 0.0491 -0.9988 424 | vn 0.0000 -0.0541 0.9985 425 | vn 0.0000 -0.0418 0.9991 426 | vn 0.0000 -0.0562 0.9984 427 | vn -0.8674 -0.4675 -0.1706 428 | vn -0.7850 -0.6015 -0.1482 429 | vn -0.9505 -0.0262 -0.3098 430 | vn -0.4743 0.8256 -0.3056 431 | vn 0.0982 -0.9811 -0.1665 432 | vn 0.0000 0.9701 0.2425 433 | vn 0.0000 0.9975 -0.0710 434 | vn 0.0252 -0.3726 -0.9277 435 | vn 0.0661 -0.8428 -0.5341 436 | vn 0.0138 -0.2067 0.9783 437 | vn 0.0561 -0.7264 0.6850 438 | vn -1.0000 -0.0025 0.0031 439 | vn -0.9016 -0.4325 -0.0042 440 | vn -0.7465 -0.6597 0.0869 441 | vn -0.7427 0.6637 0.0889 442 | vn -0.0576 0.9672 0.2472 443 | vn -0.9383 -0.3457 -0.0044 444 | vn -0.3828 0.8712 0.3074 445 | vn 0.0735 -0.9677 0.2412 446 | vn -0.0037 0.1979 0.9802 447 | vn -0.0177 0.8783 0.4778 448 | vn -0.0174 0.6371 0.7706 449 | vn -0.0183 0.4472 0.8943 450 | vn 0.0106 0.8187 -0.5741 451 | vn -0.0036 0.0046 -1.0000 452 | vn 0.0054 -0.2424 -0.9702 453 | vn -0.0046 0.0811 -0.9967 454 | vn -0.0045 0.0799 -0.9968 455 | vn -0.0023 0.0086 -1.0000 456 | vn -0.0256 0.8952 -0.4450 457 | vn -0.0175 0.4294 0.9030 458 | vn -0.0173 0.8613 0.5077 459 | vn -0.0041 0.2147 0.9767 460 | vn 0.1139 -0.9568 0.2675 461 | vn 0.0739 -0.7357 0.6733 462 | vn 0.0139 -0.2091 0.9778 463 | vn 0.0563 -0.8375 -0.5436 464 | vn 0.0256 -0.3779 -0.9255 465 | vn -0.0594 0.9970 0.0504 466 | vn 0.0930 -0.9514 -0.2934 467 | vn 0.0636 -0.9595 -0.2746 468 | vn -0.2809 0.9574 0.0674 469 | vn -0.9450 -0.3259 -0.0275 470 | vn -0.8408 0.5379 0.0616 471 | vn -0.7148 -0.6876 -0.1274 472 | vn -0.9039 -0.4269 -0.0278 473 | vn -0.1072 -0.2177 -0.9701 474 | vn -0.1054 -0.0291 -0.9940 475 | vn -0.0661 0.0735 -0.9951 476 | vn -0.0920 0.0799 -0.9926 477 | vn -0.1352 0.0735 -0.9881 478 | vn -0.1025 0.0483 0.9936 479 | vn -0.0365 -0.0480 0.9982 480 | vn -0.0438 -0.0328 0.9985 481 | vn -0.0606 -0.0287 0.9978 482 | vn -0.0836 -0.0345 0.9959 483 | vn 0.0638 0.9610 -0.2690 484 | vn 0.8775 -0.4782 0.0350 485 | vn 0.8662 -0.4983 0.0367 486 | vn -0.0708 0.9516 0.2992 487 | vn 0.7916 -0.6100 0.0351 488 | vn 0.8579 -0.4833 -0.1747 489 | vn 0.9916 -0.0924 0.0907 490 | vn 0.4824 0.8692 0.1085 491 | vn 0.0345 -0.9899 0.1376 492 | vn 0.0000 0.0480 -0.9988 493 | vn 0.0000 0.0544 -0.9985 494 | vn 0.0000 0.0351 -0.9994 495 | vn 0.0000 -0.0491 0.9988 496 | vn 0.0000 -0.0467 0.9989 497 | vn 0.0000 -0.0524 0.9986 498 | vn 0.8686 -0.4631 -0.1760 499 | vn 0.7871 -0.5976 -0.1531 500 | vn 0.9486 -0.0214 -0.3156 501 | vn 0.4682 0.8280 -0.3085 502 | vn -0.0943 -0.9816 -0.1659 503 | vn 0.0000 0.9806 0.1961 504 | vn 0.0000 0.9806 -0.1961 505 | vn -0.0291 -0.3727 -0.9275 506 | vn -0.0651 -0.8432 -0.5337 507 | vn -0.0066 -0.2068 0.9784 508 | vn -0.0482 -0.7266 0.6853 509 | vn 1.0000 0.0025 -0.0031 510 | vn 0.9038 -0.4279 -0.0098 511 | vn 0.7503 -0.6559 0.0823 512 | vn 0.7398 0.6675 0.0843 513 | vn 0.0542 0.9675 0.2469 514 | vn 0.9400 -0.3409 -0.0103 515 | vn 0.3803 0.8731 0.3051 516 | vn -0.0671 -0.9680 0.2417 517 | vn 0.0087 0.1979 0.9802 518 | vn 0.0162 0.8784 0.4777 519 | vn 0.0190 0.6372 0.7705 520 | vn 0.0216 0.4473 0.8941 521 | vn -0.0183 0.8186 -0.5741 522 | vn -0.0026 0.0046 -1.0000 523 | vn -0.0102 -0.2424 -0.9701 524 | vn -0.0020 0.0811 -0.9967 525 | vn -0.0021 0.0799 -0.9968 526 | vn -0.0039 0.0086 -1.0000 527 | vn 0.0182 0.8953 -0.4451 528 | vn 0.0209 0.4295 0.9028 529 | vn 0.0160 0.8614 0.5076 530 | vn 0.0091 0.2147 0.9766 531 | vn -0.1073 -0.9574 0.2682 532 | vn -0.0660 -0.7360 0.6737 533 | vn -0.0068 -0.2091 0.9779 534 | vn -0.0554 -0.8377 -0.5433 535 | vn -0.0294 -0.3780 -0.9253 536 | vn 0.0546 0.9973 0.0500 537 | vn -0.0900 -0.9519 -0.2929 538 | vn -0.0604 -0.9598 -0.2742 539 | vn 0.2764 0.9588 0.0657 540 | vn 0.9465 -0.3211 -0.0334 541 | vn 0.8384 0.5422 0.0563 542 | vn 0.7175 -0.6840 -0.1319 543 | vn 0.9058 -0.4223 -0.0334 544 | usemtl None 545 | s off 546 | f 23/1/1 24/2/1 2/3/1 1/4/1 547 | f 24/2/2 25/5/2 4/6/2 2/3/2 548 | f 25/5/3 26/7/3 6/8/3 4/6/3 549 | f 26/7/4 27/9/4 8/10/4 6/8/4 550 | f 27/9/5 28/11/5 10/12/5 8/10/5 551 | f 29/13/6 12/14/6 14/15/6 30/16/6 552 | f 30/16/7 14/15/7 16/17/7 31/18/7 553 | f 31/18/8 16/17/8 18/19/8 32/20/8 554 | f 32/20/9 18/19/9 20/21/9 33/22/9 555 | f 33/22/10 20/21/10 22/23/10 34/24/10 556 | f 45/25/11 23/1/11 9/26/11 5/27/11 557 | f 23/1/12 1/4/12 15/28/12 9/26/12 558 | f 19/29/13 21/30/13 22/23/13 20/21/13 559 | f 17/31/14 19/29/14 20/21/14 18/19/14 560 | f 9/26/15 15/28/15 12/14/15 29/13/15 561 | f 13/32/16 17/31/16 18/19/16 16/17/16 562 | f 6/8/17 8/10/17 19/29/17 17/31/17 563 | f 11/33/18 13/32/18 16/17/18 14/15/18 564 | f 15/28/19 11/33/19 14/15/19 12/14/19 565 | f 5/27/11 9/26/11 29/13/11 46/34/11 566 | f 21/30/20 7/35/20 34/24/20 22/23/20 567 | f 43/36/21 33/22/21 34/24/21 44/37/21 568 | f 42/38/22 32/20/22 33/22/22 43/36/22 569 | f 41/39/23 31/18/23 32/20/23 42/38/23 570 | f 40/40/11 30/16/11 31/18/11 41/39/11 571 | f 46/34/11 29/13/11 30/16/11 40/40/11 572 | f 38/41/24 39/42/24 28/11/24 27/9/24 573 | f 37/43/25 38/41/25 27/9/25 26/7/25 574 | f 36/44/26 37/43/26 26/7/26 25/5/26 575 | f 35/45/11 36/44/11 25/5/11 24/2/11 576 | f 45/25/11 35/45/11 24/2/11 23/1/11 577 | f 8/10/27 10/12/27 21/30/27 19/29/27 578 | f 4/6/28 6/8/28 17/31/28 13/32/28 579 | f 2/3/29 4/6/29 13/32/29 11/33/29 580 | f 1/4/30 2/3/30 11/33/30 15/28/30 581 | f 10/12/31 28/11/31 7/35/31 21/30/31 582 | f 28/11/32 39/42/32 3/46/32 7/35/32 583 | f 7/35/33 3/46/33 44/37/33 34/24/33 584 | f 75/47/34 85/48/34 48/49/34 47/50/34 585 | f 85/48/35 86/51/35 53/52/35 48/49/35 586 | f 80/53/36 54/54/36 55/55/36 87/56/36 587 | f 87/56/37 55/55/37 60/57/37 88/58/37 588 | f 91/59/38 90/60/38 56/61/38 57/62/38 589 | f 93/63/39 92/64/39 55/55/39 54/54/39 590 | f 92/64/40 89/65/40 60/57/40 55/55/40 591 | f 94/66/41 91/59/41 57/62/41 58/67/41 592 | f 99/68/42 95/69/42 59/70/42 84/71/42 593 | f 90/60/43 93/63/43 54/54/43 56/61/43 594 | f 95/69/44 94/66/44 58/67/44 59/70/44 595 | f 98/72/45 97/73/45 74/74/45 88/58/45 596 | f 83/75/46 72/76/46 73/77/46 84/71/46 597 | f 82/78/47 71/79/47 72/76/47 83/75/47 598 | f 81/80/48 70/81/48 71/79/48 82/78/48 599 | f 80/53/49 68/82/49 70/81/49 81/80/49 600 | f 78/83/50 79/84/50 66/85/50 65/86/50 601 | f 77/87/51 78/83/51 65/86/51 64/88/51 602 | f 76/89/52 77/87/52 64/88/52 63/90/52 603 | f 75/47/53 76/89/53 63/90/53 61/91/53 604 | f 47/50/54 49/92/54 76/89/54 75/47/54 605 | f 49/92/52 50/93/52 77/87/52 76/89/52 606 | f 50/93/55 51/94/55 78/83/55 77/87/55 607 | f 51/94/56 52/95/56 79/84/56 78/83/56 608 | f 54/54/57 80/53/57 81/80/57 56/61/57 609 | f 56/61/48 81/80/48 82/78/48 57/62/48 610 | f 57/62/58 82/78/58 83/75/58 58/67/58 611 | f 58/67/59 83/75/59 84/71/59 59/70/59 612 | f 89/65/60 98/72/60 88/58/60 60/57/60 613 | f 96/96/42 99/68/42 84/71/42 73/77/42 614 | f 69/97/61 87/56/61 88/58/61 74/74/61 615 | f 68/82/62 80/53/62 87/56/62 69/97/62 616 | f 62/98/63 67/99/63 86/51/63 85/48/63 617 | f 61/91/64 62/98/64 85/48/64 75/47/64 618 | f 66/85/65 79/84/65 99/68/65 96/96/65 619 | f 53/52/66 86/51/66 98/72/66 89/65/66 620 | f 86/51/67 67/99/67 97/73/67 98/72/67 621 | f 52/95/68 51/94/68 94/66/68 95/69/68 622 | f 49/92/69 47/50/69 93/63/69 90/60/69 623 | f 79/84/65 52/95/65 95/69/65 99/68/65 624 | f 51/94/70 50/93/70 91/59/70 94/66/70 625 | f 48/49/71 53/52/71 89/65/71 92/64/71 626 | f 47/50/72 48/49/72 92/64/72 93/63/72 627 | f 50/93/38 49/92/38 90/60/38 91/59/38 628 | f 122/100/73 100/101/73 101/102/73 123/103/73 629 | f 123/103/74 101/102/74 103/104/74 124/105/74 630 | f 124/105/75 103/104/75 105/106/75 125/107/75 631 | f 125/107/76 105/106/76 107/108/76 126/109/76 632 | f 126/109/77 107/108/77 109/110/77 127/111/77 633 | f 128/112/78 129/113/78 113/114/78 111/115/78 634 | f 129/113/79 130/116/79 115/117/79 113/114/79 635 | f 130/116/80 131/118/80 117/119/80 115/117/80 636 | f 131/118/81 132/120/81 119/121/81 117/119/81 637 | f 132/120/82 133/122/82 121/123/82 119/121/82 638 | f 144/124/11 104/125/11 108/126/11 122/100/11 639 | f 122/100/83 108/126/83 114/127/83 100/101/83 640 | f 118/128/84 119/121/84 121/123/84 120/129/84 641 | f 116/130/85 117/119/85 119/121/85 118/128/85 642 | f 108/126/86 128/112/86 111/115/86 114/127/86 643 | f 112/131/87 115/117/87 117/119/87 116/130/87 644 | f 105/106/88 116/130/88 118/128/88 107/108/88 645 | f 110/132/89 113/114/89 115/117/89 112/131/89 646 | f 114/127/90 111/115/90 113/114/90 110/132/90 647 | f 104/125/11 145/133/11 128/112/11 108/126/11 648 | f 120/129/91 121/123/91 133/122/91 106/134/91 649 | f 142/135/92 143/136/92 133/122/92 132/120/92 650 | f 141/137/93 142/135/93 132/120/93 131/118/93 651 | f 140/138/94 141/137/94 131/118/94 130/116/94 652 | f 139/139/11 140/138/11 130/116/11 129/113/11 653 | f 145/133/11 139/139/11 129/113/11 128/112/11 654 | f 137/140/95 126/109/95 127/111/95 138/141/95 655 | f 136/142/96 125/107/96 126/109/96 137/140/96 656 | f 135/143/97 124/105/97 125/107/97 136/142/97 657 | f 134/144/11 123/103/11 124/105/11 135/143/11 658 | f 144/124/11 122/100/11 123/103/11 134/144/11 659 | f 107/108/98 118/128/98 120/129/98 109/110/98 660 | f 103/104/99 112/131/99 116/130/99 105/106/99 661 | f 101/102/100 110/132/100 112/131/100 103/104/100 662 | f 100/101/101 114/127/101 110/132/101 101/102/101 663 | f 109/110/102 120/129/102 106/134/102 127/111/102 664 | f 127/111/103 106/134/103 102/145/103 138/141/103 665 | f 106/134/104 133/122/104 143/136/104 102/145/104 666 | f 174/146/105 146/147/105 147/148/105 184/149/105 667 | f 184/149/106 147/148/106 152/150/106 185/151/106 668 | f 179/152/107 186/153/107 154/154/107 153/155/107 669 | f 186/153/108 187/156/108 159/157/108 154/154/108 670 | f 190/158/109 156/159/109 155/160/109 189/161/109 671 | f 192/162/110 153/155/110 154/154/110 191/163/110 672 | f 191/163/111 154/154/111 159/157/111 188/164/111 673 | f 193/165/112 157/166/112 156/159/112 190/158/112 674 | f 198/167/113 183/168/113 158/169/113 194/170/113 675 | f 189/161/114 155/160/114 153/155/114 192/162/114 676 | f 194/170/115 158/169/115 157/166/115 193/165/115 677 | f 197/171/116 187/156/116 173/172/116 196/173/116 678 | f 182/174/117 183/168/117 172/175/117 171/176/117 679 | f 181/177/118 182/174/118 171/176/118 170/178/118 680 | f 180/179/119 181/177/119 170/178/119 169/180/119 681 | f 179/152/120 180/179/120 169/180/120 167/181/120 682 | f 177/182/121 164/183/121 165/184/121 178/185/121 683 | f 176/186/122 163/187/122 164/183/122 177/182/122 684 | f 175/188/123 162/189/123 163/187/123 176/186/123 685 | f 174/146/124 160/190/124 162/189/124 175/188/124 686 | f 146/147/125 174/146/125 175/188/125 148/191/125 687 | f 148/191/123 175/188/123 176/186/123 149/192/123 688 | f 149/192/126 176/186/126 177/182/126 150/193/126 689 | f 150/193/127 177/182/127 178/185/127 151/194/127 690 | f 153/155/128 155/160/128 180/179/128 179/152/128 691 | f 155/160/119 156/159/119 181/177/119 180/179/119 692 | f 156/159/129 157/166/129 182/174/129 181/177/129 693 | f 157/166/130 158/169/130 183/168/130 182/174/130 694 | f 188/164/131 159/157/131 187/156/131 197/171/131 695 | f 195/195/113 172/175/113 183/168/113 198/167/113 696 | f 168/196/132 173/172/132 187/156/132 186/153/132 697 | f 167/181/133 168/196/133 186/153/133 179/152/133 698 | f 161/197/134 184/149/134 185/151/134 166/198/134 699 | f 160/190/135 174/146/135 184/149/135 161/197/135 700 | f 165/184/136 195/195/136 198/167/136 178/185/136 701 | f 152/150/137 188/164/137 197/171/137 185/151/137 702 | f 185/151/138 197/171/138 196/173/138 166/198/138 703 | f 151/194/139 194/170/139 193/165/139 150/193/139 704 | f 148/191/140 189/161/140 192/162/140 146/147/140 705 | f 178/185/136 198/167/136 194/170/136 151/194/136 706 | f 150/193/141 193/165/141 190/158/141 149/192/141 707 | f 147/148/142 191/163/142 188/164/142 152/150/142 708 | f 146/147/143 192/162/143 191/163/143 147/148/143 709 | f 149/192/109 190/158/109 189/161/109 148/191/109 710 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # MewChooWorld --------------------------------------------------------------------------------