├── ConcreteTriangles.png ├── README.md ├── cube.txt ├── graphics.py ├── monkey.txt ├── opengl_tutorial.py ├── plane.txt ├── rubik.png └── scene.txt /ConcreteTriangles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edward344/PyOpenGL-sample/a3fa28288e0baeea03c48db952f0f28d56348bd7/ConcreteTriangles.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # PyOpenGL-sample 2 | 3 | Reading a wavefront .obj file with PyOpenGL 4 | 5 | http://youtu.be/di343umywFk 6 | -------------------------------------------------------------------------------- /cube.txt: -------------------------------------------------------------------------------- 1 | # Blender v2.71 (sub 0) OBJ File: '' 2 | # www.blender.org 3 | v 1.000000 -1.000000 -1.000000 4 | v 1.000000 -1.000000 1.000000 5 | v -1.000000 -1.000000 1.000000 6 | v -1.000000 -1.000000 -1.000000 7 | v 1.000000 1.000000 -0.999999 8 | v 0.999999 1.000000 1.000001 9 | v -1.000000 1.000000 1.000000 10 | v -1.000000 1.000000 -1.000000 11 | vn 0.000000 -1.000000 0.000000 12 | vn 0.000000 1.000000 0.000000 13 | vn 1.000000 0.000000 0.000000 14 | vn -0.000000 -0.000000 1.000000 15 | vn -1.000000 -0.000000 -0.000000 16 | vn 0.000000 0.000000 -1.000000 17 | s off 18 | f 1//1 2//1 3//1 4//1 19 | f 5//2 8//2 7//2 6//2 20 | f 1//3 5//3 6//3 2//3 21 | f 2//4 6//4 7//4 3//4 22 | f 3//5 7//5 8//5 4//5 23 | f 5//6 1//6 4//6 8//6 24 | -------------------------------------------------------------------------------- /graphics.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | import pygame 4 | from OpenGL.GL import * 5 | 6 | def load_texture(filename): 7 | """ This fuctions will return the id for the texture""" 8 | textureSurface = pygame.image.load(filename) 9 | textureData = pygame.image.tostring(textureSurface,"RGBA",1) 10 | width = textureSurface.get_width() 11 | height = textureSurface.get_height() 12 | ID = glGenTextures(1) 13 | glBindTexture(GL_TEXTURE_2D,ID) 14 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR) 15 | glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR) 16 | glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,width,height,0,GL_RGBA,GL_UNSIGNED_BYTE,textureData) 17 | return ID 18 | 19 | class ObjLoader(object): 20 | def __init__(self,filename): 21 | self.vertices = [] 22 | self.triangle_faces = [] 23 | self.quad_faces = [] 24 | self.polygon_faces = [] 25 | self.normals = [] 26 | #----------------------- 27 | try: 28 | f = open(filename) 29 | n = 1 30 | for line in f: 31 | if line[:2] == "v ": 32 | index1 = line.find(" ") +1 #first number index; 33 | index2 = line.find(" ",index1+1) # second number index; 34 | index3 = line.find(" ",index2+1) # third number index; 35 | 36 | vertex = (float(line[index1:index2]),float(line[index2:index3]),float(line[index3:-1])) 37 | vertex = (round(vertex[0],2),round(vertex[1],2),round(vertex[2],2)) 38 | self.vertices.append(vertex) 39 | 40 | elif line[:2] == "vn": 41 | index1 = line.find(" ") +1 #first number index; 42 | index2 = line.find(" ",index1+1) # second number index; 43 | index3 = line.find(" ",index2+1) # third number index; 44 | 45 | normal = (float(line[index1:index2]),float(line[index2:index3]),float(line[index3:-1])) 46 | normal = (round(normal[0],2),round(normal[1],2),round(normal[2],2)) 47 | self.normals.append(normal) 48 | 49 | elif line[0] == "f": 50 | string = line.replace("//","/") 51 | #--------------------------------------------------- 52 | i = string.find(" ")+1 53 | face = [] 54 | for item in range(string.count(" ")): 55 | if string.find(" ",i) == -1: 56 | face.append(string[i:-1]) 57 | break 58 | face.append(string[i:string.find(" ",i)]) 59 | i = string.find(" ",i) +1 60 | #--------------------------------------------------- 61 | if string.count("/") == 3: 62 | self.triangle_faces.append(tuple(face)) 63 | elif string.count("/") == 4: 64 | self.quad_faces.append(tuple(face)) 65 | else: 66 | self.polygon_faces.append(tuple(face)) 67 | f.close() 68 | except IOError: 69 | print "Could not open the .obj file..." 70 | 71 | def render_scene(self): 72 | if len(self.triangle_faces) > 0: 73 | #------------------------------- 74 | glBegin(GL_TRIANGLES) 75 | for face in (self.triangle_faces): 76 | n = face[0] 77 | normal = self.normals[int(n[n.find("/")+1:])-1] 78 | glNormal3fv(normal) 79 | for f in (face): 80 | glVertex3fv(self.vertices[int(f[:f.find("/")])-1]) 81 | glEnd() 82 | #--------------------------------- 83 | 84 | if len(self.quad_faces) > 0: 85 | #---------------------------------- 86 | glBegin(GL_QUADS) 87 | for face in (self.quad_faces): 88 | n = face[0] 89 | normal = self.normals[int(n[n.find("/")+1:])-1] 90 | glNormal3fv(normal) 91 | for f in (face): 92 | glVertex3fv(self.vertices[int(f[:f.find("/")])-1]) 93 | glEnd() 94 | #----------------------------------- 95 | 96 | if len(self.polygon_faces) > 0: 97 | #---------------------------------- 98 | for face in (self.polygon_faces): 99 | #--------------------- 100 | glBegin(GL_POLYGON) 101 | n = face[0] 102 | normal = self.normals[int(n[n.find("/")+1:])-1] 103 | glNormal3fv(normal) 104 | for f in (face): 105 | glVertex3fv(self.vertices[int(f[:f.find("/")])-1]) 106 | glEnd() 107 | #---------------------- 108 | #----------------------------------- 109 | 110 | def render_texture(self,textureID,texcoord): 111 | glEnable(GL_TEXTURE_2D) 112 | glBindTexture(GL_TEXTURE_2D,textureID) 113 | 114 | glBegin(GL_QUADS) 115 | for face in self.quad_faces: 116 | n = face[0] 117 | normal = self.normals[int(n[n.find("/")+1:])-1] 118 | glNormal3fv(normal) 119 | for i,f in enumerate(face): 120 | glTexCoord2fv(texcoord[i]) 121 | glVertex3fv(self.vertices[int(f[:f.find("/")])-1]) 122 | glEnd() 123 | 124 | glDisable(GL_TEXTURE_2D) 125 | -------------------------------------------------------------------------------- /monkey.txt: -------------------------------------------------------------------------------- 1 | # Blender v2.71 (sub 0) OBJ File: 'casa.blend' 2 | # www.blender.org 3 | v 5.464386 2.416406 -4.004635 4 | v 4.589386 2.416406 -4.004635 5 | v 5.526886 2.346093 -4.082760 6 | v 4.526886 2.346093 -4.082760 7 | v 5.573761 2.307031 -4.192135 8 | v 4.480011 2.307031 -4.192135 9 | v 5.378448 2.228906 -4.153072 10 | v 4.675323 2.228906 -4.153072 11 | v 5.378448 2.283593 -4.051510 12 | v 4.675323 2.283593 -4.051510 13 | v 5.378448 2.385156 -3.989010 14 | v 4.675323 2.385156 -3.989010 15 | v 5.300323 2.416406 -3.973385 16 | v 4.753448 2.416406 -3.973385 17 | v 5.230011 2.346093 -4.028072 18 | v 4.823761 2.346093 -4.028072 19 | v 5.183136 2.307031 -4.121822 20 | v 4.870636 2.307031 -4.121822 21 | v 5.105011 2.494531 -4.114010 22 | v 4.948761 2.494531 -4.114010 23 | v 5.167511 2.494531 -4.028072 24 | v 4.886261 2.494531 -4.028072 25 | v 5.269073 2.494531 -3.973385 26 | v 4.784698 2.494531 -3.973385 27 | v 5.300323 2.580468 -3.973385 28 | v 4.753448 2.580468 -3.973385 29 | v 5.230011 2.642968 -4.028072 30 | v 4.823761 2.642968 -4.028072 31 | v 5.183136 2.689843 -4.121822 32 | v 4.870636 2.689843 -4.121822 33 | v 5.378448 2.767968 -4.153072 34 | v 4.675323 2.767968 -4.153072 35 | v 5.378448 2.705468 -4.051510 36 | v 4.675323 2.705468 -4.051510 37 | v 5.378448 2.611718 -3.989010 38 | v 4.675323 2.611718 -3.989010 39 | v 5.464386 2.580468 -4.004635 40 | v 4.589386 2.580468 -4.004635 41 | v 5.526886 2.642968 -4.082760 42 | v 4.526886 2.642968 -4.082760 43 | v 5.573761 2.689843 -4.192135 44 | v 4.480011 2.689843 -4.192135 45 | v 5.651886 2.494531 -4.207760 46 | v 4.401886 2.494531 -4.207760 47 | v 5.589386 2.494531 -4.098385 48 | v 4.464386 2.494531 -4.098385 49 | v 5.495636 2.494531 -4.012447 50 | v 4.558136 2.494531 -4.012447 51 | v 5.503448 2.494531 -3.996822 52 | v 4.550323 2.494531 -3.996822 53 | v 5.472198 2.588281 -3.989010 54 | v 4.581573 2.588281 -3.989010 55 | v 5.378448 2.627343 -3.965572 56 | v 4.675323 2.627343 -3.965572 57 | v 5.292511 2.588281 -3.949947 58 | v 4.761261 2.588281 -3.949947 59 | v 5.253448 2.494531 -3.949947 60 | v 4.800323 2.494531 -3.949947 61 | v 5.292511 2.408593 -3.949947 62 | v 4.761261 2.408593 -3.949947 63 | v 5.378448 2.494531 -3.942135 64 | v 4.675323 2.494531 -3.942135 65 | v 5.378448 2.369531 -3.965572 66 | v 4.675323 2.369531 -3.965572 67 | v 5.472198 2.408593 -3.989010 68 | v 4.581573 2.408593 -3.989010 69 | v 5.026886 2.682031 -4.028072 70 | v 5.026886 2.603906 -3.949947 71 | v 5.026886 1.572656 -4.035885 72 | v 5.026886 1.932031 -3.989010 73 | v 5.026886 2.064843 -3.973385 74 | v 5.026886 1.478906 -4.051510 75 | v 5.026886 2.658593 -4.168697 76 | v 5.026886 2.822656 -4.199947 77 | v 5.026886 3.150781 -5.317135 78 | v 5.026886 2.814843 -5.621822 79 | v 5.026886 2.322656 -5.598385 80 | v 5.026886 1.869531 -5.121822 81 | v 5.230011 2.064843 -4.207760 82 | v 4.823761 2.064843 -4.207760 83 | v 5.339386 1.814843 -4.199947 84 | v 4.714386 1.814843 -4.199947 85 | v 5.378448 1.557031 -4.199947 86 | v 4.675323 1.557031 -4.199947 87 | v 5.394073 1.361718 -4.239010 88 | v 4.659698 1.361718 -4.239010 89 | v 5.355011 1.307031 -4.246822 90 | v 4.698761 1.307031 -4.246822 91 | v 5.206573 1.283593 -4.215572 92 | v 4.847198 1.283593 -4.215572 93 | v 5.026886 1.267968 -4.192135 94 | v 5.464386 2.111718 -4.239010 95 | v 4.589386 2.111718 -4.239010 96 | v 5.659698 2.213281 -4.231197 97 | v 4.394073 2.213281 -4.231197 98 | v 5.855011 2.400781 -4.324947 99 | v 4.198761 2.400781 -4.324947 100 | v 5.886261 2.682031 -4.176510 101 | v 4.167511 2.682031 -4.176510 102 | v 5.737823 2.736718 -4.145260 103 | v 4.315948 2.736718 -4.145260 104 | v 5.519073 2.853906 -4.082760 105 | v 4.534698 2.853906 -4.082760 106 | v 5.347198 3.010156 -4.035885 107 | v 4.706573 3.010156 -4.035885 108 | v 5.183136 2.971093 -4.012447 109 | v 4.870636 2.971093 -4.012447 110 | v 5.089386 2.744531 -4.020260 111 | v 4.964386 2.744531 -4.020260 112 | v 5.190948 2.666406 -3.996822 113 | v 4.862823 2.666406 -3.996822 114 | v 5.151886 2.557031 -4.004635 115 | v 4.901886 2.557031 -4.004635 116 | v 5.230011 2.346093 -4.028072 117 | v 4.823761 2.346093 -4.028072 118 | v 5.401886 2.267968 -4.067135 119 | v 4.651886 2.267968 -4.067135 120 | v 5.519073 2.314843 -4.098385 121 | v 4.534698 2.314843 -4.098385 122 | v 5.651886 2.439843 -4.121822 123 | v 4.401886 2.439843 -4.121822 124 | v 5.667511 2.549218 -4.121822 125 | v 4.386261 2.549218 -4.121822 126 | v 5.628448 2.627343 -4.106197 127 | v 4.425323 2.627343 -4.106197 128 | v 5.456573 2.689843 -4.051510 129 | v 4.597198 2.689843 -4.051510 130 | v 5.276886 2.721093 -4.012447 131 | v 4.776886 2.721093 -4.012447 132 | v 5.026886 1.486718 -4.035885 133 | v 5.136261 1.533593 -4.035885 134 | v 4.917511 1.533593 -4.035885 135 | v 5.144073 1.416406 -4.059322 136 | v 4.909698 1.416406 -4.059322 137 | v 5.089386 1.369531 -4.074947 138 | v 4.964386 1.369531 -4.074947 139 | v 5.026886 1.361718 -4.082760 140 | v 5.026886 2.057031 -4.020260 141 | v 5.026886 2.111718 -4.028072 142 | v 5.128448 2.103906 -4.028072 143 | v 4.925323 2.103906 -4.028072 144 | v 5.151886 2.025781 -4.020260 145 | v 4.901886 2.025781 -4.020260 146 | v 5.112823 1.963281 -4.028072 147 | v 4.940948 1.963281 -4.028072 148 | v 5.425323 2.205468 -4.098385 149 | v 4.628448 2.205468 -4.098385 150 | v 5.644073 2.307031 -4.145260 151 | v 4.409698 2.307031 -4.145260 152 | v 5.753448 2.455468 -4.168697 153 | v 4.300323 2.455468 -4.168697 154 | v 5.769073 2.627343 -4.114010 155 | v 4.284698 2.627343 -4.114010 156 | v 5.714386 2.666406 -4.043697 157 | v 4.339386 2.666406 -4.043697 158 | v 5.464386 2.799218 -3.973385 159 | v 4.589386 2.799218 -3.973385 160 | v 5.339386 2.892968 -3.934322 161 | v 4.714386 2.892968 -3.934322 162 | v 5.230011 2.869531 -3.918697 163 | v 4.823761 2.869531 -3.918697 164 | v 5.128448 2.682031 -3.926510 165 | v 4.925323 2.682031 -3.926510 166 | v 5.151886 2.150781 -3.957760 167 | v 4.901886 2.150781 -3.957760 168 | v 5.237823 1.807031 -4.059322 169 | v 4.815948 1.807031 -4.059322 170 | v 5.276886 1.549218 -4.082760 171 | v 4.776886 1.549218 -4.082760 172 | v 5.292511 1.432031 -4.106197 173 | v 4.761261 1.432031 -4.106197 174 | v 5.261261 1.338281 -4.137447 175 | v 4.792511 1.338281 -4.137447 176 | v 5.190948 1.322656 -4.137447 177 | v 4.862823 1.322656 -4.137447 178 | v 5.026886 1.307031 -4.129635 179 | v 5.026886 2.299218 -4.043697 180 | v 5.026886 2.463281 -4.004635 181 | v 5.355011 2.728906 -4.028072 182 | v 4.698761 2.728906 -4.028072 183 | v 5.190948 2.392968 -4.020260 184 | v 4.862823 2.392968 -4.020260 185 | v 5.159698 2.463281 -4.012447 186 | v 4.894073 2.463281 -4.012447 187 | v 5.144073 1.564843 -4.035885 188 | v 4.909698 1.564843 -4.035885 189 | v 5.105011 1.807031 -4.020260 190 | v 4.948761 1.807031 -4.020260 191 | v 5.026886 1.807031 -4.020260 192 | v 5.026886 1.924218 -4.028072 193 | v 5.120636 1.978906 -3.989010 194 | v 4.933136 1.978906 -3.989010 195 | v 5.159698 2.025781 -3.973385 196 | v 4.894073 2.025781 -3.973385 197 | v 5.136261 2.119531 -3.989010 198 | v 4.917511 2.119531 -3.989010 199 | v 5.065948 2.127343 -3.989010 200 | v 4.987823 2.127343 -3.989010 201 | v 5.026886 2.049218 -3.942135 202 | v 5.073761 2.103906 -3.957760 203 | v 4.980011 2.103906 -3.957760 204 | v 5.120636 2.096093 -3.957760 205 | v 4.933136 2.096093 -3.957760 206 | v 5.136261 2.025781 -3.942135 207 | v 4.917511 2.025781 -3.942135 208 | v 5.105011 2.002343 -3.965572 209 | v 4.948761 2.002343 -3.965572 210 | v 5.026886 1.963281 -3.965572 211 | v 5.284698 1.939843 -4.215572 212 | v 4.769073 1.939843 -4.215572 213 | v 5.190948 2.010156 -4.059322 214 | v 4.862823 2.010156 -4.059322 215 | v 5.206573 1.939843 -4.059322 216 | v 4.847198 1.939843 -4.059322 217 | v 5.261261 2.002343 -4.215572 218 | v 4.792511 2.002343 -4.215572 219 | v 5.026886 1.377343 -4.082760 220 | v 5.073761 1.385156 -4.082760 221 | v 4.980011 1.385156 -4.082760 222 | v 5.120636 1.432031 -4.059322 223 | v 4.933136 1.432031 -4.059322 224 | v 5.120636 1.510156 -4.043697 225 | v 4.933136 1.510156 -4.043697 226 | v 5.026886 1.471093 -4.114010 227 | v 5.120636 1.502343 -4.106197 228 | v 4.933136 1.502343 -4.106197 229 | v 5.120636 1.439843 -4.129635 230 | v 4.933136 1.439843 -4.129635 231 | v 5.073761 1.400781 -4.137447 232 | v 4.980011 1.400781 -4.137447 233 | v 5.026886 1.392968 -4.137447 234 | v 5.198761 2.471093 -3.989010 235 | v 4.855011 2.471093 -3.989010 236 | v 5.214386 2.408593 -3.996822 237 | v 4.839386 2.408593 -3.996822 238 | v 5.362823 2.682031 -4.012447 239 | v 4.690948 2.682031 -4.012447 240 | v 5.300323 2.674218 -3.996822 241 | v 4.753448 2.674218 -3.996822 242 | v 5.448761 2.650781 -3.996822 243 | v 4.605011 2.650781 -3.996822 244 | v 5.589386 2.603906 -4.074947 245 | v 4.464386 2.603906 -4.074947 246 | v 5.612823 2.541406 -4.082760 247 | v 4.440948 2.541406 -4.082760 248 | v 5.605011 2.447656 -4.090572 249 | v 4.448761 2.447656 -4.090572 250 | v 5.503448 2.353906 -4.051510 251 | v 4.550323 2.353906 -4.051510 252 | v 5.401886 2.314843 -4.028072 253 | v 4.651886 2.314843 -4.028072 254 | v 5.253448 2.361718 -3.989010 255 | v 4.800323 2.361718 -3.989010 256 | v 5.206573 2.549218 -3.989010 257 | v 4.847198 2.549218 -3.989010 258 | v 5.237823 2.627343 -3.989010 259 | v 4.815948 2.627343 -3.989010 260 | v 5.261261 2.611718 -4.012447 261 | v 4.792511 2.611718 -4.012447 262 | v 5.222198 2.549218 -4.012447 263 | v 4.831573 2.549218 -4.012447 264 | v 5.269073 2.377343 -4.012447 265 | v 4.784698 2.377343 -4.012447 266 | v 5.401886 2.338281 -4.043697 267 | v 4.651886 2.338281 -4.043697 268 | v 5.487823 2.369531 -4.067135 269 | v 4.565948 2.369531 -4.067135 270 | v 5.573761 2.463281 -4.098385 271 | v 4.480011 2.463281 -4.098385 272 | v 5.581573 2.533593 -4.098385 273 | v 4.472198 2.533593 -4.098385 274 | v 5.558136 2.588281 -4.090572 275 | v 4.495636 2.588281 -4.090572 276 | v 5.440948 2.642968 -4.020260 277 | v 4.612823 2.642968 -4.020260 278 | v 5.308136 2.650781 -4.004635 279 | v 4.745636 2.650781 -4.004635 280 | v 5.362823 2.658593 -4.020260 281 | v 4.690948 2.658593 -4.020260 282 | v 5.230011 2.424218 -4.020260 283 | v 4.823761 2.424218 -4.020260 284 | v 5.222198 2.478906 -4.020260 285 | v 4.831573 2.478906 -4.020260 286 | v 5.136261 2.713281 -4.160885 287 | v 4.917511 2.713281 -4.160885 288 | v 5.222198 2.916406 -4.153072 289 | v 4.831573 2.916406 -4.153072 290 | v 5.362823 2.939843 -4.176510 291 | v 4.690948 2.939843 -4.176510 292 | v 5.511261 2.807031 -4.215572 293 | v 4.542511 2.807031 -4.215572 294 | v 5.706573 2.705468 -4.278072 295 | v 4.347198 2.705468 -4.278072 296 | v 5.823761 2.658593 -4.309322 297 | v 4.230011 2.658593 -4.309322 298 | v 5.800323 2.416406 -4.395260 299 | v 4.253448 2.416406 -4.395260 300 | v 5.628448 2.252343 -4.356197 301 | v 4.425323 2.252343 -4.356197 302 | v 5.464386 2.158593 -4.301510 303 | v 4.589386 2.158593 -4.301510 304 | v 5.026886 3.150781 -4.481197 305 | v 5.026886 3.236718 -4.848385 306 | v 5.026886 2.057031 -5.442135 307 | v 5.026886 1.791406 -4.582760 308 | v 5.026886 1.275781 -4.309322 309 | v 5.026886 1.447656 -4.426510 310 | v 5.026886 1.682031 -4.449947 311 | v 5.026886 1.767968 -4.489010 312 | v 5.878448 2.486718 -4.715572 313 | v 4.175323 2.486718 -4.715572 314 | v 5.886261 2.572656 -4.817135 315 | v 4.167511 2.572656 -4.817135 316 | v 5.800323 2.517968 -5.207760 317 | v 4.253448 2.517968 -5.207760 318 | v 5.487823 2.689843 -5.473385 319 | v 4.565948 2.689843 -5.473385 320 | v 5.761261 2.205468 -4.699947 321 | v 4.292511 2.205468 -4.699947 322 | v 5.620636 2.127343 -4.934322 323 | v 4.433136 2.127343 -4.934322 324 | v 5.667511 2.244531 -5.199947 325 | v 4.386261 2.244531 -5.199947 326 | v 5.362823 2.307031 -5.434322 327 | v 4.690948 2.307031 -5.434322 328 | v 5.261261 1.900781 -4.364010 329 | v 4.792511 1.900781 -4.364010 330 | v 5.206573 1.838281 -4.512447 331 | v 4.847198 1.838281 -4.512447 332 | v 5.315948 1.541406 -4.387447 333 | v 4.737823 1.541406 -4.387447 334 | v 5.276886 1.752343 -4.379635 335 | v 4.776886 1.752343 -4.379635 336 | v 5.355011 1.338281 -4.371822 337 | v 4.698761 1.338281 -4.371822 338 | v 5.167511 1.494531 -4.403072 339 | v 4.886261 1.494531 -4.403072 340 | v 5.151886 1.713281 -4.410885 341 | v 4.901886 1.713281 -4.410885 342 | v 5.190948 1.307031 -4.332760 343 | v 4.862823 1.307031 -4.332760 344 | v 5.245636 1.971093 -4.340572 345 | v 4.808136 1.971093 -4.340572 346 | v 5.237823 2.025781 -4.301510 347 | v 4.815948 2.025781 -4.301510 348 | v 5.230011 2.080468 -4.270260 349 | v 4.823761 2.080468 -4.270260 350 | v 5.237823 1.861718 -4.606197 351 | v 4.815948 1.861718 -4.606197 352 | v 5.323761 1.939843 -5.035885 353 | v 4.730011 1.939843 -5.035885 354 | v 5.370636 2.103906 -5.309322 355 | v 4.683136 2.103906 -5.309322 356 | v 5.480011 3.119531 -5.153072 357 | v 4.573761 3.119531 -5.153072 358 | v 5.480011 3.182031 -4.840572 359 | v 4.573761 3.182031 -4.840572 360 | v 5.480011 3.103906 -4.535885 361 | v 4.573761 3.103906 -4.535885 362 | v 5.487823 2.775781 -4.340572 363 | v 4.565948 2.775781 -4.340572 364 | v 5.753448 2.658593 -4.434322 365 | v 4.300323 2.658593 -4.434322 366 | v 5.659698 2.705468 -4.489010 367 | v 4.394073 2.705468 -4.489010 368 | v 5.667511 2.955468 -4.715572 369 | v 4.386261 2.955468 -4.715572 370 | v 5.823761 2.814843 -4.645260 371 | v 4.230011 2.814843 -4.645260 372 | v 5.823761 2.869531 -4.887447 373 | v 4.230011 2.869531 -4.887447 374 | v 5.667511 3.002343 -4.965572 375 | v 4.386261 3.002343 -4.965572 376 | v 5.667511 2.932031 -5.215572 377 | v 4.386261 2.932031 -5.215572 378 | v 5.823761 2.791406 -5.129635 379 | v 4.230011 2.791406 -5.129635 380 | v 5.644073 2.580468 -5.356197 381 | v 4.409698 2.580468 -5.356197 382 | v 5.511261 2.275781 -5.317135 383 | v 4.542511 2.275781 -5.317135 384 | v 5.847198 2.580468 -4.973385 385 | v 4.206573 2.580468 -4.973385 386 | v 5.433136 2.080468 -4.621822 387 | v 4.620636 2.080468 -4.621822 388 | v 5.456573 2.057031 -4.981197 389 | v 4.597198 2.057031 -4.981197 390 | v 5.917511 2.658593 -5.004635 391 | v 4.136261 2.658593 -5.004635 392 | v 5.800323 2.111718 -4.895260 393 | v 4.253448 2.111718 -4.895260 394 | v 6.065948 2.150781 -5.098385 395 | v 3.987823 2.150781 -5.098385 396 | v 6.308136 2.307031 -5.199947 397 | v 3.745636 2.307031 -5.199947 398 | v 6.378448 2.572656 -5.192135 399 | v 3.675323 2.572656 -5.192135 400 | v 6.261261 2.760156 -5.192135 401 | v 3.792511 2.760156 -5.192135 402 | v 6.050323 2.728906 -5.082760 403 | v 4.003448 2.728906 -5.082760 404 | v 6.042511 2.666406 -5.059322 405 | v 4.011261 2.666406 -5.059322 406 | v 6.214386 2.689843 -5.160885 407 | v 3.839386 2.689843 -5.160885 408 | v 6.292511 2.541406 -5.176510 409 | v 3.761261 2.541406 -5.176510 410 | v 6.237823 2.330468 -5.176510 411 | v 3.815948 2.330468 -5.176510 412 | v 6.058136 2.213281 -5.074947 413 | v 3.995636 2.213281 -5.074947 414 | v 5.855011 2.182031 -4.903072 415 | v 4.198761 2.182031 -4.903072 416 | v 5.948761 2.611718 -4.989010 417 | v 4.105011 2.611718 -4.989010 418 | v 5.972198 2.557031 -5.059322 419 | v 4.081573 2.557031 -5.059322 420 | v 5.909698 2.228906 -4.981197 421 | v 4.144073 2.228906 -4.981197 422 | v 6.065948 2.252343 -5.137447 423 | v 3.987823 2.252343 -5.137447 424 | v 6.214386 2.346093 -5.215572 425 | v 3.839386 2.346093 -5.215572 426 | v 6.261261 2.502343 -5.215572 427 | v 3.792511 2.502343 -5.215572 428 | v 6.198761 2.611718 -5.207760 429 | v 3.855011 2.611718 -5.207760 430 | v 6.050323 2.596093 -5.129635 431 | v 4.003448 2.596093 -5.129635 432 | v 5.870636 2.541406 -4.981197 433 | v 4.183136 2.541406 -4.981197 434 | v 5.862823 2.424218 -5.043697 435 | v 4.190948 2.424218 -5.043697 436 | v 5.784698 2.346093 -5.043697 437 | v 4.269073 2.346093 -5.043697 438 | v 5.847198 2.338281 -5.043697 439 | v 4.206573 2.338281 -5.043697 440 | v 5.870636 2.267968 -5.043697 441 | v 4.183136 2.267968 -5.043697 442 | v 5.839386 2.236718 -5.043697 443 | v 4.214386 2.236718 -5.043697 444 | v 5.753448 2.252343 -4.840572 445 | v 4.300323 2.252343 -4.840572 446 | v 5.745636 2.228906 -4.942135 447 | v 4.308136 2.228906 -4.942135 448 | v 5.745636 2.291406 -4.957760 449 | v 4.308136 2.291406 -4.957760 450 | v 5.823761 2.455468 -4.981197 451 | v 4.230011 2.455468 -4.981197 452 | v 5.917511 2.494531 -5.035885 453 | v 4.136261 2.494531 -5.035885 454 | v 5.917511 2.486718 -5.090572 455 | v 4.136261 2.486718 -5.090572 456 | v 5.839386 2.236718 -5.090572 457 | v 4.214386 2.236718 -5.090572 458 | v 5.878448 2.267968 -5.090572 459 | v 4.175323 2.267968 -5.090572 460 | v 5.855011 2.330468 -5.090572 461 | v 4.198761 2.330468 -5.090572 462 | v 5.792511 2.346093 -5.090572 463 | v 4.261261 2.346093 -5.090572 464 | v 5.870636 2.424218 -5.090572 465 | v 4.183136 2.424218 -5.090572 466 | v 6.065948 2.580468 -5.184322 467 | v 3.987823 2.580468 -5.184322 468 | v 6.214386 2.596093 -5.254635 469 | v 3.839386 2.596093 -5.254635 470 | v 6.284698 2.494531 -5.262447 471 | v 3.769073 2.494531 -5.262447 472 | v 6.237823 2.338281 -5.254635 473 | v 3.815948 2.338281 -5.254635 474 | v 6.073761 2.252343 -5.192135 475 | v 3.980011 2.252343 -5.192135 476 | v 5.909698 2.236718 -5.035885 477 | v 4.144073 2.236718 -5.035885 478 | v 5.980011 2.541406 -5.114010 479 | v 4.073761 2.541406 -5.114010 480 | v 5.917511 2.361718 -5.098385 481 | v 4.136261 2.361718 -5.098385 482 | v 5.964386 2.314843 -5.106197 483 | v 4.089386 2.314843 -5.106197 484 | v 6.026886 2.377343 -5.137447 485 | v 4.026886 2.377343 -5.137447 486 | v 5.987823 2.424218 -5.121822 487 | v 4.065948 2.424218 -5.121822 488 | v 6.042511 2.486718 -5.145260 489 | v 4.011261 2.486718 -5.145260 490 | v 6.081573 2.439843 -5.153072 491 | v 3.972198 2.439843 -5.153072 492 | v 6.136261 2.463281 -5.160885 493 | v 3.917511 2.463281 -5.160885 494 | v 6.112823 2.525781 -5.160885 495 | v 3.940948 2.525781 -5.160885 496 | v 6.050323 2.689843 -5.254635 497 | v 4.003448 2.689843 -5.254635 498 | v 6.276886 2.721093 -5.317135 499 | v 3.776886 2.721093 -5.317135 500 | v 6.394073 2.549218 -5.270260 501 | v 3.659698 2.549218 -5.270260 502 | v 6.339386 2.307031 -5.301510 503 | v 3.714386 2.307031 -5.301510 504 | v 6.065948 2.166406 -5.262447 505 | v 3.987823 2.166406 -5.262447 506 | v 5.815948 2.127343 -5.098385 507 | v 4.237823 2.127343 -5.098385 508 | v 5.886261 2.635156 -5.153072 509 | v 4.167511 2.635156 -5.153072 510 | vn 0.665000 -0.200800 0.719400 511 | vn -0.665000 -0.200800 0.719400 512 | vn 0.829400 -0.303600 0.468900 513 | vn -0.829400 -0.303600 0.468900 514 | vn 0.415500 -0.793300 0.444900 515 | vn -0.415500 -0.793300 0.444900 516 | vn 0.360000 -0.508900 0.782000 517 | vn -0.360000 -0.508900 0.782000 518 | vn -0.078700 -0.539400 0.838400 519 | vn 0.078700 -0.539400 0.838400 520 | vn -0.269600 -0.841300 0.468500 521 | vn 0.269600 -0.841300 0.468500 522 | vn -0.770700 -0.335200 0.542000 523 | vn 0.770700 -0.335200 0.542000 524 | vn -0.468900 -0.194000 0.861700 525 | vn 0.468900 -0.194000 0.861700 526 | vn -0.476700 0.190700 0.858100 527 | vn 0.476700 0.190700 0.858100 528 | vn -0.767200 0.326400 0.552100 529 | vn 0.767200 0.326400 0.552100 530 | vn -0.251900 0.817300 0.518200 531 | vn 0.251900 0.817300 0.518200 532 | vn -0.094900 0.569600 0.816400 533 | vn 0.094900 0.569600 0.816400 534 | vn 0.366700 0.537000 0.759700 535 | vn -0.366700 0.537000 0.759700 536 | vn 0.414100 0.767200 0.489800 537 | vn -0.414100 0.767200 0.489800 538 | vn 0.827700 0.295200 0.477100 539 | vn -0.827700 0.295200 0.477100 540 | vn 0.671300 0.197100 0.714500 541 | vn -0.671300 0.197100 0.714500 542 | vn 0.811100 0.324400 -0.486700 543 | vn -0.811100 0.324400 -0.486700 544 | vn 0.205200 0.820600 -0.533400 545 | vn -0.205200 0.820600 -0.533400 546 | vn -0.422300 0.780600 -0.460700 547 | vn 0.422300 0.780600 -0.460700 548 | vn -0.824100 0.322500 -0.465800 549 | vn 0.824100 0.322500 -0.465800 550 | vn -0.813700 -0.348700 -0.465000 551 | vn 0.813700 -0.348700 -0.465000 552 | vn -0.422300 -0.780600 -0.460700 553 | vn 0.422300 -0.780600 -0.460700 554 | vn 0.205200 -0.820600 -0.533400 555 | vn -0.205200 -0.820600 -0.533400 556 | vn 0.799500 -0.351000 -0.487500 557 | vn -0.799500 -0.351000 -0.487500 558 | vn 0.400000 -0.062300 0.914400 559 | vn -0.400000 -0.062300 0.914400 560 | vn 0.306900 -0.175400 0.935400 561 | vn -0.306900 -0.175400 0.935400 562 | vn 0.094500 -0.183500 0.978500 563 | vn -0.094500 -0.183500 0.978500 564 | vn -0.062400 -0.028300 0.997700 565 | vn 0.062400 -0.028300 0.997700 566 | vn -0.062400 0.026000 0.997700 567 | vn 0.062400 0.026000 0.997700 568 | vn 0.099600 0.172900 0.979900 569 | vn -0.099600 0.172900 0.979900 570 | vn 0.303600 0.165600 0.938300 571 | vn -0.303600 0.165600 0.938300 572 | vn 0.400200 0.057200 0.914700 573 | vn -0.400200 0.057200 0.914700 574 | vn 0.123100 -0.861600 0.492400 575 | vn -0.123100 -0.861600 0.492400 576 | vn 0.219000 -0.864700 0.452000 577 | vn -0.219000 -0.864700 0.452000 578 | vn 0.590200 -0.455000 0.666800 579 | vn -0.590200 -0.455000 0.666800 580 | vn 0.768900 -0.050600 0.637400 581 | vn -0.768900 -0.050600 0.637400 582 | vn 0.779600 0.090000 0.619700 583 | vn -0.779600 0.090000 0.619700 584 | vn 0.324100 -0.818800 0.473900 585 | vn -0.324100 -0.818800 0.473900 586 | vn 0.385700 -0.662900 0.641700 587 | vn -0.385700 -0.662900 0.641700 588 | vn 0.689500 -0.419300 0.590600 589 | vn -0.689500 -0.419300 0.590600 590 | vn 0.658800 -0.363400 0.658800 591 | vn -0.658800 -0.363400 0.658800 592 | vn 0.546500 0.370700 0.750900 593 | vn -0.546500 0.370700 0.750900 594 | vn 0.506400 0.646400 0.570600 595 | vn -0.506400 0.646400 0.570600 596 | vn 0.609200 0.516700 0.601500 597 | vn -0.609200 0.516700 0.601500 598 | vn -0.044100 0.661000 0.749100 599 | vn 0.044100 0.661000 0.749100 600 | vn -0.724600 0.318700 0.611000 601 | vn 0.724600 0.318700 0.611000 602 | vn -0.588000 0.555400 0.588000 603 | vn 0.588000 0.555400 0.588000 604 | vn 0.536100 -0.390900 0.748200 605 | vn -0.536100 -0.390900 0.748200 606 | vn 0.220700 -0.469000 0.855200 607 | vn -0.220700 -0.469000 0.855200 608 | vn -0.079400 -0.532100 0.842900 609 | vn 0.079400 -0.532100 0.842900 610 | vn -0.082500 -0.657500 0.749000 611 | vn 0.082500 -0.657500 0.749000 612 | vn 0.045700 -0.566700 0.822600 613 | vn -0.045700 -0.566700 0.822600 614 | vn 0.278400 -0.213000 0.936500 615 | vn -0.278400 -0.213000 0.936500 616 | vn 0.381300 -0.182400 0.906300 617 | vn -0.381300 -0.182400 0.906300 618 | vn 0.335700 -0.287800 0.896900 619 | vn -0.335700 -0.287800 0.896900 620 | vn 0.376200 0.060300 0.924600 621 | vn -0.376200 0.060300 0.924600 622 | vn -0.135200 0.268000 0.953900 623 | vn 0.135200 0.268000 0.953900 624 | vn 0.396100 -0.432100 0.810200 625 | vn -0.396100 -0.432100 0.810200 626 | vn 0.185600 -0.247400 0.951000 627 | vn -0.185600 -0.247400 0.951000 628 | vn 0.009900 -0.194800 0.980800 629 | vn -0.009900 -0.194800 0.980800 630 | vn 0.072100 -0.696600 0.713800 631 | vn -0.072100 -0.696600 0.713800 632 | vn 0.186300 -0.572300 0.798600 633 | vn -0.186300 -0.572300 0.798600 634 | vn 0.315700 -0.270800 0.909400 635 | vn -0.315700 -0.270800 0.909400 636 | vn 0.306300 -0.026500 0.951600 637 | vn -0.306300 -0.026500 0.951600 638 | vn 0.326500 -0.130600 0.936100 639 | vn -0.326600 -0.130600 0.936100 640 | vn -0.013700 0.057400 0.998300 641 | vn 0.013700 0.057400 0.998300 642 | vn -0.002600 -0.065600 0.997800 643 | vn 0.002600 -0.065600 0.997800 644 | vn 0.000000 0.000000 1.000000 645 | vn 0.817400 -0.574400 -0.044200 646 | vn -0.817400 -0.574400 -0.044200 647 | vn 0.949400 0.229700 -0.214400 648 | vn -0.949400 0.229700 -0.214400 649 | vn 0.082500 0.907300 -0.412400 650 | vn -0.082500 0.907300 -0.412400 651 | vn -0.883600 0.355500 0.304700 652 | vn 0.883600 0.355500 0.304700 653 | vn 0.420700 -0.879700 0.221800 654 | vn -0.420700 -0.879700 0.221800 655 | vn 0.287300 -0.574700 0.766300 656 | vn -0.287300 -0.574700 0.766300 657 | vn -0.654200 0.601900 0.458000 658 | vn 0.654200 0.601900 0.458000 659 | vn 0.105200 0.789200 0.605100 660 | vn -0.105200 0.789200 0.605100 661 | vn 0.758200 0.291600 0.583200 662 | vn -0.758200 0.291600 0.583200 663 | vn 0.388900 -0.713000 0.583400 664 | vn -0.388900 -0.713000 0.583400 665 | vn 0.046300 0.231400 0.971800 666 | vn -0.046300 0.231400 0.971800 667 | vn 0.033500 -0.401800 0.915100 668 | vn -0.033500 -0.401800 0.915100 669 | vn -0.445200 -0.161000 0.880900 670 | vn 0.445200 -0.161000 0.880900 671 | vn -0.218200 -0.436400 0.872900 672 | vn 0.218200 -0.436400 0.872900 673 | vn 0.434100 -0.129000 0.891600 674 | vn -0.434100 -0.129000 0.891600 675 | vn 0.300800 0.050100 0.952400 676 | vn -0.300800 0.050100 0.952400 677 | vn 0.812300 0.301000 0.499600 678 | vn -0.812300 0.301000 0.499600 679 | vn 0.875300 0.257400 0.409300 680 | vn -0.875300 0.257400 0.409300 681 | vn 0.938500 0.160100 0.306000 682 | vn -0.938500 0.160100 0.306000 683 | vn 0.223700 -0.653900 0.722700 684 | vn -0.223700 -0.653900 0.722700 685 | vn -0.153600 -0.199700 0.967700 686 | vn 0.153600 -0.199700 0.967700 687 | vn -0.273300 -0.102500 0.956500 688 | vn 0.273300 -0.102500 0.956500 689 | vn -0.097600 0.195200 0.975900 690 | vn 0.097600 0.195200 0.975900 691 | vn -0.158200 0.949400 0.271300 692 | vn 0.158200 0.949400 0.271300 693 | vn -0.693400 0.708200 0.132800 694 | vn 0.693400 0.708200 0.132800 695 | vn -1.000000 0.000000 0.000000 696 | vn 1.000000 0.000000 0.000000 697 | vn 0.305100 -0.945000 0.118100 698 | vn -0.305100 -0.945000 0.118100 699 | vn 0.029800 -0.298100 0.954100 700 | vn -0.029800 -0.298100 0.954100 701 | vn 0.135300 -0.347900 0.927700 702 | vn -0.135300 -0.347900 0.927700 703 | vn -0.508500 -0.275500 0.815800 704 | vn 0.508500 -0.275500 0.815800 705 | vn -0.384300 -0.041900 0.922300 706 | vn 0.384300 -0.041900 0.922300 707 | vn -0.208300 0.037400 0.977400 708 | vn 0.208300 0.037400 0.977400 709 | vn -0.572100 -0.476700 0.667400 710 | vn 0.572100 -0.476700 0.667400 711 | vn -0.136900 -0.753100 0.643500 712 | vn 0.136900 -0.753100 0.643500 713 | vn 0.408800 -0.607100 0.681400 714 | vn -0.408800 -0.607100 0.681400 715 | vn 0.574000 -0.413000 0.707000 716 | vn -0.574000 -0.413000 0.707000 717 | vn 0.566500 -0.096800 0.818300 718 | vn -0.566500 -0.096800 0.818300 719 | vn 0.570300 0.118000 0.812900 720 | vn -0.570300 0.118000 0.812900 721 | vn 0.482300 0.562100 0.671900 722 | vn -0.482300 0.562100 0.671900 723 | vn 0.260400 0.611400 0.747300 724 | vn -0.260400 0.611400 0.747300 725 | vn 0.164000 0.360700 0.918200 726 | vn -0.164000 0.360700 0.918200 727 | vn -0.017800 0.249500 0.968200 728 | vn 0.017800 0.249500 0.968200 729 | vn 0.327300 -0.416600 0.848100 730 | vn -0.327300 -0.416600 0.848100 731 | vn 0.281100 -0.261000 0.923500 732 | vn -0.281100 -0.261000 0.923500 733 | vn -0.254200 -0.651400 0.714900 734 | vn 0.254200 -0.651400 0.714900 735 | vn -0.026000 -0.845500 0.533300 736 | vn 0.026000 -0.845500 0.533300 737 | vn -0.351800 -0.260600 0.899100 738 | vn 0.351800 -0.260600 0.899100 739 | vn -0.352300 -0.011000 0.935800 740 | vn 0.352300 -0.011000 0.935800 741 | vn -0.131700 0.460800 0.877700 742 | vn 0.131700 0.460800 0.877700 743 | vn -0.034200 0.615900 0.787000 744 | vn 0.034200 0.615900 0.787000 745 | vn 0.360300 0.583600 0.727700 746 | vn -0.360300 0.583600 0.727700 747 | vn 0.498800 0.530000 0.685800 748 | vn -0.498800 0.530000 0.685800 749 | vn 0.666700 -0.333300 0.666700 750 | vn -0.666700 -0.333300 0.666700 751 | vn 0.816500 -0.073100 0.572700 752 | vn -0.816500 -0.073100 0.572700 753 | vn 0.784000 0.116100 0.609800 754 | vn -0.784000 0.116100 0.609800 755 | vn -0.530600 0.811100 -0.246100 756 | vn 0.530600 0.811100 -0.246100 757 | vn -0.851100 0.369500 -0.373000 758 | vn 0.851100 0.369500 -0.373000 759 | vn -0.244600 0.867500 -0.433100 760 | vn 0.244600 0.867500 -0.433100 761 | vn 0.592400 0.746500 -0.303000 762 | vn -0.592400 0.746500 -0.303000 763 | vn 0.368500 0.875800 -0.311800 764 | vn -0.368500 0.875800 -0.311800 765 | vn 0.282100 0.915100 -0.288000 766 | vn -0.282100 0.915100 -0.288000 767 | vn 0.856100 0.134000 -0.499100 768 | vn -0.856100 0.134000 -0.499100 769 | vn 0.534200 -0.723300 -0.437600 770 | vn -0.534200 -0.723300 -0.437600 771 | vn 0.384900 -0.813100 -0.436800 772 | vn -0.384900 -0.813100 -0.436800 773 | vn 0.233500 -0.580600 -0.780000 774 | vn -0.233500 -0.580600 -0.780000 775 | vn 0.244900 -0.058300 -0.967800 776 | vn -0.244900 -0.058300 -0.967800 777 | vn 0.116300 -0.453500 -0.883700 778 | vn -0.116300 -0.453500 -0.883700 779 | vn 0.115200 -0.983600 -0.138800 780 | vn -0.115200 -0.983600 -0.138800 781 | vn 0.118400 -0.966900 -0.226000 782 | vn -0.118400 -0.966900 -0.226000 783 | vn 0.959700 -0.008500 -0.280800 784 | vn -0.959700 -0.008500 -0.280800 785 | vn 0.931900 0.162900 -0.324200 786 | vn -0.931900 0.162900 -0.324200 787 | vn 0.162600 0.020700 -0.986500 788 | vn -0.162600 0.020700 -0.986500 789 | vn -0.018800 -0.217700 -0.975800 790 | vn 0.018800 -0.217700 -0.975800 791 | vn 0.753800 -0.292600 -0.588400 792 | vn -0.753800 -0.292600 -0.588400 793 | vn 0.919600 0.137900 -0.367800 794 | vn -0.919600 0.137900 -0.367800 795 | vn 0.929700 0.312700 -0.194400 796 | vn -0.929700 0.312700 -0.194400 797 | vn 0.912000 0.337600 -0.232900 798 | vn -0.912000 0.337600 -0.232900 799 | vn 0.940700 0.333800 -0.060700 800 | vn -0.940700 0.333800 -0.060700 801 | vn 0.176100 -0.880500 -0.440200 802 | vn -0.176100 -0.880500 -0.440200 803 | vn 0.370800 -0.473300 -0.799100 804 | vn -0.370800 -0.473300 -0.799100 805 | vn 0.310700 -0.828400 -0.466000 806 | vn -0.310700 -0.828400 -0.466000 807 | vn 0.279300 -0.951500 -0.128700 808 | vn -0.279300 -0.951500 -0.128700 809 | vn 0.313900 -0.932100 -0.180700 810 | vn -0.313900 -0.932100 -0.180700 811 | vn 0.976200 -0.208300 -0.060900 812 | vn -0.976200 -0.208300 -0.060900 813 | vn 0.826700 -0.506600 0.244700 814 | vn -0.826700 -0.506600 0.244700 815 | vn 0.344900 -0.115800 -0.931500 816 | vn -0.344900 -0.115800 -0.931500 817 | vn 0.120300 0.964400 0.235500 818 | vn -0.120300 0.964400 0.235500 819 | vn 0.127500 0.974400 -0.185100 820 | vn -0.127500 0.974400 -0.185100 821 | vn 0.349200 0.594700 -0.724100 822 | vn -0.349200 0.594700 -0.724100 823 | vn 0.415300 0.898100 -0.144900 824 | vn -0.415300 0.898100 -0.144900 825 | vn 0.184500 0.703600 0.686300 826 | vn -0.184500 0.703600 0.686300 827 | vn 0.605600 0.779400 0.160800 828 | vn -0.605600 0.779400 0.160800 829 | vn 0.703300 0.680600 -0.205300 830 | vn -0.703300 0.680600 -0.205300 831 | vn 0.667900 0.200700 -0.716600 832 | vn -0.667900 0.200700 -0.716600 833 | vn 0.494800 0.434200 -0.752800 834 | vn -0.494800 0.434200 -0.752800 835 | vn 0.642300 0.745900 -0.176100 836 | vn -0.642300 0.745900 -0.176100 837 | vn 0.718200 0.678800 0.153000 838 | vn -0.718200 0.678800 0.153000 839 | vn 0.738800 0.397200 0.544400 840 | vn -0.738800 0.397200 0.544400 841 | vn 0.342800 0.926100 -0.157900 842 | vn -0.342800 0.926100 -0.157900 843 | vn 0.227000 0.574000 0.786700 844 | vn -0.227000 0.574000 0.786700 845 | vn -0.172200 0.104600 -0.979500 846 | vn 0.172200 0.104600 -0.979500 847 | vn 0.042500 0.915000 0.401300 848 | vn -0.042500 0.915000 0.401300 849 | vn -0.161600 0.184700 0.969400 850 | vn 0.161600 0.184700 0.969400 851 | vn 0.979100 0.197300 0.048300 852 | vn -0.979100 0.197300 0.048300 853 | vn 0.947000 0.091800 0.307900 854 | vn -0.947000 0.091800 0.307900 855 | vn 0.979400 0.190500 -0.066100 856 | vn -0.979400 0.190500 -0.066100 857 | vn 0.993800 0.031200 -0.107000 858 | vn -0.993800 0.031200 -0.107000 859 | vn 0.711600 -0.700800 0.050100 860 | vn -0.711600 -0.700800 0.050100 861 | vn 0.372200 -0.924300 0.084700 862 | vn -0.372200 -0.924300 0.084700 863 | vn 0.446500 -0.864400 0.231000 864 | vn -0.446500 -0.864400 0.231000 865 | vn 0.606600 -0.757800 0.240500 866 | vn -0.606600 -0.757800 0.240500 867 | vn 0.732500 -0.636800 0.240700 868 | vn -0.732500 -0.636800 0.240700 869 | vn 0.263700 -0.449900 0.853300 870 | vn -0.263700 -0.449900 0.853300 871 | vn 0.556800 -0.318100 -0.767300 872 | vn -0.556800 -0.318100 -0.767300 873 | vn 0.500400 -0.280700 -0.819000 874 | vn -0.500400 -0.280700 -0.819000 875 | vn 0.319000 -0.849400 -0.420500 876 | vn -0.319000 -0.849400 -0.420500 877 | vn 0.719800 -0.635600 -0.279300 878 | vn -0.719800 -0.635600 -0.279300 879 | vn 0.497200 -0.440800 -0.747300 880 | vn -0.497200 -0.440800 -0.747300 881 | vn 0.350600 0.380700 0.855700 882 | vn -0.350600 0.380700 0.855700 883 | vn 0.456600 0.171500 0.873000 884 | vn -0.456600 0.171500 0.873000 885 | vn 0.258300 0.105500 0.960300 886 | vn -0.258300 0.105500 0.960300 887 | vn 0.245500 -0.080200 0.966100 888 | vn -0.245500 -0.080200 0.966100 889 | vn 0.464300 -0.059900 0.883700 890 | vn -0.464300 -0.059900 0.883700 891 | vn 0.622500 -0.304500 0.721000 892 | vn -0.622500 -0.304500 0.721000 893 | vn 0.450000 0.659000 0.602700 894 | vn -0.450000 0.659000 0.602700 895 | vn -0.266700 0.830900 0.488400 896 | vn 0.266700 0.830900 0.488400 897 | vn -0.828400 0.229100 0.511100 898 | vn 0.828400 0.229100 0.511100 899 | vn -0.525100 -0.356600 0.772700 900 | vn 0.525100 -0.356600 0.772700 901 | vn 0.454600 -0.566500 0.687300 902 | vn -0.454600 -0.566500 0.687300 903 | vn 0.699600 -0.449700 0.555200 904 | vn -0.699600 -0.449700 0.555200 905 | vn 0.722000 -0.682700 -0.112600 906 | vn -0.722000 -0.682700 -0.112600 907 | vn -0.191900 0.286000 0.938800 908 | vn 0.191900 0.286000 0.938800 909 | vn 0.904800 -0.373400 -0.204700 910 | vn -0.904800 -0.373400 -0.204700 911 | vn 0.103400 0.155100 0.982500 912 | vn -0.103400 0.155100 0.982500 913 | vn 0.084100 0.931800 0.353000 914 | vn -0.084100 0.931800 0.353000 915 | vn 0.644600 -0.088300 0.759400 916 | vn -0.644600 -0.088300 0.759400 917 | vn 0.430900 0.474000 0.767800 918 | vn -0.430900 0.474000 0.767800 919 | vn 0.803200 -0.484700 0.346200 920 | vn -0.803200 -0.484700 0.346200 921 | vn 0.581100 -0.412800 0.701400 922 | vn -0.581100 -0.412800 0.701400 923 | vn 0.591000 -0.430500 0.682200 924 | vn -0.591000 -0.430500 0.682200 925 | vn 0.981800 -0.180400 -0.059100 926 | vn -0.981800 -0.180400 -0.059100 927 | vn 0.910500 -0.396500 -0.117500 928 | vn -0.910500 -0.396500 -0.117500 929 | vn 0.997200 -0.018100 -0.072500 930 | vn -0.997200 -0.018100 -0.072500 931 | vn 0.731300 -0.654300 0.192500 932 | vn -0.731300 -0.654300 0.192500 933 | vn 0.786700 -0.607900 0.107300 934 | vn -0.786700 -0.607900 0.107300 935 | vn 0.702200 -0.702200 0.117000 936 | vn -0.702200 -0.702200 0.117000 937 | vn 0.184000 0.981600 -0.051100 938 | vn -0.184000 0.981600 -0.051100 939 | vn 0.935200 0.330100 0.128400 940 | vn -0.935200 0.330100 0.128400 941 | vn 0.663300 -0.746300 0.055300 942 | vn -0.663300 -0.746300 0.055300 943 | vn -0.008500 0.997000 0.076700 944 | vn 0.008500 0.997000 0.076700 945 | vn 0.623700 -0.706100 0.335400 946 | vn -0.623700 -0.706100 0.335400 947 | vn 0.273300 -0.892500 0.358700 948 | vn -0.273300 -0.892500 0.358700 949 | vn -0.832800 -0.508000 -0.220000 950 | vn 0.832800 -0.508000 -0.220000 951 | vn -0.833900 0.237700 -0.498100 952 | vn 0.833900 0.237700 -0.498100 953 | vn -0.565500 0.784700 -0.253900 954 | vn 0.565500 0.784700 -0.253900 955 | vn -0.056000 0.996200 0.067200 956 | vn 0.056000 0.996200 0.067200 957 | vn 0.144500 0.022200 0.989300 958 | vn -0.144500 0.022200 0.989300 959 | vn 0.327500 0.064500 0.942700 960 | vn -0.327500 0.064500 0.942700 961 | vn 0.312700 0.023200 0.949600 962 | vn -0.312700 0.023200 0.949600 963 | vn 0.171000 0.027400 0.984900 964 | vn -0.171000 0.027400 0.984900 965 | vn 0.348700 0.284900 0.892900 966 | vn -0.348700 0.284900 0.892900 967 | vn 0.400600 -0.034300 0.915600 968 | vn -0.400600 -0.034300 0.915600 969 | vn 0.257200 -0.060300 0.964500 970 | vn -0.257200 -0.060300 0.964500 971 | vn 0.063700 -0.010600 0.997900 972 | vn -0.063700 -0.010600 0.997900 973 | vn -0.363700 0.703900 0.610100 974 | vn 0.363700 0.703900 0.610100 975 | vn 0.629900 0.035500 0.775900 976 | vn -0.629900 0.035500 0.775900 977 | vn 0.447200 -0.200200 0.871700 978 | vn -0.447200 -0.200200 0.871700 979 | vn 0.507200 -0.214100 0.834800 980 | vn -0.507200 -0.214100 0.834800 981 | vn 0.525800 0.261900 0.809300 982 | vn -0.525800 0.261900 0.809300 983 | vn 0.298000 0.580200 0.758000 984 | vn -0.298000 0.580200 0.758000 985 | vn 0.093000 -0.992400 -0.080500 986 | vn -0.093000 -0.992400 -0.080500 987 | vn 0.500600 -0.865700 0.008000 988 | vn -0.500600 -0.865700 0.008000 989 | vn 0.928500 -0.249700 0.274800 990 | vn -0.928500 -0.249700 0.274800 991 | vn 0.839300 0.542400 -0.037800 992 | vn -0.839300 0.542400 -0.037800 993 | vn -0.235500 0.936700 -0.258900 994 | vn 0.235500 0.936700 -0.258900 995 | vn -0.449900 0.883800 -0.128500 996 | vn 0.449900 0.883800 -0.128500 997 | vn -0.538400 -0.009800 -0.842700 998 | vn 0.538400 -0.009800 -0.842700 999 | vn -0.191000 -0.024100 -0.981300 1000 | vn 0.191000 -0.024100 -0.981300 1001 | vn 0.404600 0.026600 -0.914100 1002 | vn -0.404600 0.026600 -0.914100 1003 | vn -0.781900 0.623100 0.019700 1004 | vn 0.781900 0.623100 0.019700 1005 | vn 0.542800 -0.206300 -0.814200 1006 | vn -0.542800 -0.206300 -0.814200 1007 | vn -0.247400 -0.923100 -0.294500 1008 | vn 0.247400 -0.923100 -0.294500 1009 | s off 1010 | f 47//1 1//1 3//1 45//1 1011 | f 4//2 2//2 48//2 46//2 1012 | f 45//3 3//3 5//3 43//3 1013 | f 6//4 4//4 46//4 44//4 1014 | f 3//5 9//5 7//5 5//5 1015 | f 8//6 10//6 4//6 6//6 1016 | f 1//7 11//7 9//7 3//7 1017 | f 10//8 12//8 2//8 4//8 1018 | f 11//9 13//9 15//9 9//9 1019 | f 16//10 14//10 12//10 10//10 1020 | f 9//11 15//11 17//11 7//11 1021 | f 18//12 16//12 10//12 8//12 1022 | f 15//13 21//13 19//13 17//13 1023 | f 20//14 22//14 16//14 18//14 1024 | f 13//15 23//15 21//15 15//15 1025 | f 22//16 24//16 14//16 16//16 1026 | f 23//17 25//17 27//17 21//17 1027 | f 28//18 26//18 24//18 22//18 1028 | f 21//19 27//19 29//19 19//19 1029 | f 30//20 28//20 22//20 20//20 1030 | f 27//21 33//21 31//21 29//21 1031 | f 32//22 34//22 28//22 30//22 1032 | f 25//23 35//23 33//23 27//23 1033 | f 34//24 36//24 26//24 28//24 1034 | f 35//25 37//25 39//25 33//25 1035 | f 40//26 38//26 36//26 34//26 1036 | f 33//27 39//27 41//27 31//27 1037 | f 42//28 40//28 34//28 32//28 1038 | f 39//29 45//29 43//29 41//29 1039 | f 44//30 46//30 40//30 42//30 1040 | f 37//31 47//31 45//31 39//31 1041 | f 46//32 48//32 38//32 40//32 1042 | f 47//33 37//33 51//33 49//33 1043 | f 52//34 38//34 48//34 50//34 1044 | f 37//35 35//35 53//35 51//35 1045 | f 54//36 36//36 38//36 52//36 1046 | f 35//37 25//37 55//37 53//37 1047 | f 56//38 26//38 36//38 54//38 1048 | f 25//39 23//39 57//39 55//39 1049 | f 58//40 24//40 26//40 56//40 1050 | f 23//41 13//41 59//41 57//41 1051 | f 60//42 14//42 24//42 58//42 1052 | f 13//43 11//43 63//43 59//43 1053 | f 64//44 12//44 14//44 60//44 1054 | f 11//45 1//45 65//45 63//45 1055 | f 66//46 2//46 12//46 64//46 1056 | f 1//47 47//47 49//47 65//47 1057 | f 50//48 48//48 2//48 66//48 1058 | f 61//49 65//49 49//49 1059 | f 50//50 66//50 62//50 1060 | f 63//51 65//51 61//51 1061 | f 62//52 66//52 64//52 1062 | f 61//53 59//53 63//53 1063 | f 64//54 60//54 62//54 1064 | f 61//55 57//55 59//55 1065 | f 60//56 58//56 62//56 1066 | f 61//57 55//57 57//57 1067 | f 58//58 56//58 62//58 1068 | f 61//59 53//59 55//59 1069 | f 56//60 54//60 62//60 1070 | f 61//61 51//61 53//61 1071 | f 54//62 52//62 62//62 1072 | f 61//63 49//63 51//63 1073 | f 52//64 50//64 62//64 1074 | f 89//65 174//65 176//65 91//65 1075 | f 176//66 175//66 90//66 91//66 1076 | f 87//67 172//67 174//67 89//67 1077 | f 175//68 173//68 88//68 90//68 1078 | f 85//69 170//69 172//69 87//69 1079 | f 173//70 171//70 86//70 88//70 1080 | f 83//71 168//71 170//71 85//71 1081 | f 171//72 169//72 84//72 86//72 1082 | f 81//73 166//73 168//73 83//73 1083 | f 169//74 167//74 82//74 84//74 1084 | f 79//75 92//75 146//75 164//75 1085 | f 147//76 93//76 80//76 165//76 1086 | f 92//77 94//77 148//77 146//77 1087 | f 149//78 95//78 93//78 147//78 1088 | f 94//79 96//79 150//79 148//79 1089 | f 151//80 97//80 95//80 149//80 1090 | f 96//81 98//81 152//81 150//81 1091 | f 153//82 99//82 97//82 151//82 1092 | f 98//83 100//83 154//83 152//83 1093 | f 155//84 101//84 99//84 153//84 1094 | f 100//85 102//85 156//85 154//85 1095 | f 157//86 103//86 101//86 155//86 1096 | f 102//87 104//87 158//87 156//87 1097 | f 159//88 105//88 103//88 157//88 1098 | f 104//89 106//89 160//89 158//89 1099 | f 161//90 107//90 105//90 159//90 1100 | f 106//91 108//91 162//91 160//91 1101 | f 163//92 109//92 107//92 161//92 1102 | f 108//93 67//93 68//93 162//93 1103 | f 68//94 67//94 109//94 163//94 1104 | f 110//95 128//95 160//95 162//95 1105 | f 161//96 129//96 111//96 163//96 1106 | f 128//97 179//97 158//97 160//97 1107 | f 159//98 180//98 129//98 161//98 1108 | f 126//99 156//99 158//99 179//99 1109 | f 159//100 157//100 127//100 180//100 1110 | f 124//101 154//101 156//101 126//101 1111 | f 157//102 155//102 125//102 127//102 1112 | f 122//103 152//103 154//103 124//103 1113 | f 155//104 153//104 123//104 125//104 1114 | f 120//105 150//105 152//105 122//105 1115 | f 153//106 151//106 121//106 123//106 1116 | f 118//107 148//107 150//107 120//107 1117 | f 151//108 149//108 119//108 121//108 1118 | f 116//109 146//109 148//109 118//109 1119 | f 149//110 147//110 117//110 119//110 1120 | f 114//111 164//111 146//111 116//111 1121 | f 147//112 165//112 115//112 117//112 1122 | f 114//113 181//113 177//113 164//113 1123 | f 177//114 182//114 115//114 165//114 1124 | f 110//115 162//115 68//115 112//115 1125 | f 68//116 163//116 111//116 113//116 1126 | f 112//117 68//117 178//117 183//117 1127 | f 178//118 68//118 113//118 184//118 1128 | f 177//119 181//119 183//119 178//119 1129 | f 184//120 182//120 177//120 178//120 1130 | f 135//121 137//121 176//121 174//121 1131 | f 176//122 137//122 136//122 175//122 1132 | f 133//123 135//123 174//123 172//123 1133 | f 175//124 136//124 134//124 173//124 1134 | f 131//125 133//125 172//125 170//125 1135 | f 173//126 134//126 132//126 171//126 1136 | f 166//127 187//127 185//127 168//127 1137 | f 186//128 188//128 167//128 169//128 1138 | f 131//129 170//129 168//129 185//129 1139 | f 169//130 171//130 132//130 186//130 1140 | f 144//131 190//131 189//131 187//131 1141 | f 189//132 190//132 145//132 188//132 1142 | f 185//133 187//133 189//133 69//133 1143 | f 189//134 188//134 186//134 69//134 1144 | f 130//135 131//135 185//135 69//135 1145 | f 186//135 132//135 130//135 69//135 1146 | f 142//136 193//136 191//136 144//136 1147 | f 192//137 194//137 143//137 145//137 1148 | f 140//138 195//138 193//138 142//138 1149 | f 194//139 196//139 141//139 143//139 1150 | f 139//140 197//140 195//140 140//140 1151 | f 196//141 198//141 139//141 141//141 1152 | f 138//142 71//142 197//142 139//142 1153 | f 198//143 71//143 138//143 139//143 1154 | f 190//144 144//144 191//144 70//144 1155 | f 192//145 145//145 190//145 70//145 1156 | f 70//146 191//146 206//146 208//146 1157 | f 207//147 192//147 70//147 208//147 1158 | f 71//148 199//148 200//148 197//148 1159 | f 201//149 199//149 71//149 198//149 1160 | f 197//150 200//150 202//150 195//150 1161 | f 203//151 201//151 198//151 196//151 1162 | f 195//152 202//152 204//152 193//152 1163 | f 205//153 203//153 196//153 194//153 1164 | f 193//154 204//154 206//154 191//154 1165 | f 207//155 205//155 194//155 192//155 1166 | f 199//156 204//156 202//156 200//156 1167 | f 203//157 205//157 199//157 201//157 1168 | f 199//158 208//158 206//158 204//158 1169 | f 207//159 208//159 199//159 205//159 1170 | f 139//160 140//160 164//160 177//160 1171 | f 165//161 141//161 139//161 177//161 1172 | f 140//162 142//162 211//162 164//162 1173 | f 212//163 143//163 141//163 165//163 1174 | f 142//164 144//164 213//164 211//164 1175 | f 214//165 145//165 143//165 212//165 1176 | f 144//166 187//166 166//166 213//166 1177 | f 167//167 188//167 145//167 214//167 1178 | f 81//168 209//168 213//168 166//168 1179 | f 214//169 210//169 82//169 167//169 1180 | f 209//170 215//170 211//170 213//170 1181 | f 212//171 216//171 210//171 214//171 1182 | f 79//172 164//172 211//172 215//172 1183 | f 212//173 165//173 80//173 216//173 1184 | f 131//174 130//174 72//174 222//174 1185 | f 72//175 130//175 132//175 223//175 1186 | f 133//176 131//176 222//176 220//176 1187 | f 223//177 132//177 134//177 221//177 1188 | f 135//178 133//178 220//178 218//178 1189 | f 221//179 134//179 136//179 219//179 1190 | f 137//180 135//180 218//180 217//180 1191 | f 219//181 136//181 137//181 217//181 1192 | f 217//182 218//182 229//182 231//182 1193 | f 230//183 219//183 217//183 231//183 1194 | f 218//184 220//184 227//184 229//184 1195 | f 228//185 221//185 219//185 230//185 1196 | f 220//186 222//186 225//186 227//186 1197 | f 226//187 223//187 221//187 228//187 1198 | f 222//188 72//188 224//188 225//188 1199 | f 224//189 72//189 223//189 226//189 1200 | f 224//190 231//190 229//190 225//190 1201 | f 230//191 231//191 224//191 226//191 1202 | f 225//192 229//192 227//192 1203 | f 228//193 230//193 226//193 1204 | f 183//194 181//194 234//194 232//194 1205 | f 235//195 182//195 184//195 233//195 1206 | f 112//196 183//196 232//196 254//196 1207 | f 233//197 184//197 113//197 255//197 1208 | f 110//198 112//198 254//198 256//198 1209 | f 255//199 113//199 111//199 257//199 1210 | f 181//200 114//200 252//200 234//200 1211 | f 253//201 115//201 182//201 235//201 1212 | f 114//202 116//202 250//202 252//202 1213 | f 251//203 117//203 115//203 253//203 1214 | f 116//204 118//204 248//204 250//204 1215 | f 249//205 119//205 117//205 251//205 1216 | f 118//206 120//206 246//206 248//206 1217 | f 247//207 121//207 119//207 249//207 1218 | f 120//208 122//208 244//208 246//208 1219 | f 245//209 123//209 121//209 247//209 1220 | f 122//210 124//210 242//210 244//210 1221 | f 243//211 125//211 123//211 245//211 1222 | f 124//212 126//212 240//212 242//212 1223 | f 241//213 127//213 125//213 243//213 1224 | f 126//214 179//214 236//214 240//214 1225 | f 237//215 180//215 127//215 241//215 1226 | f 179//216 128//216 238//216 236//216 1227 | f 239//217 129//217 180//217 237//217 1228 | f 128//218 110//218 256//218 238//218 1229 | f 257//219 111//219 129//219 239//219 1230 | f 238//220 256//220 258//220 276//220 1231 | f 259//221 257//221 239//221 277//221 1232 | f 236//222 238//222 276//222 278//222 1233 | f 277//223 239//223 237//223 279//223 1234 | f 240//224 236//224 278//224 274//224 1235 | f 279//225 237//225 241//225 275//225 1236 | f 242//226 240//226 274//226 272//226 1237 | f 275//227 241//227 243//227 273//227 1238 | f 244//228 242//228 272//228 270//228 1239 | f 273//229 243//229 245//229 271//229 1240 | f 246//230 244//230 270//230 268//230 1241 | f 271//231 245//231 247//231 269//231 1242 | f 248//232 246//232 268//232 266//232 1243 | f 269//233 247//233 249//233 267//233 1244 | f 250//234 248//234 266//234 264//234 1245 | f 267//235 249//235 251//235 265//235 1246 | f 252//236 250//236 264//236 262//236 1247 | f 265//237 251//237 253//237 263//237 1248 | f 234//238 252//238 262//238 280//238 1249 | f 263//239 253//239 235//239 281//239 1250 | f 256//240 254//240 260//240 258//240 1251 | f 261//241 255//241 257//241 259//241 1252 | f 254//242 232//242 282//242 260//242 1253 | f 283//243 233//243 255//243 261//243 1254 | f 232//244 234//244 280//244 282//244 1255 | f 281//245 235//245 233//245 283//245 1256 | f 67//246 108//246 284//246 73//246 1257 | f 285//247 109//247 67//247 73//247 1258 | f 108//248 106//248 286//248 284//248 1259 | f 287//249 107//249 109//249 285//249 1260 | f 106//250 104//250 288//250 286//250 1261 | f 289//251 105//251 107//251 287//251 1262 | f 104//252 102//252 290//252 288//252 1263 | f 291//253 103//253 105//253 289//253 1264 | f 102//254 100//254 292//254 290//254 1265 | f 293//255 101//255 103//255 291//255 1266 | f 100//256 98//256 294//256 292//256 1267 | f 295//257 99//257 101//257 293//257 1268 | f 98//258 96//258 296//258 294//258 1269 | f 297//259 97//259 99//259 295//259 1270 | f 96//260 94//260 298//260 296//260 1271 | f 299//261 95//261 97//261 297//261 1272 | f 94//262 92//262 300//262 298//262 1273 | f 301//263 93//263 95//263 299//263 1274 | f 308//264 309//264 328//264 338//264 1275 | f 329//265 309//265 308//265 339//265 1276 | f 307//266 308//266 338//266 336//266 1277 | f 339//267 308//267 307//267 337//267 1278 | f 306//268 307//268 336//268 340//268 1279 | f 337//269 307//269 306//269 341//269 1280 | f 89//270 91//270 306//270 340//270 1281 | f 306//271 91//271 90//271 341//271 1282 | f 87//272 89//272 340//272 334//272 1283 | f 341//273 90//273 88//273 335//273 1284 | f 85//274 87//274 334//274 330//274 1285 | f 335//275 88//275 86//275 331//275 1286 | f 83//276 85//276 330//276 332//276 1287 | f 331//277 86//277 84//277 333//277 1288 | f 330//278 336//278 338//278 332//278 1289 | f 339//279 337//279 331//279 333//279 1290 | f 330//280 334//280 340//280 336//280 1291 | f 341//281 335//281 331//281 337//281 1292 | f 326//282 332//282 338//282 328//282 1293 | f 339//283 333//283 327//283 329//283 1294 | f 81//284 83//284 332//284 326//284 1295 | f 333//285 84//285 82//285 327//285 1296 | f 209//286 342//286 344//286 215//286 1297 | f 345//287 343//287 210//287 216//287 1298 | f 81//288 326//288 342//288 209//288 1299 | f 343//289 327//289 82//289 210//289 1300 | f 79//290 215//290 344//290 346//290 1301 | f 345//291 216//291 80//291 347//291 1302 | f 79//292 346//292 300//292 92//292 1303 | f 301//293 347//293 80//293 93//293 1304 | f 77//294 324//294 352//294 304//294 1305 | f 353//295 325//295 77//295 304//295 1306 | f 304//296 352//296 350//296 78//296 1307 | f 351//297 353//297 304//297 78//297 1308 | f 78//298 350//298 348//298 305//298 1309 | f 349//299 351//299 78//299 305//299 1310 | f 305//300 348//300 328//300 309//300 1311 | f 329//301 349//301 305//301 309//301 1312 | f 326//302 328//302 348//302 342//302 1313 | f 349//303 329//303 327//303 343//303 1314 | f 296//304 298//304 318//304 310//304 1315 | f 319//305 299//305 297//305 311//305 1316 | f 76//306 316//306 324//306 77//306 1317 | f 325//307 317//307 76//307 77//307 1318 | f 302//308 358//308 356//308 303//308 1319 | f 357//309 359//309 302//309 303//309 1320 | f 303//310 356//310 354//310 75//310 1321 | f 355//311 357//311 303//311 75//311 1322 | f 75//312 354//312 316//312 76//312 1323 | f 317//313 355//313 75//313 76//313 1324 | f 292//314 294//314 362//314 364//314 1325 | f 363//315 295//315 293//315 365//315 1326 | f 364//316 362//316 368//316 366//316 1327 | f 369//317 363//317 365//317 367//317 1328 | f 366//318 368//318 370//318 372//318 1329 | f 371//319 369//319 367//319 373//319 1330 | f 372//320 370//320 376//320 374//320 1331 | f 377//321 371//321 373//321 375//321 1332 | f 314//322 378//322 374//322 376//322 1333 | f 375//323 379//323 315//323 377//323 1334 | f 316//324 354//324 374//324 378//324 1335 | f 375//325 355//325 317//325 379//325 1336 | f 354//326 356//326 372//326 374//326 1337 | f 373//327 357//327 355//327 375//327 1338 | f 356//328 358//328 366//328 372//328 1339 | f 367//329 359//329 357//329 373//329 1340 | f 358//330 360//330 364//330 366//330 1341 | f 365//331 361//331 359//331 367//331 1342 | f 290//332 292//332 364//332 360//332 1343 | f 365//333 293//333 291//333 361//333 1344 | f 74//334 360//334 358//334 302//334 1345 | f 359//335 361//335 74//335 302//335 1346 | f 284//336 286//336 288//336 290//336 1347 | f 289//337 287//337 285//337 291//337 1348 | f 284//338 290//338 360//338 74//338 1349 | f 361//339 291//339 285//339 74//339 1350 | f 73//340 284//340 74//340 1351 | f 74//341 285//341 73//341 1352 | f 294//342 296//342 310//342 362//342 1353 | f 311//343 297//343 295//343 363//343 1354 | f 310//344 312//344 368//344 362//344 1355 | f 369//345 313//345 311//345 363//345 1356 | f 312//346 382//346 370//346 368//346 1357 | f 371//347 383//347 313//347 369//347 1358 | f 314//348 376//348 370//348 382//348 1359 | f 371//349 377//349 315//349 383//349 1360 | f 348//350 350//350 386//350 384//350 1361 | f 387//351 351//351 349//351 385//351 1362 | f 318//352 384//352 386//352 320//352 1363 | f 387//353 385//353 319//353 321//353 1364 | f 298//354 300//354 384//354 318//354 1365 | f 385//355 301//355 299//355 319//355 1366 | f 300//356 344//356 342//356 384//356 1367 | f 343//357 345//357 301//357 385//357 1368 | f 342//358 348//358 384//358 1369 | f 385//359 349//359 343//359 1370 | f 300//360 346//360 344//360 1371 | f 345//361 347//361 301//361 1372 | f 314//362 322//362 380//362 378//362 1373 | f 381//363 323//363 315//363 379//363 1374 | f 316//364 378//364 380//364 324//364 1375 | f 381//365 379//365 317//365 325//365 1376 | f 320//366 386//366 380//366 322//366 1377 | f 381//367 387//367 321//367 323//367 1378 | f 350//368 352//368 380//368 386//368 1379 | f 381//369 353//369 351//369 387//369 1380 | f 324//370 380//370 352//370 1381 | f 353//371 381//371 325//371 1382 | f 400//372 388//372 414//372 402//372 1383 | f 415//373 389//373 401//373 403//373 1384 | f 400//374 402//374 404//374 398//374 1385 | f 405//375 403//375 401//375 399//375 1386 | f 398//376 404//376 406//376 396//376 1387 | f 407//377 405//377 399//377 397//377 1388 | f 396//378 406//378 408//378 394//378 1389 | f 409//379 407//379 397//379 395//379 1390 | f 394//380 408//380 410//380 392//380 1391 | f 411//381 409//381 395//381 393//381 1392 | f 392//382 410//382 412//382 390//382 1393 | f 413//383 411//383 393//383 391//383 1394 | f 410//384 420//384 418//384 412//384 1395 | f 419//385 421//385 411//385 413//385 1396 | f 408//386 422//386 420//386 410//386 1397 | f 421//387 423//387 409//387 411//387 1398 | f 406//388 424//388 422//388 408//388 1399 | f 423//389 425//389 407//389 409//389 1400 | f 404//390 426//390 424//390 406//390 1401 | f 425//391 427//391 405//391 407//391 1402 | f 402//392 428//392 426//392 404//392 1403 | f 427//393 429//393 403//393 405//393 1404 | f 402//394 414//394 416//394 428//394 1405 | f 417//395 415//395 403//395 429//395 1406 | f 318//396 320//396 444//396 442//396 1407 | f 445//397 321//397 319//397 443//397 1408 | f 320//398 390//398 412//398 444//398 1409 | f 413//399 391//399 321//399 445//399 1410 | f 310//400 318//400 442//400 312//400 1411 | f 443//401 319//401 311//401 313//401 1412 | f 382//402 430//402 414//402 388//402 1413 | f 415//403 431//403 383//403 389//403 1414 | f 412//404 418//404 440//404 444//404 1415 | f 441//405 419//405 413//405 445//405 1416 | f 438//406 446//406 444//406 440//406 1417 | f 445//407 447//407 439//407 441//407 1418 | f 434//408 446//408 438//408 436//408 1419 | f 439//409 447//409 435//409 437//409 1420 | f 432//410 448//410 446//410 434//410 1421 | f 447//411 449//411 433//411 435//411 1422 | f 430//412 448//412 432//412 450//412 1423 | f 433//413 449//413 431//413 451//413 1424 | f 414//414 430//414 450//414 416//414 1425 | f 451//415 431//415 415//415 417//415 1426 | f 312//416 448//416 430//416 382//416 1427 | f 431//417 449//417 313//417 383//417 1428 | f 312//418 442//418 446//418 448//418 1429 | f 447//419 443//419 313//419 449//419 1430 | f 442//420 444//420 446//420 1431 | f 447//421 445//421 443//421 1432 | f 416//422 450//422 452//422 476//422 1433 | f 453//423 451//423 417//423 477//423 1434 | f 450//424 432//424 462//424 452//424 1435 | f 463//425 433//425 451//425 453//425 1436 | f 432//426 434//426 460//426 462//426 1437 | f 461//427 435//427 433//427 463//427 1438 | f 434//428 436//428 458//428 460//428 1439 | f 459//429 437//429 435//429 461//429 1440 | f 436//430 438//430 456//430 458//430 1441 | f 457//431 439//431 437//431 459//431 1442 | f 438//432 440//432 454//432 456//432 1443 | f 455//433 441//433 439//433 457//433 1444 | f 440//434 418//434 474//434 454//434 1445 | f 475//435 419//435 441//435 455//435 1446 | f 428//436 416//436 476//436 464//436 1447 | f 477//437 417//437 429//437 465//437 1448 | f 426//438 428//438 464//438 466//438 1449 | f 465//439 429//439 427//439 467//439 1450 | f 424//440 426//440 466//440 468//440 1451 | f 467//441 427//441 425//441 469//441 1452 | f 422//442 424//442 468//442 470//442 1453 | f 469//443 425//443 423//443 471//443 1454 | f 420//444 422//444 470//444 472//444 1455 | f 471//445 423//445 421//445 473//445 1456 | f 418//446 420//446 472//446 474//446 1457 | f 473//447 421//447 419//447 475//447 1458 | f 458//448 456//448 480//448 478//448 1459 | f 481//449 457//449 459//449 479//449 1460 | f 478//450 480//450 482//450 484//450 1461 | f 483//451 481//451 479//451 485//451 1462 | f 484//452 482//452 488//452 486//452 1463 | f 489//453 483//453 485//453 487//453 1464 | f 486//454 488//454 490//454 492//454 1465 | f 491//455 489//455 487//455 493//455 1466 | f 464//456 476//456 486//456 492//456 1467 | f 487//457 477//457 465//457 493//457 1468 | f 452//458 484//458 486//458 476//458 1469 | f 487//459 485//459 453//459 477//459 1470 | f 452//460 462//460 478//460 484//460 1471 | f 479//461 463//461 453//461 485//461 1472 | f 458//462 478//462 462//462 460//462 1473 | f 463//463 479//463 459//463 461//463 1474 | f 454//464 474//464 480//464 456//464 1475 | f 481//465 475//465 455//465 457//465 1476 | f 472//466 482//466 480//466 474//466 1477 | f 481//467 483//467 473//467 475//467 1478 | f 470//468 488//468 482//468 472//468 1479 | f 483//469 489//469 471//469 473//469 1480 | f 468//470 490//470 488//470 470//470 1481 | f 489//471 491//471 469//471 471//471 1482 | f 466//472 492//472 490//472 468//472 1483 | f 491//473 493//473 467//473 469//473 1484 | f 464//474 492//474 466//474 1485 | f 467//475 493//475 465//475 1486 | f 392//476 390//476 504//476 502//476 1487 | f 505//477 391//477 393//477 503//477 1488 | f 394//478 392//478 502//478 500//478 1489 | f 503//479 393//479 395//479 501//479 1490 | f 396//480 394//480 500//480 498//480 1491 | f 501//481 395//481 397//481 499//481 1492 | f 398//482 396//482 498//482 496//482 1493 | f 499//483 397//483 399//483 497//483 1494 | f 400//484 398//484 496//484 494//484 1495 | f 497//485 399//485 401//485 495//485 1496 | f 388//486 400//486 494//486 506//486 1497 | f 495//487 401//487 389//487 507//487 1498 | f 494//488 502//488 504//488 506//488 1499 | f 505//489 503//489 495//489 507//489 1500 | f 494//490 496//490 500//490 502//490 1501 | f 501//491 497//491 495//491 503//491 1502 | f 496//492 498//492 500//492 1503 | f 501//493 499//493 497//493 1504 | f 314//494 382//494 388//494 506//494 1505 | f 389//495 383//495 315//495 507//495 1506 | f 314//496 506//496 504//496 322//496 1507 | f 505//497 507//497 315//497 323//497 1508 | f 320//498 322//498 504//498 390//498 1509 | f 505//499 323//499 321//499 391//499 1510 | v -8.986787 0.000000 10.052135 1511 | v 11.013213 0.000000 10.052135 1512 | v -8.986787 0.000000 -9.947865 1513 | v 11.013213 0.000000 -9.947865 1514 | vn 0.000000 1.000000 0.000000 1515 | s off 1516 | f 508//500 509//500 511//500 510//500 1517 | -------------------------------------------------------------------------------- /opengl_tutorial.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | import pygame 4 | from OpenGL.GL import * 5 | from OpenGL.GLU import * 6 | import math 7 | import graphics 8 | 9 | class Cube(object): 10 | left_key = False 11 | right_key = False 12 | up_key = False 13 | down_key = False 14 | angle = 0 15 | cube_angle = 0 16 | #------------------------------------- 17 | def __init__(self): 18 | self.vertices = [] 19 | self.faces = [] 20 | self.rubik_id = graphics.load_texture("rubik.png") 21 | self.surface_id = graphics.load_texture("ConcreteTriangles.png") 22 | #---Coordinates----[x,y,z]----------------------------- 23 | self.coordinates = [0,0,0] 24 | self.ground = graphics.ObjLoader("plane.txt") 25 | self.pyramid = graphics.ObjLoader("scene.txt") 26 | self.cube = graphics.ObjLoader("cube.txt") 27 | #self.monkey = graphics.ObjLoader("monkey.txt") 28 | 29 | def render_scene(self): 30 | glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT) 31 | #glClearColor(0.7,0.9,1,1) 32 | glMatrixMode(GL_MODELVIEW) 33 | glLoadIdentity() 34 | 35 | #Add ambient light: 36 | glLightModelfv(GL_LIGHT_MODEL_AMBIENT,[0.2,0.2,0.2,1.0]) 37 | 38 | #Add positioned light: 39 | glLightfv(GL_LIGHT0,GL_DIFFUSE,[2,2,2,1]) 40 | glLightfv(GL_LIGHT0,GL_POSITION,[4,8,1,1]) 41 | 42 | glTranslatef(0,-0.5,0) 43 | 44 | gluLookAt(0,0,0, math.sin(math.radians(self.angle)),0,math.cos(math.radians(self.angle)) *-1, 0,1,0) 45 | 46 | glTranslatef(self.coordinates[0],self.coordinates[1],self.coordinates[2]) 47 | 48 | self.ground.render_texture(self.surface_id,((0,0),(2,0),(2,2),(0,2))) 49 | self.pyramid.render_scene() 50 | 51 | glTranslatef(-7.5,2,0) 52 | glRotatef(self.cube_angle,0,1,0) 53 | glRotatef(45,1,0,0) 54 | self.cube.render_texture(self.rubik_id,((0,0),(1,0),(1,1),(0,1))) 55 | 56 | #self.monkey.render_scene() 57 | 58 | def move_forward(self): 59 | self.coordinates[2] += 0.1 * math.cos(math.radians(self.angle)) 60 | self.coordinates[0] -= 0.1 * math.sin(math.radians(self.angle)) 61 | 62 | def move_back(self): 63 | self.coordinates[2] -= 0.1 * math.cos(math.radians(self.angle)) 64 | self.coordinates[0] += 0.1 * math.sin(math.radians(self.angle)) 65 | 66 | def move_left(self): 67 | self.coordinates[0] += 0.1 * math.cos(math.radians(self.angle)) 68 | self.coordinates[2] += 0.1 * math.sin(math.radians(self.angle)) 69 | 70 | def move_right(self): 71 | self.coordinates[0] -= 0.1 * math.cos(math.radians(self.angle)) 72 | self.coordinates[2] -= 0.1 * math.sin(math.radians(self.angle)) 73 | 74 | def rotate(self,n): 75 | if self.angle >= 360 or self.angle <= -360: 76 | self.angle = 0 77 | self.angle += n 78 | 79 | def update(self): 80 | if self.left_key: 81 | self.move_left() 82 | elif self.right_key: 83 | self.move_right() 84 | elif self.up_key: 85 | self.move_forward() 86 | elif self.down_key: 87 | self.move_back() 88 | 89 | pos = pygame.mouse.get_pos() 90 | if pos[0] < 75: 91 | self.rotate(-1.2) 92 | elif pos[0] > 565: 93 | self.rotate(1.2) 94 | 95 | if self.cube_angle >= 360: 96 | self.cube_angle = 0 97 | else: 98 | self.cube_angle += 0.5 99 | 100 | def keyup(self): 101 | self.left_key = False 102 | self.right_key = False 103 | self.up_key = False 104 | self.down_key = False 105 | 106 | def delete_texture(self): 107 | glDeleteTextures(self.rubik_id) 108 | glDeleteTextures(self.surface_id) 109 | 110 | def main(): 111 | pygame.init() 112 | pygame.display.set_mode((640,480),pygame.DOUBLEBUF|pygame.OPENGL) 113 | pygame.display.set_caption("PyOpenGL Tutorial") 114 | clock = pygame.time.Clock() 115 | done = False 116 | 117 | glMatrixMode(GL_PROJECTION) 118 | glLoadIdentity() 119 | gluPerspective(45,640.0/480.0,0.1,200.0) 120 | glEnable(GL_DEPTH_TEST) 121 | glEnable(GL_LIGHTING) 122 | glEnable(GL_LIGHT0) 123 | glEnable(GL_NORMALIZE) 124 | 125 | cube = Cube() 126 | #----------- Main Program Loop ------------------------------------- 127 | while not done: 128 | # --- Main event loop 129 | for event in pygame.event.get(): # User did something 130 | if event.type == pygame.QUIT: # If user clicked close 131 | done = True # Flag that we are done so we exit this loop 132 | 133 | if event.type == pygame.KEYDOWN: 134 | 135 | if event.key == pygame.K_LEFT or event.key == pygame.K_a: 136 | cube.move_left() 137 | cube.left_key = True 138 | elif event.key == pygame.K_RIGHT or event.key == pygame.K_d: 139 | cube.move_right() 140 | cube.right_key = True 141 | elif event.key == pygame.K_UP or event.key == pygame.K_w: 142 | cube.move_forward() 143 | cube.up_key = True 144 | elif event.key == pygame.K_DOWN or event.key == pygame.K_s: 145 | cube.move_back() 146 | cube.down_key = True 147 | 148 | if event.type == pygame.KEYUP: 149 | 150 | if event.key == pygame.K_LEFT or event.key == pygame.K_a: 151 | cube.keyup() 152 | elif event.key == pygame.K_RIGHT or event.key == pygame.K_d: 153 | cube.keyup() 154 | elif event.key == pygame.K_UP or event.key == pygame.K_w: 155 | cube.keyup() 156 | elif event.key == pygame.K_DOWN or event.key == pygame.K_s: 157 | cube.keyup() 158 | 159 | cube.update() 160 | cube.render_scene() 161 | 162 | pygame.display.flip() 163 | clock.tick(30) 164 | 165 | cube.delete_texture() 166 | pygame.quit() 167 | 168 | if __name__ == '__main__': 169 | main() 170 | 171 | -------------------------------------------------------------------------------- /plane.txt: -------------------------------------------------------------------------------- 1 | # Blender v2.71 (sub 0) OBJ File: '' 2 | # www.blender.org 3 | v -10.000000 0.000000 10.000000 4 | v 10.000000 0.000000 10.000000 5 | v -10.000000 0.000000 -10.000000 6 | v 10.000000 0.000000 -10.000000 7 | vn 0.000000 1.000000 0.000000 8 | s off 9 | f 1//1 2//1 4//1 3//1 10 | -------------------------------------------------------------------------------- /rubik.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/edward344/PyOpenGL-sample/a3fa28288e0baeea03c48db952f0f28d56348bd7/rubik.png -------------------------------------------------------------------------------- /scene.txt: -------------------------------------------------------------------------------- 1 | # Blender v2.71 (sub 0) OBJ File: '' 2 | # www.blender.org 3 | v 4.322037 0.011080 1.652115 4 | v 4.322037 0.011080 -2.515985 5 | v 8.490137 0.011080 -2.515985 6 | v 8.490137 0.011080 1.652115 7 | v 6.406087 4.179179 -0.431935 8 | vn -0.894400 0.447200 0.000000 9 | vn 0.000000 0.447200 -0.894400 10 | vn 0.894400 0.447200 0.000000 11 | vn 0.000000 0.447200 0.894400 12 | s off 13 | f 5//1 2//1 1//1 14 | f 5//2 3//2 2//2 15 | f 5//3 4//3 3//3 16 | f 5//4 1//4 4//4 17 | v 0.650051 0.266687 4.678606 18 | v 1.231883 1.510227 3.224274 19 | v 3.008645 1.723423 4.117397 20 | v 2.426812 0.479883 5.571728 21 | v -0.060295 1.818511 5.721320 22 | v 0.521538 3.062051 4.266989 23 | v 2.298299 3.275247 5.160111 24 | v 1.716466 2.031707 6.614442 25 | vn -0.888400 -0.106600 -0.446600 26 | vn 0.290900 0.621800 -0.727200 27 | vn 0.888400 0.106600 0.446600 28 | vn -0.290900 -0.621800 0.727200 29 | vn 0.355200 -0.775900 -0.521400 30 | vn -0.355200 0.775900 0.521400 31 | s off 32 | f 10//5 11//5 7//5 6//5 33 | f 11//6 12//6 8//6 7//6 34 | f 12//7 13//7 9//7 8//7 35 | f 13//8 10//8 6//8 9//8 36 | f 6//9 7//9 8//9 9//9 37 | f 13//10 12//10 11//10 10//10 38 | v -1.000000 0.000000 -3.759047 39 | v -1.000000 0.000000 -5.759047 40 | v 1.000000 0.000000 -5.759047 41 | v 1.000000 0.000000 -3.759047 42 | v -1.000000 2.000000 -3.759047 43 | v -1.000000 2.000000 -5.759047 44 | v 1.000000 2.000000 -5.759047 45 | v 1.000000 2.000000 -3.759047 46 | v 0.008551 3.663884 -4.634603 47 | vn -1.000000 0.000000 0.000000 48 | vn 0.000000 0.000000 -1.000000 49 | vn 1.000000 0.000000 0.000000 50 | vn 0.000000 0.000000 1.000000 51 | vn -0.855200 0.518400 0.000000 52 | vn 0.000000 0.465700 0.885000 53 | vn 0.000000 0.559900 -0.828500 54 | vn 0.859100 0.511900 0.000000 55 | s off 56 | f 18//11 19//11 15//11 14//11 57 | f 19//12 20//12 16//12 15//12 58 | f 20//13 21//13 17//13 16//13 59 | f 21//14 18//14 14//14 17//14 60 | f 19//15 18//15 22//15 61 | f 18//16 21//16 22//16 62 | f 20//17 19//17 22//17 63 | f 21//18 20//18 22//18 64 | --------------------------------------------------------------------------------