- Timestamp:
- May 24, 2006, 1:24:39 PM (19 years ago)
- Location:
- branches/bsp_model/src/lib/graphics/importer
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/bsp_model/src/lib/graphics/importer/bsp_file.cc
r7596 r7801 25 25 #include "vector.h" 26 26 #include "util/loading/resource_manager.h" 27 #include "movie_player.h" 27 28 28 29 #include <SDL/SDL_endian.h> … … 45 46 int size; 46 47 struct stat results; 47 // name = "/root/data/Kanti175.bsp"; 48 48 49 49 50 if (stat( name , &results) == 0) { … … 393 394 this->Materials[i].mat->setSpecular(0.4,0.4,1.0); 394 395 //this->Materials[i]->setShininess(100.0); 395 this->Materials[i].mat->setTransparency(1.0);396 // this->Materials[i].mat->setTransparency(1.0); 396 397 this->Materials[i].mat->setDiffuseMap("pictures/ground.tga"); 397 398 this->Materials[i].mat->setAmbientMap("pictures/ground.tga"); 398 399 this->Materials[i].mat->setSpecularMap("pictures/ground.tga"); 399 400 this->Materials[i].alpha = false; 401 this->Materials[i].animated = false; 400 402 continue; 401 403 } 404 405 // Check for mov 406 strcpy(fileName, &this->textures[8+ 72*i]); 407 strcpy(ext, ".mov"); 408 strncat (fileName, ext, strlen(fileName)); 409 410 absFileName = ResourceManager::getFullName(fileName); 411 412 if(ResourceManager::isFile(absFileName)) { 413 PRINTF(0)("BSP FILE: gefunden . \n"); 414 this->Materials[i] = this->loadAVI(fileName); 415 continue; 416 } 402 417 418 // Check for avi 419 strcpy(fileName, &this->textures[8+ 72*i]); 420 strcpy(ext, ".avi"); 421 strncat (fileName, ext, strlen(fileName)); 422 423 absFileName = ResourceManager::getFullName(fileName); 424 425 if(ResourceManager::isFile(absFileName)) { 426 PRINTF(0)("BSP FILE: gefunden . \n"); 427 this->Materials[i] = this->loadAVI(fileName); 428 continue; 429 } 430 431 // Check for mpg 432 strcpy(fileName, &this->textures[8+ 72*i]); 433 strcpy(ext, ".mpg"); 434 strncat (fileName, ext, strlen(fileName)); 435 436 absFileName = ResourceManager::getFullName(fileName); 437 438 if(ResourceManager::isFile(absFileName)) { 439 PRINTF(0)("BSP FILE: gefunden . \n"); 440 this->Materials[i] = this->loadAVI(fileName); 441 continue; 442 } 403 443 404 444 // Check for tga … … 481 521 this->Materials[i].mat->setSpecular(0.4,0.4,0.4); 482 522 //this->Materials[i]->setShininess(100.0); 483 this->Materials[i].mat->setTransparency(1.0); 484 this->Materials[i].mat->setDiffuseMap("pictures/ground.tga"); 485 this->Materials[i].mat->setAmbientMap("pictures/ground.tga"); 486 this->Materials[i].mat->setSpecularMap("pictures/ground.tga"); 487 this->Materials[i].alpha = false; 523 //this->Materials[i].mat->setTransparency(1.0); 524 this->Materials[i].mat->setDiffuseMap("pictures/error_texture.png"); 525 this->Materials[i].mat->setAmbientMap("pictures/error_texture.png"); 526 this->Materials[i].mat->setSpecularMap("pictures/error_texture.png"); 527 this->Materials[i].alpha = true; 528 this->Materials[i].animated = false; 488 529 489 530 } … … 503 544 504 545 Material* tmp = new Material(); 505 tmp->setDiffuse(1.0,1.0,1.0);506 tmp->setAmbient(1.0,1.0,1.0 );546 tmp->setDiffuse(1.0,1.0,1.0); 547 tmp->setAmbient(1.0,1.0,1.0 ); 507 548 tmp->setSpecular(1.0,1.0,1.0); 508 549 // tmp->setShininess(.5); 509 // tmp->setTransparency( 1.0);550 // tmp->setTransparency(0.0); 510 551 511 552 tmp->setDiffuseMap(mat); 512 553 513 554 tmpAMat.mat = tmp; 514 555 tmpAMat.animated = false; 556 return tmpAMat; 557 } 558 559 AMat BspFile::loadAVI(char* mat) 560 { 561 AMat tmpAMat; 562 563 564 MoviePlayer * testMC = new MoviePlayer(mat); 565 testMC->start(0); 566 567 //Material* tmp = new Material(); 568 // tmp->setDiffuse(1.0,1.0,1.0); 569 //tmp->setAmbient(1.0,1.0,1.0 ); 570 //tmp->setSpecular(1.0,1.0,1.0); 571 // tmp->setShininess(.5);tmpAMat 572 // tmp->setTransparency(0.0); 573 574 //tmp->setDiffuseMap(mat); 575 576 tmpAMat.aviMat = testMC; 577 tmpAMat.animated = true; 578 tmpAMat.alpha = true; 515 579 return tmpAMat; 516 580 } … … 533 597 scale*=255.0; 534 598 sc*=scale; 535 if(sc <= 205)536 ((unsigned char *)(&lightMapTexture))[i] = (unsigned char)sc + 50;599 if(sc <= 180) 600 ((unsigned char *)(&lightMapTexture))[i] = (unsigned char)sc + 75; 537 601 else 538 602 ((unsigned char *)(&lightMapTexture))[i] = (unsigned char)sc; … … 595 659 int level = 7; 596 660 int level1 = 8; 597 int size0 = SDL_SwapLE32(Face->size[0]);598 int size1 = SDL_SwapLE32(Face->size[1]);661 int size0 = (Face->size[0]); 662 int size1 = (Face->size[1]); 599 663 // For each patch... 600 664 for(int i = 0; i < ( size0 - 1) ; i+=2) { … … 609 673 for(int k = 0; k < 3; k++) { 610 674 for(int l = 0; l < 3; l++) { 611 controls[k +3*l]. position[0] = SDL_SwapLE32( BspVrtx[Face->vertex + (j * size0)+ i + l+ size0*k].position[0]);612 controls[k +3*l]. position[1] = SDL_SwapLE32( BspVrtx[Face->vertex + (j * size0)+ i +l+ size0*k].position[1]);613 controls[k +3*l]. position[2] = SDL_SwapLE32( BspVrtx[Face->vertex + (j * size0)+ i + l+ size0*k].position[2]); /*Face->n_vertexes*/614 615 controlsTmp[2-k +6-3*l]. position[0] = SDL_SwapLE32( BspVrtx[Face->vertex +( j * size0)+ i + l+ size0*k].position[0]);616 controlsTmp[2-k +6-3*l]. position[1] = SDL_SwapLE32( BspVrtx[Face->vertex + (j * size0)+ i +l+ size0*k].position[1]);617 controlsTmp[2-k +6-3*l]. position[2] = SDL_SwapLE32( BspVrtx[Face->vertex + (j * size0)+ i + l+ size0*k].position[2]); /*Face->n_vertexes*/618 619 VControls[k +3*l]. position[0] = SDL_SwapLE32( BspVrtx[Face->vertex +( j * size0)+ i + l+ size0*k].position[0]);620 VControls[k +3*l]. position[1] = SDL_SwapLE32( BspVrtx[Face->vertex + (j * size0)+ i +l+ size0*k].position[1]);621 VControls[k +3*l]. position[2] = SDL_SwapLE32( BspVrtx[Face->vertex + (j * size0)+ i + l+ size0*k].position[2]);622 623 VControls[k +3*l]. normal[0] = SDL_SwapLE32( BspVrtx[Face->vertex +( j * size0)+ i + l+ size0*k].normal[0]);624 VControls[k +3*l]. normal[1] = SDL_SwapLE32( BspVrtx[Face->vertex + (j * size0)+ i +l+ size0*k].normal[1]);625 VControls[k +3*l]. normal[2] = SDL_SwapLE32( BspVrtx[Face->vertex + (j * size0)+ i + l+ size0*k].normal[2]);626 627 VControls[k +3*l]. texcoord[0][0]= SDL_SwapLE32( BspVrtx[Face->vertex +( j * size0)+ i + l+ size0*k].texcoord[0][0]);628 VControls[k +3*l]. texcoord[0][1] = SDL_SwapLE32( BspVrtx[Face->vertex + (j * size0)+ i +l+ size0*k].texcoord[0][1]);629 VControls[k +3*l]. texcoord[1][0] = SDL_SwapLE32( BspVrtx[Face->vertex +( j * size0)+ i + l+ size0*k].texcoord[1][0]);630 VControls[k +3*l]. texcoord[1][1] = SDL_SwapLE32( BspVrtx[Face->vertex + (j * size0)+ i +l+ size0*k].texcoord[1][1]);675 controls[k +3*l]. position[0] = ( BspVrtx[Face->vertex + (j * size0)+ i + l+ size0*k].position[0]); 676 controls[k +3*l]. position[1] = ( BspVrtx[Face->vertex + (j * size0)+ i +l+ size0*k].position[1]); 677 controls[k +3*l]. position[2] = ( BspVrtx[Face->vertex + (j * size0)+ i + l+ size0*k].position[2]); /*Face->n_vertexes*/ 678 679 controlsTmp[2-k +6-3*l]. position[0] = ( BspVrtx[Face->vertex +( j * size0)+ i + l+ size0*k].position[0]); 680 controlsTmp[2-k +6-3*l]. position[1] = ( BspVrtx[Face->vertex + (j * size0)+ i +l+ size0*k].position[1]); 681 controlsTmp[2-k +6-3*l]. position[2] = ( BspVrtx[Face->vertex + (j * size0)+ i + l+ size0*k].position[2]); /*Face->n_vertexes*/ 682 683 VControls[k +3*l]. position[0] = ( BspVrtx[Face->vertex +( j * size0)+ i + l+ size0*k].position[0]); 684 VControls[k +3*l]. position[1] = ( BspVrtx[Face->vertex + (j * size0)+ i +l+ size0*k].position[1]); 685 VControls[k +3*l]. position[2] = ( BspVrtx[Face->vertex + (j * size0)+ i + l+ size0*k].position[2]); 686 687 VControls[k +3*l]. normal[0] = ( BspVrtx[Face->vertex +( j * size0)+ i + l+ size0*k].normal[0]); 688 VControls[k +3*l]. normal[1] = ( BspVrtx[Face->vertex + (j * size0)+ i +l+ size0*k].normal[1]); 689 VControls[k +3*l]. normal[2] = ( BspVrtx[Face->vertex + (j * size0)+ i + l+ size0*k].normal[2]); 690 691 VControls[k +3*l]. texcoord[0][0]= ( BspVrtx[Face->vertex +( j * size0)+ i + l+ size0*k].texcoord[0][0]); 692 VControls[k +3*l]. texcoord[0][1] = ( BspVrtx[Face->vertex + (j * size0)+ i +l+ size0*k].texcoord[0][1]); 693 VControls[k +3*l]. texcoord[1][0] = ( BspVrtx[Face->vertex +( j * size0)+ i + l+ size0*k].texcoord[1][0]); 694 VControls[k +3*l]. texcoord[1][1] = ( BspVrtx[Face->vertex + (j * size0)+ i +l+ size0*k].texcoord[1][1]); 631 695 632 696 … … 911 975 //Face->n_meshverts = sz; 912 976 } 977 978 void BspFile::swapAllBspCoordinates() 979 { 980 981 } 982 983 void BspFile::swapCoords((int *) array) 984 { 985 986 } 987 988 void BspFile::swapCoords((float *) array) 989 { 990 991 } 992 -
branches/bsp_model/src/lib/graphics/importer/bsp_file.h
r7596 r7801 17 17 class Vector; 18 18 class Material; 19 class MoviePlayer; 19 20 class VertexArrayModel; 21 20 22 21 23 typedef struct … … 118 120 { 119 121 Material* mat; 122 MoviePlayer* aviMat; 120 123 bool alpha; 124 bool animated; 121 125 } 122 126 AMat; … … 148 152 BspTreeNode* get_root(); 149 153 AMat loadMat( char* mat ); 150 154 AMat loadAVI(char * mat); 155 151 156 152 157 private: … … 197 202 unsigned int whiteLightMap; 198 203 unsigned char whiteTexture[3]; 204 void swapAllBspCoordinates(); 205 void swapCoords(int * array); 206 void swapCoords(float * array); 199 207 SDL_Surface* testSurf; 200 208 209 210 201 211 }; 202 212 -
branches/bsp_model/src/lib/graphics/importer/bsp_manager.cc
r7596 r7801 30 30 #include <vector> 31 31 #include <deque> 32 32 #include "movie_player.h" 33 33 34 34 … … 88 88 89 89 this->cam = State::getCameraTargetNode()->getAbsCoor(); 90 //this->checkCollision(this->root, &this->cam); //!< Test Collision Detection90 // this->checkCollision(this->root, &this->cam); //!< Test Collision Detection 91 91 this->outputStartsOut = true; 92 92 this->outputAllSolid = false; 93 93 this->outputFraction = 1.0f; 94 94 95 //this->checkCollisionRay(this->root,0.0f,1.0f, &(State::getCameraTargetNode()->getLastAbsCoor()), &this->cam);95 this->checkCollisionRay(this->root,0.0f,1.0f, &(State::getCameraTargetNode()->getLastAbsCoor()), &this->cam); 96 96 97 97 if(this->outputFraction != 1.0f || this->outputAllSolid ) this->drawDebugCube(&this->cam); 98 98 99 if ( false ||viscluster < 0 || ((int *)(this->bspFile->header))[35] == 0 ) //!< if (sizeof(Visdata) == 0)99 if ( viscluster < 0 || ((int *)(this->bspFile->header))[35] == 0 ) //!< if (sizeof(Visdata) == 0) 100 100 { 101 101 … … 112 112 /** Do Frustum culling and draw 'em all **/ 113 113 bool inFrustum = true; 114 float dMins; 115 float dMaxs; 114 116 115 Vector dir; 117 116 dir.x = this->cam.x - State::getCameraTargetNode()->getLastAbsCoor().x; … … 120 119 float dist = dir.x*this->cam.x +dir.y*this->cam.y +dir.z*this->cam.z; 121 120 //if(dist < 0) dist = -dist; 122 dMins = dir.x*(float)curLeaf.mins[0] +dir.y*(float)curLeaf.mins[1] +dir.z*(float)curLeaf.mins[2];123 dMaxs = dir.x*(float)curLeaf.maxs[0] +dir.y*(float)curLeaf.maxs[1] +dir.z*(float)curLeaf.maxs[2];121 const float dMins = dir.x*(float)curLeaf.mins[0] +dir.y*(float)curLeaf.mins[1] +dir.z*(float)curLeaf.mins[2] - dist ; 122 const float dMaxs = dir.x*(float)curLeaf.maxs[0] +dir.y*(float)curLeaf.maxs[1] +dir.z*(float)curLeaf.maxs[2] - dist ; 124 123 125 if(dMins < - 100.0 && dMaxs < -100.0)124 if(dMins < -30.0 && dMaxs < -30.0) 126 125 { 127 continue; 126 //continue; 127 } 128 if( (this->cam - Vector(curLeaf.mins[0],curLeaf.mins[1], curLeaf.mins[2])).len() > 3000 && (this->cam - Vector(curLeaf.maxs[0],curLeaf.maxs[1], curLeaf.maxs[2])).len() > 3000) 129 { 130 //continue; 128 131 } 129 132 … … 176 179 const float dMaxs = dir.x*(float)curLeaf.maxs[0] +dir.y*(float)curLeaf.maxs[1] +dir.z*(float)curLeaf.maxs[2] - dist; 177 180 178 if(dMins < -1 00.0 && dMaxs < -100.0)181 if(dMins < -150.0 && dMaxs < -150.0) 179 182 { 180 183 continue; … … 208 211 this->trasparent.pop_back(); 209 212 } 210 213 glActiveTextureARB(GL_TEXTURE1_ARB); 214 glBindTexture(GL_TEXTURE_2D, this->bspFile->whiteLightMap); 215 glEnable(GL_TEXTURE_2D); 211 216 212 217 }//draw … … 220 225 int stride = sizeof(BspVertex); // sizeof(Vertex) 221 226 int offset = curFace.vertex; 222 227 if (curFace.effect != -1) return; 223 228 // PRINTF(0)("BSP Manager: "); 224 229 // PRINTF(0)("BSP Manager: type: %i \n", curFace.texture); … … 229 234 return; 230 235 } 231 if(curFace.type == 3) return;232 // if(this->bspFile->Materials[curFace.texture] != NULL)236 if(curFace.type != 1) return; 237 if((char*)(this->bspFile->textures)[curFace.texture*72]== 0) return; 233 238 234 239 if(this->lastTex != curFace.texture) { 240 if(this->bspFile->Materials[curFace.texture].animated) 241 { 242 glBlendFunc(GL_ONE,GL_ONE_MINUS_SRC_COLOR); 243 glEnable(GL_BLEND); 244 if(this->bspFile->Materials[curFace.texture].aviMat->getStatus() == 2) this->bspFile->Materials[curFace.texture].aviMat->start(0); 245 this->bspFile->Materials[curFace.texture].aviMat->tick(0.005); 246 int n = this->bspFile->Materials[curFace.texture].aviMat->getTexture(); 247 glActiveTextureARB(GL_TEXTURE0_ARB); 248 glBindTexture(GL_TEXTURE_2D, n ); 249 glDisable(GL_BLEND); 250 } 251 else 252 { 235 253 this->bspFile->Materials[curFace.texture].mat->select(); 236 254 this->lastTex = curFace.texture; 255 } 237 256 } 238 257 … … 247 266 } 248 267 268 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 269 249 270 // glColor4f(3.0,3.0,3.0,1.0); 250 271 glEnableClientState(GL_VERTEX_ARRAY ); … … 258 279 glClientActiveTextureARB(GL_TEXTURE0_ARB); 259 280 glTexCoordPointer(2, GL_FLOAT, stride, &(curVertex[offset].texcoord[0])); 260 glEnableClientState(GL_TEXTURE_COORD_ARRAY);281 //glEnableClientState(GL_TEXTURE_COORD_ARRAY); 261 282 262 283 glClientActiveTextureARB(GL_TEXTURE1_ARB); … … 273 294 glDisableClientState(GL_TEXTURE1_ARB); 274 295 glDisableClientState(GL_VERTEX_ARRAY ); 275 //glDisableClientState(GL_TEXTURE_COORD_ARRAY );296 glDisableClientState(GL_TEXTURE_COORD_ARRAY ); 276 297 glDisableClientState(GL_NORMAL_ARRAY ); 277 298 // glDisableClientState(GL_COLOR_ARRAY); … … 330 351 this->lastTex = Face->texture; 331 352 } 332 353 if (Face->effect != -1) return; 333 354 334 355 … … 344 365 //glColor4f(3.0,3.0,3.0,1.0); 345 366 346 //glEnable( GL_AUTO_NORMAL); 367 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 368 glEnable( GL_AUTO_NORMAL); 347 369 glEnableClientState(GL_VERTEX_ARRAY ); 348 370 glEnableClientState(GL_TEXTURE_COORD_ARRAY ); 349 for(int i = 0; i < Face->n_meshverts ; i++) {350 371 for(int i = Face->n_meshverts -1; i >=0 ; i--) { 372 //glFrontFace(GL_CW); 351 373 //PRINTF(0)("BSP Manager: Face->size[0]: %i . \n", Face->size[0]); 352 374 353 375 354 glEnableClientState(GL_NORMAL_ARRAY );376 //glEnableClientState(GL_NORMAL_ARRAY ); 355 377 356 378 glVertexPointer(3, GL_FLOAT,44, &((((BspVertex*)(this->bspFile->patchVertice))[8*8*(Face->meshvert+i)]).position[0])); … … 358 380 359 381 glClientActiveTextureARB(GL_TEXTURE0_ARB); 382 glEnableClientState(GL_TEXTURE_COORD_ARRAY); 360 383 glTexCoordPointer(2, GL_FLOAT, 44, &((((BspVertex*)(this->bspFile->patchVertice))[8*8*(Face->meshvert+i)]).texcoord[0][0])); 361 glEnableClientState(GL_TEXTURE_COORD_ARRAY);384 362 385 363 386 … … 367 390 368 391 369 glNormalPointer( GL_FLOAT, 44,&((((BspVertex*)(this->bspFile->patchVertice))[8*8*(Face->meshvert+i)]).normal[0]) );370 371 372 373 374 for(int row= 0; row<7; ++row) {392 // glNormalPointer( GL_FLOAT, 44,&((((BspVertex*)(this->bspFile->patchVertice))[8*8*(Face->meshvert+i)]).normal[0]) ); 393 394 395 396 397 for(int row=6; row>=0; --row) { 375 398 glDrawElements(GL_TRIANGLE_STRIP, 2*(8), GL_UNSIGNED_INT, 376 399 & ( (((GLuint*) (this->bspFile->patchIndexes))[7*8*2*(Face->meshvert+i)+ row*2*8] )) ); 377 400 } 378 401 379 glFrontFace(GL_CCW);402 //glFrontFace(GL_CCW); 380 403 } 381 404 glDisableClientState(GL_TEXTURE0_ARB); 382 405 glDisableClientState(GL_TEXTURE1_ARB); 383 //glDisable(GL_AUTO_NORMAL);406 glDisable(GL_AUTO_NORMAL); 384 407 glDisableClientState(GL_VERTEX_ARRAY ); 385 408 glDisableClientState(GL_TEXTURE_COORD_ARRAY ); 386 409 387 glBegin(GL_QUADS); 388 389 glEnd(); 410 390 411 } 391 412
Note: See TracChangeset
for help on using the changeset viewer.