Changeset 1737 for GTP/trunk/Lib/Vis/Preprocessing/src/RssPreprocessor.cpp
- Timestamp:
- 11/09/06 19:41:31 (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
GTP/trunk/Lib/Vis/Preprocessing/src/RssPreprocessor.cpp
r1723 r1737 366 366 367 367 void 368 NormalizeRatios(float ratios[ 3])368 NormalizeRatios(float ratios[4]) 369 369 { 370 370 int i; 371 371 float sumRatios; 372 sumRatios = ratios[0] + ratios[1] + ratios[2] ;372 sumRatios = ratios[0] + ratios[1] + ratios[2] + ratios[3]; 373 373 if (sumRatios == 0.0f) { 374 374 ratios[0] = ratios[1] = ratios[2] = 1.0f; 375 sumRatios = 3.0f;376 } 377 378 for (i=0 ; i < 3; i++)375 sumRatios = 4.0f; 376 } 377 378 for (i=0 ; i < 4; i++) 379 379 ratios[i]/=sumRatios; 380 380 … … 387 387 #endif 388 388 389 for (; i < 3; i++)389 for (; i < 4; i++) 390 390 if (ratios[i] < MIN_RATIO) 391 391 ratios[i] = MIN_RATIO; 392 392 393 sumRatios = ratios[0] + ratios[1] + ratios[2] ;394 for (i=0 ; i < 3; i++)393 sumRatios = ratios[0] + ratios[1] + ratios[2] + ratios[3]; 394 for (i=0 ; i < 4; i++) 395 395 ratios[i]/=sumRatios; 396 396 … … 432 432 int rssPass = 0; 433 433 int rssSamples = 0; 434 435 mDistributions.push_back(SamplingDistribution(SamplingStrategy::RSS_BASED_DISTRIBUTION)); 436 mDistributions.push_back(SamplingDistribution(SamplingStrategy::SPATIAL_BOX_BASED_DISTRIBUTION)); 437 mDistributions.push_back(SamplingDistribution(SamplingStrategy::DIRECTION_BASED_DISTRIBUTION)); 438 mDistributions.push_back(SamplingDistribution(SamplingStrategy::REVERSE_OBJECT_BASED_DISTRIBUTION)); 434 439 435 440 if (mLoadInitialSamples) { … … 439 444 } else { 440 445 SimpleRayContainer rays; 441 446 442 447 cout<<"Generating initial rays..."<<endl<<flush; 443 448 444 449 if (mUseImportanceSampling) { 445 GenerateRays(mInitialSamples/ 2, SamplingStrategy::SPATIAL_BOX_BASED_DISTRIBUTION, rays);450 GenerateRays(mInitialSamples/3, SamplingStrategy::SPATIAL_BOX_BASED_DISTRIBUTION, rays); 446 451 // GenerateRays(mInitialSamples/3, SamplingStrategy::OBJECT_BASED_DISTRIBUTION, rays); 447 GenerateRays(mInitialSamples/2, SamplingStrategy::DIRECTION_BASED_DISTRIBUTION, rays); 452 GenerateRays(mInitialSamples/3, SamplingStrategy::DIRECTION_BASED_DISTRIBUTION, rays); 453 GenerateRays(mInitialSamples/3, SamplingStrategy::REVERSE_OBJECT_BASED_DISTRIBUTION, rays); 448 454 // GenerateRays(mInitialSamples/4, OBJECT_DIRECTION_BASED_DISTRIBUTION, rays); 455 456 449 457 } else { 450 458 int rayType = SamplingStrategy::SPATIAL_BOX_BASED_DISTRIBUTION; 451 459 if (mObjectBasedSampling) 452 460 rayType = SamplingStrategy::OBJECT_BASED_DISTRIBUTION; … … 578 586 579 587 #if USE_RSS_TREE 580 static float ratios[] = {0.9f,0.05f,0.05f };588 static float ratios[] = {0.9f,0.05f,0.05f,0.05f}; 581 589 #else 582 static float ratios[] = {0.0f,0.05f,0.05f };590 static float ratios[] = {0.0f,0.05f,0.05f,0.05f}; 583 591 #endif 584 592 NormalizeRatios(ratios); 585 593 586 cout<<"New ratios: "<<ratios[0]<<" "<<ratios[1]<<" "<<ratios[2]<< endl;594 cout<<"New ratios: "<<ratios[0]<<" "<<ratios[1]<<" "<<ratios[2]<<" "<<ratios[3]<<endl; 587 595 588 596 //float ratios[] = {1.0f,0.0f,0.0f}; 589 597 590 int nrays[ 3];591 float contributions[ 3];592 float times[ 3];598 int nrays[4]; 599 float contributions[4]; 600 float times[4]; 593 601 594 602 long t1; … … 660 668 } 661 669 670 if (ratios[3]!=0.0f) { 671 t1 = GetTime(); 672 GenerateRays(int(mRssSamplesPerPass*ratios[3]), 673 SamplingStrategy::REVERSE_OBJECT_BASED_DISTRIBUTION, rays); 674 CastRays(rays, tmpVssRays, true); 675 castRays += (int)rays.size(); 676 #if ADD_RAYS_IN_PLACE 677 contributions[3] = mViewCellsManager->ComputeSampleContributions(tmpVssRays, true, false); 678 #else 679 contributions[3] = mViewCellsManager->ComputeSampleContributions(tmpVssRays, false, true); 680 #endif 681 times[3] = TimeDiff(t1, GetTime()); 682 nrays[3] = (int)rays.size(); 683 684 mStats<<"#DirectionalRelContrib"<<endl<<contributions[3]/nrays[3]<<endl; 685 686 vssRays.insert(vssRays.end(), tmpVssRays.begin(), tmpVssRays.end() ); 687 688 rays.clear(); 689 tmpVssRays.clear(); 690 } 691 662 692 663 693 // now evaluate the ratios for the next pass … … 668 698 ratios[1] = sqr(contributions[1]/(TIME_WEIGHT*times[1] + (1 - TIME_WEIGHT)*nrays[1])); 669 699 ratios[2] = sqr(contributions[2]/(TIME_WEIGHT*times[2] + (1 - TIME_WEIGHT)*nrays[2])); 700 ratios[3] = sqr(contributions[3]/(TIME_WEIGHT*times[3] + (1 - TIME_WEIGHT)*nrays[3])); 670 701 #else 671 702 ratios[0] = contributions[0]/(TIME_WEIGHT*times[0] + (1 - TIME_WEIGHT)*nrays[0]); 672 703 ratios[1] = contributions[1]/(TIME_WEIGHT*times[1] + (1 - TIME_WEIGHT)*nrays[1]); 673 704 ratios[2] = contributions[2]/(TIME_WEIGHT*times[2] + (1 - TIME_WEIGHT)*nrays[2]); 705 ratios[3] = contributions[3]/(TIME_WEIGHT*times[3] + (1 - TIME_WEIGHT)*nrays[3]); 706 674 707 #endif 675 708
Note: See TracChangeset
for help on using the changeset viewer.