From 64ec35415ccdb47121c9117d0c98e68e3c5aab4f Mon Sep 17 00:00:00 2001 From: Vladislav Khorev Date: Sat, 1 Mar 2025 13:13:58 +0300 Subject: [PATCH] Working with scene and projection --- Renderer.cpp | 2 + TextModel.cpp | 7 +- cone001.txt | 2805 +++++++++++++++++++++++++++++++++++++++++++++++++ conus.bmp | Bin 0 -> 49206 bytes main.cpp | 140 ++- 5 files changed, 2936 insertions(+), 18 deletions(-) create mode 100644 cone001.txt create mode 100644 conus.bmp diff --git a/Renderer.cpp b/Renderer.cpp index da6eda1..bcec60d 100755 --- a/Renderer.cpp +++ b/Renderer.cpp @@ -618,6 +618,8 @@ namespace ZL { static const std::string vColor("vColor"); static const std::string vTexCoord("vTexCoord"); static const std::string vPosition("vPosition"); + + //glBindVertexArray(VertexRenderStruct.vao->getBuffer()); //Check if main thread, check if data is not empty... if (VertexRenderStruct.data.NormalData.size() > 0) diff --git a/TextModel.cpp b/TextModel.cpp index 025c5ae..bbb3979 100644 --- a/TextModel.cpp +++ b/TextModel.cpp @@ -186,11 +186,11 @@ namespace ZL result.PositionData.push_back(vertices[triangles[i][1]]); result.PositionData.push_back(vertices[triangles[i][2]]); - + /* result.NormalData.push_back(normals[triangles[i][0]]); result.NormalData.push_back(normals[triangles[i][1]]); result.NormalData.push_back(normals[triangles[i][2]]); - + */ result.TexCoordData.push_back(uvCoords[i][0]); result.TexCoordData.push_back(uvCoords[i][1]); result.TexCoordData.push_back(uvCoords[i][2]); @@ -205,10 +205,11 @@ namespace ZL result.PositionData[i].v[1] = tempVec.v[2]; result.PositionData[i].v[2] = tempVec.v[0]; + /* tempVec = result.NormalData[i]; result.NormalData[i].v[0] = tempVec.v[1]; result.NormalData[i].v[1] = tempVec.v[2]; - result.NormalData[i].v[2] = tempVec.v[0]; + result.NormalData[i].v[2] = tempVec.v[0];*/ } diff --git a/cone001.txt b/cone001.txt new file mode 100644 index 0000000..14c24c3 --- /dev/null +++ b/cone001.txt @@ -0,0 +1,2805 @@ +===Vertices: 200 +Vertex 0: +Vertex 1: +Vertex 2: +Vertex 3: +Vertex 4: +Vertex 5: +Vertex 6: +Vertex 7: +Vertex 8: +Vertex 9: +Vertex 10: +Vertex 11: +Vertex 12: +Vertex 13: +Vertex 14: +Vertex 15: +Vertex 16: +Vertex 17: +Vertex 18: +Vertex 19: +Vertex 20: +Vertex 21: +Vertex 22: +Vertex 23: +Vertex 24: +Vertex 25: +Vertex 26: +Vertex 27: +Vertex 28: +Vertex 29: +Vertex 30: +Vertex 31: +Vertex 32: +Vertex 33: +Vertex 34: +Vertex 35: +Vertex 36: +Vertex 37: +Vertex 38: +Vertex 39: +Vertex 40: +Vertex 41: +Vertex 42: +Vertex 43: +Vertex 44: +Vertex 45: +Vertex 46: +Vertex 47: +Vertex 48: +Vertex 49: +Vertex 50: +Vertex 51: +Vertex 52: +Vertex 53: +Vertex 54: +Vertex 55: +Vertex 56: +Vertex 57: +Vertex 58: +Vertex 59: +Vertex 60: +Vertex 61: +Vertex 62: +Vertex 63: +Vertex 64: +Vertex 65: +Vertex 66: +Vertex 67: +Vertex 68: +Vertex 69: +Vertex 70: +Vertex 71: +Vertex 72: +Vertex 73: +Vertex 74: +Vertex 75: +Vertex 76: +Vertex 77: +Vertex 78: +Vertex 79: +Vertex 80: +Vertex 81: +Vertex 82: +Vertex 83: +Vertex 84: +Vertex 85: +Vertex 86: +Vertex 87: +Vertex 88: +Vertex 89: +Vertex 90: +Vertex 91: +Vertex 92: +Vertex 93: +Vertex 94: +Vertex 95: +Vertex 96: +Vertex 97: +Vertex 98: +Vertex 99: +Vertex 100: +Vertex 101: +Vertex 102: +Vertex 103: +Vertex 104: +Vertex 105: +Vertex 106: +Vertex 107: +Vertex 108: +Vertex 109: +Vertex 110: +Vertex 111: +Vertex 112: +Vertex 113: +Vertex 114: +Vertex 115: +Vertex 116: +Vertex 117: +Vertex 118: +Vertex 119: +Vertex 120: +Vertex 121: +Vertex 122: +Vertex 123: +Vertex 124: +Vertex 125: +Vertex 126: +Vertex 127: +Vertex 128: +Vertex 129: +Vertex 130: +Vertex 131: +Vertex 132: +Vertex 133: +Vertex 134: +Vertex 135: +Vertex 136: +Vertex 137: +Vertex 138: +Vertex 139: +Vertex 140: +Vertex 141: +Vertex 142: +Vertex 143: +Vertex 144: +Vertex 145: +Vertex 146: +Vertex 147: +Vertex 148: +Vertex 149: +Vertex 150: +Vertex 151: +Vertex 152: +Vertex 153: +Vertex 154: +Vertex 155: +Vertex 156: +Vertex 157: +Vertex 158: +Vertex 159: +Vertex 160: +Vertex 161: +Vertex 162: +Vertex 163: +Vertex 164: +Vertex 165: +Vertex 166: +Vertex 167: +Vertex 168: +Vertex 169: +Vertex 170: +Vertex 171: +Vertex 172: +Vertex 173: +Vertex 174: +Vertex 175: +Vertex 176: +Vertex 177: +Vertex 178: +Vertex 179: +Vertex 180: +Vertex 181: +Vertex 182: +Vertex 183: +Vertex 184: +Vertex 185: +Vertex 186: +Vertex 187: +Vertex 188: +Vertex 189: +Vertex 190: +Vertex 191: +Vertex 192: +Vertex 193: +Vertex 194: +Vertex 195: +Vertex 196: +Vertex 197: +Vertex 198: +Vertex 199: +===UV Coordinates: +Face count: 400 +Face 0 +UV Count: 3 + UV + UV + UV +Face 1 +UV Count: 3 + UV + UV + UV +Face 2 +UV Count: 3 + UV + UV + UV +Face 3 +UV Count: 3 + UV + UV + UV +Face 4 +UV Count: 3 + UV + UV + UV +Face 5 +UV Count: 3 + UV + UV + UV +Face 6 +UV Count: 3 + UV + UV + UV +Face 7 +UV Count: 3 + UV + UV + UV +Face 8 +UV Count: 3 + UV + UV + UV +Face 9 +UV Count: 3 + UV + UV + UV +Face 10 +UV Count: 3 + UV + UV + UV +Face 11 +UV Count: 3 + UV + UV + UV +Face 12 +UV Count: 3 + UV + UV + UV +Face 13 +UV Count: 3 + UV + UV + UV +Face 14 +UV Count: 3 + UV + UV + UV +Face 15 +UV Count: 3 + UV + UV + UV +Face 16 +UV Count: 3 + UV + UV + UV +Face 17 +UV Count: 3 + UV + UV + UV +Face 18 +UV Count: 3 + UV + UV + UV +Face 19 +UV Count: 3 + UV + UV + UV +Face 20 +UV Count: 3 + UV + UV + UV +Face 21 +UV Count: 3 + UV + UV + UV +Face 22 +UV Count: 3 + UV + UV + UV +Face 23 +UV Count: 3 + UV + UV + UV +Face 24 +UV Count: 3 + UV + UV + UV +Face 25 +UV Count: 3 + UV + UV + UV +Face 26 +UV Count: 3 + UV + UV + UV +Face 27 +UV Count: 3 + UV + UV + UV +Face 28 +UV Count: 3 + UV + UV + UV +Face 29 +UV Count: 3 + UV + UV + UV +Face 30 +UV Count: 3 + UV + UV + UV +Face 31 +UV Count: 3 + UV + UV + UV +Face 32 +UV Count: 3 + UV + UV + UV +Face 33 +UV Count: 3 + UV + UV + UV +Face 34 +UV Count: 3 + UV + UV + UV +Face 35 +UV Count: 3 + UV + UV + UV +Face 36 +UV Count: 3 + UV + UV + UV +Face 37 +UV Count: 3 + UV + UV + UV +Face 38 +UV Count: 3 + UV + UV + UV +Face 39 +UV Count: 3 + UV + UV + UV +Face 40 +UV Count: 3 + UV + UV + UV +Face 41 +UV Count: 3 + UV + UV + UV +Face 42 +UV Count: 3 + UV + UV + UV +Face 43 +UV Count: 3 + UV + UV + UV +Face 44 +UV Count: 3 + UV + UV + UV +Face 45 +UV Count: 3 + UV + UV + UV +Face 46 +UV Count: 3 + UV + UV + UV +Face 47 +UV Count: 3 + UV + UV + UV +Face 48 +UV Count: 3 + UV + UV + UV +Face 49 +UV Count: 3 + UV + UV + UV +Face 50 +UV Count: 3 + UV + UV + UV +Face 51 +UV Count: 3 + UV + UV + UV +Face 52 +UV Count: 3 + UV + UV + UV +Face 53 +UV Count: 3 + UV + UV + UV +Face 54 +UV Count: 3 + UV + UV + UV +Face 55 +UV Count: 3 + UV + UV + UV +Face 56 +UV Count: 3 + UV + UV + UV +Face 57 +UV Count: 3 + UV + UV + UV +Face 58 +UV Count: 3 + UV + UV + UV +Face 59 +UV Count: 3 + UV + UV + UV +Face 60 +UV Count: 3 + UV + UV + UV +Face 61 +UV Count: 3 + UV + UV + UV +Face 62 +UV Count: 3 + UV + UV + UV +Face 63 +UV Count: 3 + UV + UV + UV +Face 64 +UV Count: 3 + UV + UV + UV +Face 65 +UV Count: 3 + UV + UV + UV +Face 66 +UV Count: 3 + UV + UV + UV +Face 67 +UV Count: 3 + UV + UV + UV +Face 68 +UV Count: 3 + UV + UV + UV +Face 69 +UV Count: 3 + UV + UV + UV +Face 70 +UV Count: 3 + UV + UV + UV +Face 71 +UV Count: 3 + UV + UV + UV +Face 72 +UV Count: 3 + UV + UV + UV +Face 73 +UV Count: 3 + UV + UV + UV +Face 74 +UV Count: 3 + UV + UV + UV +Face 75 +UV Count: 3 + UV + UV + UV +Face 76 +UV Count: 3 + UV + UV + UV +Face 77 +UV Count: 3 + UV + UV + UV +Face 78 +UV Count: 3 + UV + UV + UV +Face 79 +UV Count: 3 + UV + UV + UV +Face 80 +UV Count: 3 + UV + UV + UV +Face 81 +UV Count: 3 + UV + UV + UV +Face 82 +UV Count: 3 + UV + UV + UV +Face 83 +UV Count: 3 + UV + UV + UV +Face 84 +UV Count: 3 + UV + UV + UV +Face 85 +UV Count: 3 + UV + UV + UV +Face 86 +UV Count: 3 + UV + UV + UV +Face 87 +UV Count: 3 + UV + UV + UV +Face 88 +UV Count: 3 + UV + UV + UV +Face 89 +UV Count: 3 + UV + UV + UV +Face 90 +UV Count: 3 + UV + UV + UV +Face 91 +UV Count: 3 + UV + UV + UV +Face 92 +UV Count: 3 + UV + UV + UV +Face 93 +UV Count: 3 + UV + UV + UV +Face 94 +UV Count: 3 + UV + UV + UV +Face 95 +UV Count: 3 + UV + UV + UV +Face 96 +UV Count: 3 + UV + UV + UV +Face 97 +UV Count: 3 + UV + UV + UV +Face 98 +UV Count: 3 + UV + UV + UV +Face 99 +UV Count: 3 + UV + UV + UV +Face 100 +UV Count: 3 + UV + UV + UV +Face 101 +UV Count: 3 + UV + UV + UV +Face 102 +UV Count: 3 + UV + UV + UV +Face 103 +UV Count: 3 + UV + UV + UV +Face 104 +UV Count: 3 + UV + UV + UV +Face 105 +UV Count: 3 + UV + UV + UV +Face 106 +UV Count: 3 + UV + UV + UV +Face 107 +UV Count: 3 + UV + UV + UV +Face 108 +UV Count: 3 + UV + UV + UV +Face 109 +UV Count: 3 + UV + UV + UV +Face 110 +UV Count: 3 + UV + UV + UV +Face 111 +UV Count: 3 + UV + UV + UV +Face 112 +UV Count: 3 + UV + UV + UV +Face 113 +UV Count: 3 + UV + UV + UV +Face 114 +UV Count: 3 + UV + UV + UV +Face 115 +UV Count: 3 + UV + UV + UV +Face 116 +UV Count: 3 + UV + UV + UV +Face 117 +UV Count: 3 + UV + UV + UV +Face 118 +UV Count: 3 + UV + UV + UV +Face 119 +UV Count: 3 + UV + UV + UV +Face 120 +UV Count: 3 + UV + UV + UV +Face 121 +UV Count: 3 + UV + UV + UV +Face 122 +UV Count: 3 + UV + UV + UV +Face 123 +UV Count: 3 + UV + UV + UV +Face 124 +UV Count: 3 + UV + UV + UV +Face 125 +UV Count: 3 + UV + UV + UV +Face 126 +UV Count: 3 + UV + UV + UV +Face 127 +UV Count: 3 + UV + UV + UV +Face 128 +UV Count: 3 + UV + UV + UV +Face 129 +UV Count: 3 + UV + UV + UV +Face 130 +UV Count: 3 + UV + UV + UV +Face 131 +UV Count: 3 + UV + UV + UV +Face 132 +UV Count: 3 + UV + UV + UV +Face 133 +UV Count: 3 + UV + UV + UV +Face 134 +UV Count: 3 + UV + UV + UV +Face 135 +UV Count: 3 + UV + UV + UV +Face 136 +UV Count: 3 + UV + UV + UV +Face 137 +UV Count: 3 + UV + UV + UV +Face 138 +UV Count: 3 + UV + UV + UV +Face 139 +UV Count: 3 + UV + UV + UV +Face 140 +UV Count: 3 + UV + UV + UV +Face 141 +UV Count: 3 + UV + UV + UV +Face 142 +UV Count: 3 + UV + UV + UV +Face 143 +UV Count: 3 + UV + UV + UV +Face 144 +UV Count: 3 + UV + UV + UV +Face 145 +UV Count: 3 + UV + UV + UV +Face 146 +UV Count: 3 + UV + UV + UV +Face 147 +UV Count: 3 + UV + UV + UV +Face 148 +UV Count: 3 + UV + UV + UV +Face 149 +UV Count: 3 + UV + UV + UV +Face 150 +UV Count: 3 + UV + UV + UV +Face 151 +UV Count: 3 + UV + UV + UV +Face 152 +UV Count: 3 + UV + UV + UV +Face 153 +UV Count: 3 + UV + UV + UV +Face 154 +UV Count: 3 + UV + UV + UV +Face 155 +UV Count: 3 + UV + UV + UV +Face 156 +UV Count: 3 + UV + UV + UV +Face 157 +UV Count: 3 + UV + UV + UV +Face 158 +UV Count: 3 + UV + UV + UV +Face 159 +UV Count: 3 + UV + UV + UV +Face 160 +UV Count: 3 + UV + UV + UV +Face 161 +UV Count: 3 + UV + UV + UV +Face 162 +UV Count: 3 + UV + UV + UV +Face 163 +UV Count: 3 + UV + UV + UV +Face 164 +UV Count: 3 + UV + UV + UV +Face 165 +UV Count: 3 + UV + UV + UV +Face 166 +UV Count: 3 + UV + UV + UV +Face 167 +UV Count: 3 + UV + UV + UV +Face 168 +UV Count: 3 + UV + UV + UV +Face 169 +UV Count: 3 + UV + UV + UV +Face 170 +UV Count: 3 + UV + UV + UV +Face 171 +UV Count: 3 + UV + UV + UV +Face 172 +UV Count: 3 + UV + UV + UV +Face 173 +UV Count: 3 + UV + UV + UV +Face 174 +UV Count: 3 + UV + UV + UV +Face 175 +UV Count: 3 + UV + UV + UV +Face 176 +UV Count: 3 + UV + UV + UV +Face 177 +UV Count: 3 + UV + UV + UV +Face 178 +UV Count: 3 + UV + UV + UV +Face 179 +UV Count: 3 + UV + UV + UV +Face 180 +UV Count: 3 + UV + UV + UV +Face 181 +UV Count: 3 + UV + UV + UV +Face 182 +UV Count: 3 + UV + UV + UV +Face 183 +UV Count: 3 + UV + UV + UV +Face 184 +UV Count: 3 + UV + UV + UV +Face 185 +UV Count: 3 + UV + UV + UV +Face 186 +UV Count: 3 + UV + UV + UV +Face 187 +UV Count: 3 + UV + UV + UV +Face 188 +UV Count: 3 + UV + UV + UV +Face 189 +UV Count: 3 + UV + UV + UV +Face 190 +UV Count: 3 + UV + UV + UV +Face 191 +UV Count: 3 + UV + UV + UV +Face 192 +UV Count: 3 + UV + UV + UV +Face 193 +UV Count: 3 + UV + UV + UV +Face 194 +UV Count: 3 + UV + UV + UV +Face 195 +UV Count: 3 + UV + UV + UV +Face 196 +UV Count: 3 + UV + UV + UV +Face 197 +UV Count: 3 + UV + UV + UV +Face 198 +UV Count: 3 + UV + UV + UV +Face 199 +UV Count: 3 + UV + UV + UV +Face 200 +UV Count: 3 + UV + UV + UV +Face 201 +UV Count: 3 + UV + UV + UV +Face 202 +UV Count: 3 + UV + UV + UV +Face 203 +UV Count: 3 + UV + UV + UV +Face 204 +UV Count: 3 + UV + UV + UV +Face 205 +UV Count: 3 + UV + UV + UV +Face 206 +UV Count: 3 + UV + UV + UV +Face 207 +UV Count: 3 + UV + UV + UV +Face 208 +UV Count: 3 + UV + UV + UV +Face 209 +UV Count: 3 + UV + UV + UV +Face 210 +UV Count: 3 + UV + UV + UV +Face 211 +UV Count: 3 + UV + UV + UV +Face 212 +UV Count: 3 + UV + UV + UV +Face 213 +UV Count: 3 + UV + UV + UV +Face 214 +UV Count: 3 + UV + UV + UV +Face 215 +UV Count: 3 + UV + UV + UV +Face 216 +UV Count: 3 + UV + UV + UV +Face 217 +UV Count: 3 + UV + UV + UV +Face 218 +UV Count: 3 + UV + UV + UV +Face 219 +UV Count: 3 + UV + UV + UV +Face 220 +UV Count: 3 + UV + UV + UV +Face 221 +UV Count: 3 + UV + UV + UV +Face 222 +UV Count: 3 + UV + UV + UV +Face 223 +UV Count: 3 + UV + UV + UV +Face 224 +UV Count: 3 + UV + UV + UV +Face 225 +UV Count: 3 + UV + UV + UV +Face 226 +UV Count: 3 + UV + UV + UV +Face 227 +UV Count: 3 + UV + UV + UV +Face 228 +UV Count: 3 + UV + UV + UV +Face 229 +UV Count: 3 + UV + UV + UV +Face 230 +UV Count: 3 + UV + UV + UV +Face 231 +UV Count: 3 + UV + UV + UV +Face 232 +UV Count: 3 + UV + UV + UV +Face 233 +UV Count: 3 + UV + UV + UV +Face 234 +UV Count: 3 + UV + UV + UV +Face 235 +UV Count: 3 + UV + UV + UV +Face 236 +UV Count: 3 + UV + UV + UV +Face 237 +UV Count: 3 + UV + UV + UV +Face 238 +UV Count: 3 + UV + UV + UV +Face 239 +UV Count: 3 + UV + UV + UV +Face 240 +UV Count: 3 + UV + UV + UV +Face 241 +UV Count: 3 + UV + UV + UV +Face 242 +UV Count: 3 + UV + UV + UV +Face 243 +UV Count: 3 + UV + UV + UV +Face 244 +UV Count: 3 + UV + UV + UV +Face 245 +UV Count: 3 + UV + UV + UV +Face 246 +UV Count: 3 + UV + UV + UV +Face 247 +UV Count: 3 + UV + UV + UV +Face 248 +UV Count: 3 + UV + UV + UV +Face 249 +UV Count: 3 + UV + UV + UV +Face 250 +UV Count: 3 + UV + UV + UV +Face 251 +UV Count: 3 + UV + UV + UV +Face 252 +UV Count: 3 + UV + UV + UV +Face 253 +UV Count: 3 + UV + UV + UV +Face 254 +UV Count: 3 + UV + UV + UV +Face 255 +UV Count: 3 + UV + UV + UV +Face 256 +UV Count: 3 + UV + UV + UV +Face 257 +UV Count: 3 + UV + UV + UV +Face 258 +UV Count: 3 + UV + UV + UV +Face 259 +UV Count: 3 + UV + UV + UV +Face 260 +UV Count: 3 + UV + UV + UV +Face 261 +UV Count: 3 + UV + UV + UV +Face 262 +UV Count: 3 + UV + UV + UV +Face 263 +UV Count: 3 + UV + UV + UV +Face 264 +UV Count: 3 + UV + UV + UV +Face 265 +UV Count: 3 + UV + UV + UV +Face 266 +UV Count: 3 + UV + UV + UV +Face 267 +UV Count: 3 + UV + UV + UV +Face 268 +UV Count: 3 + UV + UV + UV +Face 269 +UV Count: 3 + UV + UV + UV +Face 270 +UV Count: 3 + UV + UV + UV +Face 271 +UV Count: 3 + UV + UV + UV +Face 272 +UV Count: 3 + UV + UV + UV +Face 273 +UV Count: 3 + UV + UV + UV +Face 274 +UV Count: 3 + UV + UV + UV +Face 275 +UV Count: 3 + UV + UV + UV +Face 276 +UV Count: 3 + UV + UV + UV +Face 277 +UV Count: 3 + UV + UV + UV +Face 278 +UV Count: 3 + UV + UV + UV +Face 279 +UV Count: 3 + UV + UV + UV +Face 280 +UV Count: 3 + UV + UV + UV +Face 281 +UV Count: 3 + UV + UV + UV +Face 282 +UV Count: 3 + UV + UV + UV +Face 283 +UV Count: 3 + UV + UV + UV +Face 284 +UV Count: 3 + UV + UV + UV +Face 285 +UV Count: 3 + UV + UV + UV +Face 286 +UV Count: 3 + UV + UV + UV +Face 287 +UV Count: 3 + UV + UV + UV +Face 288 +UV Count: 3 + UV + UV + UV +Face 289 +UV Count: 3 + UV + UV + UV +Face 290 +UV Count: 3 + UV + UV + UV +Face 291 +UV Count: 3 + UV + UV + UV +Face 292 +UV Count: 3 + UV + UV + UV +Face 293 +UV Count: 3 + UV + UV + UV +Face 294 +UV Count: 3 + UV + UV + UV +Face 295 +UV Count: 3 + UV + UV + UV +Face 296 +UV Count: 3 + UV + UV + UV +Face 297 +UV Count: 3 + UV + UV + UV +Face 298 +UV Count: 3 + UV + UV + UV +Face 299 +UV Count: 3 + UV + UV + UV +Face 300 +UV Count: 3 + UV + UV + UV +Face 301 +UV Count: 3 + UV + UV + UV +Face 302 +UV Count: 3 + UV + UV + UV +Face 303 +UV Count: 3 + UV + UV + UV +Face 304 +UV Count: 3 + UV + UV + UV +Face 305 +UV Count: 3 + UV + UV + UV +Face 306 +UV Count: 3 + UV + UV + UV +Face 307 +UV Count: 3 + UV + UV + UV +Face 308 +UV Count: 3 + UV + UV + UV +Face 309 +UV Count: 3 + UV + UV + UV +Face 310 +UV Count: 3 + UV + UV + UV +Face 311 +UV Count: 3 + UV + UV + UV +Face 312 +UV Count: 3 + UV + UV + UV +Face 313 +UV Count: 3 + UV + UV + UV +Face 314 +UV Count: 3 + UV + UV + UV +Face 315 +UV Count: 3 + UV + UV + UV +Face 316 +UV Count: 3 + UV + UV + UV +Face 317 +UV Count: 3 + UV + UV + UV +Face 318 +UV Count: 3 + UV + UV + UV +Face 319 +UV Count: 3 + UV + UV + UV +Face 320 +UV Count: 3 + UV + UV + UV +Face 321 +UV Count: 3 + UV + UV + UV +Face 322 +UV Count: 3 + UV + UV + UV +Face 323 +UV Count: 3 + UV + UV + UV +Face 324 +UV Count: 3 + UV + UV + UV +Face 325 +UV Count: 3 + UV + UV + UV +Face 326 +UV Count: 3 + UV + UV + UV +Face 327 +UV Count: 3 + UV + UV + UV +Face 328 +UV Count: 3 + UV + UV + UV +Face 329 +UV Count: 3 + UV + UV + UV +Face 330 +UV Count: 3 + UV + UV + UV +Face 331 +UV Count: 3 + UV + UV + UV +Face 332 +UV Count: 3 + UV + UV + UV +Face 333 +UV Count: 3 + UV + UV + UV +Face 334 +UV Count: 3 + UV + UV + UV +Face 335 +UV Count: 3 + UV + UV + UV +Face 336 +UV Count: 3 + UV + UV + UV +Face 337 +UV Count: 3 + UV + UV + UV +Face 338 +UV Count: 3 + UV + UV + UV +Face 339 +UV Count: 3 + UV + UV + UV +Face 340 +UV Count: 3 + UV + UV + UV +Face 341 +UV Count: 3 + UV + UV + UV +Face 342 +UV Count: 3 + UV + UV + UV +Face 343 +UV Count: 3 + UV + UV + UV +Face 344 +UV Count: 3 + UV + UV + UV +Face 345 +UV Count: 3 + UV + UV + UV +Face 346 +UV Count: 3 + UV + UV + UV +Face 347 +UV Count: 3 + UV + UV + UV +Face 348 +UV Count: 3 + UV + UV + UV +Face 349 +UV Count: 3 + UV + UV + UV +Face 350 +UV Count: 3 + UV + UV + UV +Face 351 +UV Count: 3 + UV + UV + UV +Face 352 +UV Count: 3 + UV + UV + UV +Face 353 +UV Count: 3 + UV + UV + UV +Face 354 +UV Count: 3 + UV + UV + UV +Face 355 +UV Count: 3 + UV + UV + UV +Face 356 +UV Count: 3 + UV + UV + UV +Face 357 +UV Count: 3 + UV + UV + UV +Face 358 +UV Count: 3 + UV + UV + UV +Face 359 +UV Count: 3 + UV + UV + UV +Face 360 +UV Count: 3 + UV + UV + UV +Face 361 +UV Count: 3 + UV + UV + UV +Face 362 +UV Count: 3 + UV + UV + UV +Face 363 +UV Count: 3 + UV + UV + UV +Face 364 +UV Count: 3 + UV + UV + UV +Face 365 +UV Count: 3 + UV + UV + UV +Face 366 +UV Count: 3 + UV + UV + UV +Face 367 +UV Count: 3 + UV + UV + UV +Face 368 +UV Count: 3 + UV + UV + UV +Face 369 +UV Count: 3 + UV + UV + UV +Face 370 +UV Count: 3 + UV + UV + UV +Face 371 +UV Count: 3 + UV + UV + UV +Face 372 +UV Count: 3 + UV + UV + UV +Face 373 +UV Count: 3 + UV + UV + UV +Face 374 +UV Count: 3 + UV + UV + UV +Face 375 +UV Count: 3 + UV + UV + UV +Face 376 +UV Count: 3 + UV + UV + UV +Face 377 +UV Count: 3 + UV + UV + UV +Face 378 +UV Count: 3 + UV + UV + UV +Face 379 +UV Count: 3 + UV + UV + UV +Face 380 +UV Count: 3 + UV + UV + UV +Face 381 +UV Count: 3 + UV + UV + UV +Face 382 +UV Count: 3 + UV + UV + UV +Face 383 +UV Count: 3 + UV + UV + UV +Face 384 +UV Count: 3 + UV + UV + UV +Face 385 +UV Count: 3 + UV + UV + UV +Face 386 +UV Count: 3 + UV + UV + UV +Face 387 +UV Count: 3 + UV + UV + UV +Face 388 +UV Count: 3 + UV + UV + UV +Face 389 +UV Count: 3 + UV + UV + UV +Face 390 +UV Count: 3 + UV + UV + UV +Face 391 +UV Count: 3 + UV + UV + UV +Face 392 +UV Count: 3 + UV + UV + UV +Face 393 +UV Count: 3 + UV + UV + UV +Face 394 +UV Count: 3 + UV + UV + UV +Face 395 +UV Count: 3 + UV + UV + UV +Face 396 +UV Count: 3 + UV + UV + UV +Face 397 +UV Count: 3 + UV + UV + UV +Face 398 +UV Count: 3 + UV + UV + UV +Face 399 +UV Count: 3 + UV + UV + UV +===Normals: +Vertex 0: Normal +Vertex 1: Normal +Vertex 2: Normal +Vertex 3: Normal +Vertex 4: Normal +Vertex 5: Normal +Vertex 6: Normal +Vertex 7: Normal +Vertex 8: Normal +Vertex 9: Normal +Vertex 10: Normal +Vertex 11: Normal +Vertex 12: Normal +Vertex 13: Normal +Vertex 14: Normal +Vertex 15: Normal +Vertex 16: Normal +Vertex 17: Normal +Vertex 18: Normal +Vertex 19: Normal +Vertex 20: Normal +Vertex 21: Normal +Vertex 22: Normal +Vertex 23: Normal +Vertex 24: Normal +Vertex 25: Normal +Vertex 26: Normal +Vertex 27: Normal +Vertex 28: Normal +Vertex 29: Normal +Vertex 30: Normal +Vertex 31: Normal +Vertex 32: Normal +Vertex 33: Normal +Vertex 34: Normal +Vertex 35: Normal +Vertex 36: Normal +Vertex 37: Normal +Vertex 38: Normal +Vertex 39: Normal +Vertex 40: Normal +Vertex 41: Normal +Vertex 42: Normal +Vertex 43: Normal +Vertex 44: Normal +Vertex 45: Normal +Vertex 46: Normal +Vertex 47: Normal +Vertex 48: Normal +Vertex 49: Normal +Vertex 50: Normal +Vertex 51: Normal +Vertex 52: Normal +Vertex 53: Normal +Vertex 54: Normal +Vertex 55: Normal +Vertex 56: Normal +Vertex 57: Normal +Vertex 58: Normal +Vertex 59: Normal +Vertex 60: Normal +Vertex 61: Normal +Vertex 62: Normal +Vertex 63: Normal +Vertex 64: Normal +Vertex 65: Normal +Vertex 66: Normal +Vertex 67: Normal +Vertex 68: Normal +Vertex 69: Normal +Vertex 70: Normal +Vertex 71: Normal +Vertex 72: Normal +Vertex 73: Normal +Vertex 74: Normal +Vertex 75: Normal +Vertex 76: Normal +Vertex 77: Normal +Vertex 78: Normal +Vertex 79: Normal +Vertex 80: Normal +Vertex 81: Normal +Vertex 82: Normal +Vertex 83: Normal +Vertex 84: Normal +Vertex 85: Normal +Vertex 86: Normal +Vertex 87: Normal +Vertex 88: Normal +Vertex 89: Normal +Vertex 90: Normal +Vertex 91: Normal +Vertex 92: Normal +Vertex 93: Normal +Vertex 94: Normal +Vertex 95: Normal +Vertex 96: Normal +Vertex 97: Normal +Vertex 98: Normal +Vertex 99: Normal +Vertex 100: Normal +Vertex 101: Normal +Vertex 102: Normal +Vertex 103: Normal +Vertex 104: Normal +Vertex 105: Normal +Vertex 106: Normal +Vertex 107: Normal +Vertex 108: Normal +Vertex 109: Normal +Vertex 110: Normal +Vertex 111: Normal +Vertex 112: Normal +Vertex 113: Normal +Vertex 114: Normal +Vertex 115: Normal +Vertex 116: Normal +Vertex 117: Normal +Vertex 118: Normal +Vertex 119: Normal +Vertex 120: Normal +Vertex 121: Normal +Vertex 122: Normal +Vertex 123: Normal +Vertex 124: Normal +Vertex 125: Normal +Vertex 126: Normal +Vertex 127: Normal +Vertex 128: Normal +Vertex 129: Normal +Vertex 130: Normal +Vertex 131: Normal +Vertex 132: Normal +Vertex 133: Normal +Vertex 134: Normal +Vertex 135: Normal +Vertex 136: Normal +Vertex 137: Normal +Vertex 138: Normal +Vertex 139: Normal +Vertex 140: Normal +Vertex 141: Normal +Vertex 142: Normal +Vertex 143: Normal +Vertex 144: Normal +Vertex 145: Normal +Vertex 146: Normal +Vertex 147: Normal +Vertex 148: Normal +Vertex 149: Normal +Vertex 150: Normal +Vertex 151: Normal +Vertex 152: Normal +Vertex 153: Normal +Vertex 154: Normal +Vertex 155: Normal +Vertex 156: Normal +Vertex 157: Normal +Vertex 158: Normal +Vertex 159: Normal +Vertex 160: Normal +Vertex 161: Normal +Vertex 162: Normal +Vertex 163: Normal +Vertex 164: Normal +Vertex 165: Normal +Vertex 166: Normal +Vertex 167: Normal +Vertex 168: Normal +Vertex 169: Normal +Vertex 170: Normal +Vertex 171: Normal +Vertex 172: Normal +Vertex 173: Normal +Vertex 174: Normal +Vertex 175: Normal +Vertex 176: Normal +Vertex 177: Normal +Vertex 178: Normal +Vertex 179: Normal +Vertex 180: Normal +Vertex 181: Normal +Vertex 182: Normal +Vertex 183: Normal +Vertex 184: Normal +Vertex 185: Normal +Vertex 186: Normal +Vertex 187: Normal +Vertex 188: Normal +Vertex 189: Normal +Vertex 190: Normal +Vertex 191: Normal +Vertex 192: Normal +Vertex 193: Normal +Vertex 194: Normal +Vertex 195: Normal +Vertex 196: Normal +Vertex 197: Normal +Vertex 198: Normal +Vertex 199: Normal +===Triangles: 400 +Triangle: [15, 21, 34] +Triangle: [32, 35, 16] +Triangle: [8, 47, 32] +Triangle: [24, 51, 55] +Triangle: [57, 26, 28] +Triangle: [7, 33, 25] +Triangle: [52, 58, 14] +Triangle: [38, 50, 34] +Triangle: [34, 3, 38] +Triangle: [34, 60, 49] +Triangle: [30, 34, 49] +Triangle: [39, 50, 18] +Triangle: [39, 25, 33] +Triangle: [59, 15, 30] +Triangle: [56, 58, 45] +Triangle: [39, 17, 36] +Triangle: [35, 31, 16] +Triangle: [55, 35, 46] +Triangle: [51, 1, 31] +Triangle: [10, 36, 9] +Triangle: [37, 18, 38] +Triangle: [2, 38, 3] +Triangle: [56, 6, 4] +Triangle: [5, 43, 40] +Triangle: [12, 42, 13] +Triangle: [7, 52, 14] +Triangle: [4, 15, 56] +Triangle: [59, 14, 58] +Triangle: [31, 44, 16] +Triangle: [1, 53, 31] +Triangle: [23, 40, 53] +Triangle: [53, 19, 44] +Triangle: [32, 27, 8] +Triangle: [16, 54, 32] +Triangle: [44, 41, 54] +Triangle: [54, 12, 27] +Triangle: [37, 46, 17] +Triangle: [56, 20, 43] +Triangle: [52, 20, 45] +Triangle: [11, 42, 52] +Triangle: [36, 46, 57] +Triangle: [2, 55, 37] +Triangle: [28, 36, 57] +Triangle: [46, 47, 57] +Triangle: [48, 14, 29] +Triangle: [29, 60, 48] +Triangle: [59, 49, 60] +Triangle: [19, 43, 20] +Triangle: [20, 41, 19] +Triangle: [60, 33, 48] +Triangle: [75, 69, 84] +Triangle: [85, 82, 70] +Triangle: [97, 8, 82] +Triangle: [101, 78, 105] +Triangle: [26, 107, 28] +Triangle: [83, 7, 25] +Triangle: [108, 102, 68] +Triangle: [100, 88, 84] +Triangle: [64, 84, 88] +Triangle: [110, 84, 99] +Triangle: [84, 80, 99] +Triangle: [100, 89, 72] +Triangle: [25, 89, 83] +Triangle: [69, 109, 80] +Triangle: [108, 106, 95] +Triangle: [71, 89, 86] +Triangle: [81, 85, 70] +Triangle: [85, 105, 96] +Triangle: [62, 101, 81] +Triangle: [86, 10, 9] +Triangle: [72, 87, 88] +Triangle: [88, 63, 64] +Triangle: [67, 106, 65] +Triangle: [93, 66, 90] +Triangle: [92, 12, 13] +Triangle: [102, 7, 68] +Triangle: [69, 65, 106] +Triangle: [68, 109, 108] +Triangle: [94, 81, 70] +Triangle: [103, 62, 81] +Triangle: [90, 77, 103] +Triangle: [73, 103, 94] +Triangle: [27, 82, 8] +Triangle: [104, 70, 82] +Triangle: [91, 94, 104] +Triangle: [12, 104, 27] +Triangle: [96, 87, 71] +Triangle: [74, 106, 93] +Triangle: [74, 102, 95] +Triangle: [92, 11, 102] +Triangle: [96, 86, 107] +Triangle: [105, 63, 87] +Triangle: [86, 28, 107] +Triangle: [97, 96, 107] +Triangle: [68, 98, 79] +Triangle: [110, 79, 98] +Triangle: [99, 109, 110] +Triangle: [93, 73, 74] +Triangle: [91, 74, 73] +Triangle: [83, 110, 98] +Triangle: [21, 119, 134] +Triangle: [135, 132, 120] +Triangle: [147, 112, 132] +Triangle: [151, 24, 155] +Triangle: [126, 157, 128] +Triangle: [133, 111, 125] +Triangle: [158, 152, 118] +Triangle: [150, 138, 134] +Triangle: [3, 134, 138] +Triangle: [160, 134, 149] +Triangle: [134, 130, 149] +Triangle: [150, 139, 122] +Triangle: [125, 139, 133] +Triangle: [119, 159, 130] +Triangle: [158, 156, 145] +Triangle: [121, 139, 136] +Triangle: [131, 135, 120] +Triangle: [135, 155, 146] +Triangle: [1, 151, 131] +Triangle: [136, 114, 113] +Triangle: [122, 137, 138] +Triangle: [138, 2, 3] +Triangle: [6, 156, 4] +Triangle: [143, 5, 140] +Triangle: [142, 116, 117] +Triangle: [152, 111, 118] +Triangle: [119, 4, 156] +Triangle: [118, 159, 158] +Triangle: [144, 131, 120] +Triangle: [153, 1, 131] +Triangle: [140, 23, 153] +Triangle: [123, 153, 144] +Triangle: [127, 132, 112] +Triangle: [154, 120, 132] +Triangle: [141, 144, 154] +Triangle: [116, 154, 127] +Triangle: [146, 137, 121] +Triangle: [124, 156, 143] +Triangle: [124, 152, 145] +Triangle: [142, 115, 152] +Triangle: [146, 136, 157] +Triangle: [155, 2, 137] +Triangle: [136, 128, 157] +Triangle: [147, 146, 157] +Triangle: [118, 148, 129] +Triangle: [160, 129, 148] +Triangle: [149, 159, 160] +Triangle: [143, 123, 124] +Triangle: [141, 124, 123] +Triangle: [133, 160, 148] +Triangle: [162, 75, 173] +Triangle: [171, 174, 163] +Triangle: [112, 186, 171] +Triangle: [78, 190, 194] +Triangle: [196, 126, 128] +Triangle: [111, 172, 125] +Triangle: [191, 197, 161] +Triangle: [177, 189, 173] +Triangle: [173, 64, 177] +Triangle: [173, 199, 188] +Triangle: [169, 173, 188] +Triangle: [178, 189, 165] +Triangle: [178, 125, 172] +Triangle: [198, 162, 169] +Triangle: [195, 197, 184] +Triangle: [178, 164, 175] +Triangle: [174, 170, 163] +Triangle: [194, 174, 185] +Triangle: [190, 62, 170] +Triangle: [114, 175, 113] +Triangle: [176, 165, 177] +Triangle: [63, 177, 64] +Triangle: [195, 67, 65] +Triangle: [66, 182, 179] +Triangle: [116, 181, 117] +Triangle: [111, 191, 161] +Triangle: [65, 162, 195] +Triangle: [198, 161, 197] +Triangle: [170, 183, 163] +Triangle: [62, 192, 170] +Triangle: [77, 179, 192] +Triangle: [192, 166, 183] +Triangle: [171, 127, 112] +Triangle: [163, 193, 171] +Triangle: [183, 180, 193] +Triangle: [193, 116, 127] +Triangle: [176, 185, 164] +Triangle: [195, 167, 182] +Triangle: [191, 167, 184] +Triangle: [115, 181, 191] +Triangle: [175, 185, 196] +Triangle: [63, 194, 176] +Triangle: [128, 175, 196] +Triangle: [185, 186, 196] +Triangle: [187, 161, 168] +Triangle: [168, 199, 187] +Triangle: [198, 188, 199] +Triangle: [166, 182, 167] +Triangle: [167, 180, 166] +Triangle: [199, 172, 187] +Triangle: [15, 0, 21] +Triangle: [32, 47, 35] +Triangle: [8, 26, 47] +Triangle: [24, 22, 51] +Triangle: [57, 47, 26] +Triangle: [7, 14, 33] +Triangle: [52, 45, 58] +Triangle: [38, 18, 50] +Triangle: [34, 21, 3] +Triangle: [34, 50, 60] +Triangle: [30, 15, 34] +Triangle: [39, 33, 50] +Triangle: [39, 10, 25] +Triangle: [59, 58, 15] +Triangle: [56, 15, 58] +Triangle: [39, 18, 17] +Triangle: [35, 51, 31] +Triangle: [55, 51, 35] +Triangle: [51, 22, 1] +Triangle: [10, 39, 36] +Triangle: [37, 17, 18] +Triangle: [2, 37, 38] +Triangle: [56, 43, 6] +Triangle: [5, 6, 43] +Triangle: [12, 41, 42] +Triangle: [7, 11, 52] +Triangle: [4, 0, 15] +Triangle: [59, 29, 14] +Triangle: [31, 53, 44] +Triangle: [1, 23, 53] +Triangle: [23, 5, 40] +Triangle: [53, 40, 19] +Triangle: [32, 54, 27] +Triangle: [16, 44, 54] +Triangle: [44, 19, 41] +Triangle: [54, 41, 12] +Triangle: [37, 55, 46] +Triangle: [56, 45, 20] +Triangle: [52, 42, 20] +Triangle: [11, 13, 42] +Triangle: [36, 17, 46] +Triangle: [2, 24, 55] +Triangle: [28, 9, 36] +Triangle: [46, 35, 47] +Triangle: [48, 33, 14] +Triangle: [29, 59, 60] +Triangle: [59, 30, 49] +Triangle: [19, 40, 43] +Triangle: [20, 42, 41] +Triangle: [60, 50, 33] +Triangle: [75, 61, 69] +Triangle: [85, 97, 82] +Triangle: [97, 26, 8] +Triangle: [101, 76, 78] +Triangle: [26, 97, 107] +Triangle: [83, 68, 7] +Triangle: [108, 95, 102] +Triangle: [100, 72, 88] +Triangle: [64, 75, 84] +Triangle: [110, 100, 84] +Triangle: [84, 69, 80] +Triangle: [100, 83, 89] +Triangle: [25, 10, 89] +Triangle: [69, 108, 109] +Triangle: [108, 69, 106] +Triangle: [71, 72, 89] +Triangle: [81, 101, 85] +Triangle: [85, 101, 105] +Triangle: [62, 76, 101] +Triangle: [86, 89, 10] +Triangle: [72, 71, 87] +Triangle: [88, 87, 63] +Triangle: [67, 93, 106] +Triangle: [93, 67, 66] +Triangle: [92, 91, 12] +Triangle: [102, 11, 7] +Triangle: [69, 61, 65] +Triangle: [68, 79, 109] +Triangle: [94, 103, 81] +Triangle: [103, 77, 62] +Triangle: [90, 66, 77] +Triangle: [73, 90, 103] +Triangle: [27, 104, 82] +Triangle: [104, 94, 70] +Triangle: [91, 73, 94] +Triangle: [12, 91, 104] +Triangle: [96, 105, 87] +Triangle: [74, 95, 106] +Triangle: [74, 92, 102] +Triangle: [92, 13, 11] +Triangle: [96, 71, 86] +Triangle: [105, 78, 63] +Triangle: [86, 9, 28] +Triangle: [97, 85, 96] +Triangle: [68, 83, 98] +Triangle: [110, 109, 79] +Triangle: [99, 80, 109] +Triangle: [93, 90, 73] +Triangle: [91, 92, 74] +Triangle: [83, 100, 110] +Triangle: [21, 0, 119] +Triangle: [135, 147, 132] +Triangle: [147, 126, 112] +Triangle: [151, 22, 24] +Triangle: [126, 147, 157] +Triangle: [133, 118, 111] +Triangle: [158, 145, 152] +Triangle: [150, 122, 138] +Triangle: [3, 21, 134] +Triangle: [160, 150, 134] +Triangle: [134, 119, 130] +Triangle: [150, 133, 139] +Triangle: [125, 114, 139] +Triangle: [119, 158, 159] +Triangle: [158, 119, 156] +Triangle: [121, 122, 139] +Triangle: [131, 151, 135] +Triangle: [135, 151, 155] +Triangle: [1, 22, 151] +Triangle: [136, 139, 114] +Triangle: [122, 121, 137] +Triangle: [138, 137, 2] +Triangle: [6, 143, 156] +Triangle: [143, 6, 5] +Triangle: [142, 141, 116] +Triangle: [152, 115, 111] +Triangle: [119, 0, 4] +Triangle: [118, 129, 159] +Triangle: [144, 153, 131] +Triangle: [153, 23, 1] +Triangle: [140, 5, 23] +Triangle: [123, 140, 153] +Triangle: [127, 154, 132] +Triangle: [154, 144, 120] +Triangle: [141, 123, 144] +Triangle: [116, 141, 154] +Triangle: [146, 155, 137] +Triangle: [124, 145, 156] +Triangle: [124, 142, 152] +Triangle: [142, 117, 115] +Triangle: [146, 121, 136] +Triangle: [155, 24, 2] +Triangle: [136, 113, 128] +Triangle: [147, 135, 146] +Triangle: [118, 133, 148] +Triangle: [160, 159, 129] +Triangle: [149, 130, 159] +Triangle: [143, 140, 123] +Triangle: [141, 142, 124] +Triangle: [133, 150, 160] +Triangle: [162, 61, 75] +Triangle: [171, 186, 174] +Triangle: [112, 126, 186] +Triangle: [78, 76, 190] +Triangle: [196, 186, 126] +Triangle: [111, 161, 172] +Triangle: [191, 184, 197] +Triangle: [177, 165, 189] +Triangle: [173, 75, 64] +Triangle: [173, 189, 199] +Triangle: [169, 162, 173] +Triangle: [178, 172, 189] +Triangle: [178, 114, 125] +Triangle: [198, 197, 162] +Triangle: [195, 162, 197] +Triangle: [178, 165, 164] +Triangle: [174, 190, 170] +Triangle: [194, 190, 174] +Triangle: [190, 76, 62] +Triangle: [114, 178, 175] +Triangle: [176, 164, 165] +Triangle: [63, 176, 177] +Triangle: [195, 182, 67] +Triangle: [66, 67, 182] +Triangle: [116, 180, 181] +Triangle: [111, 115, 191] +Triangle: [65, 61, 162] +Triangle: [198, 168, 161] +Triangle: [170, 192, 183] +Triangle: [62, 77, 192] +Triangle: [77, 66, 179] +Triangle: [192, 179, 166] +Triangle: [171, 193, 127] +Triangle: [163, 183, 193] +Triangle: [183, 166, 180] +Triangle: [193, 180, 116] +Triangle: [176, 194, 185] +Triangle: [195, 184, 167] +Triangle: [191, 181, 167] +Triangle: [115, 117, 181] +Triangle: [175, 164, 185] +Triangle: [63, 78, 194] +Triangle: [128, 113, 175] +Triangle: [185, 174, 186] +Triangle: [187, 172, 161] +Triangle: [168, 198, 199] +Triangle: [198, 169, 188] +Triangle: [166, 179, 182] +Triangle: [167, 181, 180] +Triangle: [199, 189, 172] diff --git a/conus.bmp b/conus.bmp new file mode 100644 index 0000000000000000000000000000000000000000..02b18887e962a598da694904ed727f209d4aea71 GIT binary patch literal 49206 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 literal 0 HcmV?d00001 diff --git a/main.cpp b/main.cpp index 19cffd8..2abc35f 100755 --- a/main.cpp +++ b/main.cpp @@ -26,6 +26,16 @@ namespace ZL int width = 0; int height = 0; + + float zoom = 10.0; + + bool leftPressed = false; + bool rightPressed = false; + bool upPressed = false; + bool downPressed = false; + + Vector3f cameraShift = {0,0,0}; + /* Vector2f birdStartPos; @@ -41,7 +51,8 @@ namespace ZL { std::shared_ptr testObjTexturePtr; std::shared_ptr roomTexturePtr; - + std::shared_ptr coneTexturePtr; + VertexDataStruct colorCubeMesh; VertexRenderStruct colorCubeMeshMutable; @@ -54,6 +65,9 @@ namespace ZL VertexDataStruct textMesh; VertexRenderStruct textMeshMutable; + VertexDataStruct coneMesh; + VertexRenderStruct coneMeshMutable; + } static SDL_Window* window = NULL; @@ -85,7 +99,7 @@ namespace ZL static const std::string vColorName = "vColor"; static const std::string textureUniformName = "Texture"; - glClearColor(0.0f, 0.1f, 0.0f, 1.0f); + glClearColor(0.3f, 0.3f, 0.3f, 1.0f); glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT); glViewport(0, 0, Env::width, Env::height); @@ -96,24 +110,33 @@ namespace ZL renderer.EnableVertexAttribArray(vPositionName); renderer.EnableVertexAttribArray(vTexCoordName); - renderer.PushPerspectiveProjectionMatrix(1.0 / 6.0, static_cast(Env::width) / static_cast(Env::height), 10, 50000); + renderer.PushPerspectiveProjectionMatrix(1.0 / 1.5, static_cast(Env::width) / static_cast(Env::height), 50, 10000); renderer.PushMatrix(); renderer.LoadIdentity(); - renderer.TranslateMatrix({ 0,0, -4000 }); - - float t = 0.7; + renderer.TranslateMatrix({ 0,0, -100* Env::zoom }); + + float t = 0.3; renderer.RotateMatrix(QuatFromRotateAroundX(t * M_PI / 2.0)); - GameObjects::textMeshMutable.AssignFrom(GameObjects::textMesh); - GameObjects::textMeshMutable.RefreshVBO(); + //GameObjects::textMeshMutable.AssignFrom(GameObjects::textMesh); + //GameObjects::textMeshMutable.RefreshVBO(); + glBindTexture(GL_TEXTURE_2D, GameObjects::coneTexturePtr->getTexID()); + renderer.DrawVertexRenderStruct(GameObjects::coneMeshMutable); + + renderer.TranslateMatrix(Env::cameraShift); glBindTexture(GL_TEXTURE_2D, GameObjects::roomTexturePtr->getTexID()); renderer.DrawVertexRenderStruct(GameObjects::textMeshMutable); + + + + + //renderer.RotateMatrix(QuatFromRotateAroundX(-M_PI / 2.0)); //renderer.RotateMatrix(QuatFromRotateAroundZ(-M_PI / 4.0)); @@ -204,6 +227,27 @@ namespace ZL } + void UpdateScene(size_t ms) + { + const float SPEED = 0.1f; + if (Env::leftPressed) + { + Env::cameraShift.v[0] += SPEED * ms; + } + if (Env::rightPressed) + { + Env::cameraShift.v[0] -= SPEED * ms; + } + + if (Env::upPressed) + { + Env::cameraShift.v[2] += SPEED * ms; + } + if (Env::downPressed) + { + Env::cameraShift.v[2] -= SPEED * ms; + } + } void ProcessTickCount() { @@ -219,11 +263,11 @@ namespace ZL { if (NewTickCount - LastTickCount > CONST_MAX_TIME_INTERVAL) { - //gs.UpdateScene(CONST_MAX_TIME_INTERVAL); //Limit game update speed to FPS + UpdateScene(CONST_MAX_TIME_INTERVAL); //Limit game update speed to FPS } else { - //gs.UpdateScene(NewTickCount - LastTickCount); + UpdateScene(NewTickCount - LastTickCount); } LastTickCount = NewTickCount; @@ -263,7 +307,8 @@ namespace ZL CheckGlError(); GameObjects::roomTexturePtr = std::make_shared(CreateTextureDataFromBmp24("./Kitchen_ceramics.bmp")); - + GameObjects::coneTexturePtr = std::make_shared(CreateTextureDataFromBmp24("./conus.bmp")); + GameObjects::colorCubeMesh = CreateCube3D(5.0); GameObjects::colorCubeMeshMutable.data = CreateCube3D(5.0); @@ -277,6 +322,15 @@ namespace ZL GameObjects::textMesh = LoadFromTextFile("./mesh001.txt"); + GameObjects::coneMesh = LoadFromTextFile("./cone001.txt"); + + GameObjects::coneMesh.Scale(200); + + GameObjects::textMeshMutable.AssignFrom(GameObjects::textMesh); + GameObjects::textMeshMutable.RefreshVBO(); + GameObjects::coneMeshMutable.AssignFrom(GameObjects::coneMesh); + GameObjects::coneMeshMutable.RefreshVBO(); + std::cout << "Hello test 4x" << std::endl; renderer.InitOpenGL(); @@ -309,18 +363,74 @@ namespace ZL if (event.type == SDL_QUIT) { ExitGameLoop = true; } - if (event.type == SDL_MOUSEBUTTONDOWN) - { + if (event.type == SDL_MOUSEBUTTONDOWN) { static int x = 0; GameObjects::bx.Interpolate(x); x = x + 2; } + if (event.type == SDL_MOUSEWHEEL) { + + static const float zoomstep = 1.0f; + if (event.wheel.y > 0) { + // Прокрутка вверх - увеличиваем zoom + Env::zoom -= zoomstep; + } + else if (event.wheel.y < 0) { + // Прокрутка вниз - уменьшаем zoom + Env::zoom += zoomstep; + } + // Ограничиваем zoom, чтобы он не стал отрицательным + if (Env::zoom < zoomstep) { + Env::zoom = zoomstep; + } + } + if (event.type == SDL_KEYDOWN) { + switch (event.key.keysym.sym) { + case SDLK_LEFT: + case SDLK_a: + Env::leftPressed = true; + break; + case SDLK_RIGHT: + case SDLK_d: + Env::rightPressed = true; + break; + case SDLK_UP: + case SDLK_w: + Env::upPressed = true; + break; + case SDLK_DOWN: + case SDLK_s: + Env::downPressed = true; + break; + } + + } + + if (event.type == SDL_KEYUP) { + switch (event.key.keysym.sym) { + case SDLK_LEFT: + case SDLK_a: + Env::leftPressed = false; + break; + case SDLK_RIGHT: + case SDLK_d: + Env::rightPressed = false; + break; + case SDLK_UP: + case SDLK_w: + Env::upPressed = false; + break; + case SDLK_DOWN: + case SDLK_s: + Env::downPressed = false; + break; + } + } } render(); - - }; + } };