Ignore:
Timestamp:
12/18/07 09:04:41 (17 years ago)
Author:
mattausch
Message:
 
Location:
GTP/trunk/Lib/Vis/Preprocessing/src
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/Lib/Vis/Preprocessing/src/IntersectableWrapper.cpp

    r2569 r2570  
    115115 
    116116 
    117 int TriangleIntersectable::GetRandomEdgePoint(Vector3 &point, 
    118                                                                                           Vector3 &normal) 
     117int TriangleIntersectable::GetRandomEdgePoint(Vector3 &point, Vector3 &normal) 
    119118{ 
    120119        const int edge = Random(3); 
     
    137136} 
    138137 
     138 
    139139int KdIntersectable::ComputeNumTriangles() 
    140140{ 
     141        Intersectable::NewMail(); 
     142 
    141143        std::stack<KdNode *> tStack; 
    142144        tStack.push(mItem); 
  • GTP/trunk/Lib/Vis/Preprocessing/src/Pvs.h

    r2548 r2570  
    3939        typename vector<PvsEntry<T, S> >::const_iterator mItCurrent; 
    4040        typename vector<PvsEntry<T, S> >::const_iterator mItEnd; 
     41}; 
     42 
     43 
     44struct VerbosePvsStats 
     45{ 
     46        VerbosePvsStats(): mDistanceWeightedTriangles(0), mDistanceWeightedPvs(0), mWeightedTriangles(0) 
     47        {} 
     48 
     49        float mDistanceWeightedTriangles; 
     50        float mDistanceWeightedPvs; 
     51        float mWeightedTriangles; 
    4152}; 
    4253 
     
    205216 
    206217        typename PvsIterator<T, S> GetIterator() const; 
     218 
     219        VerbosePvsStats mStats; 
    207220 
    208221protected: 
     
    236249 
    237250template <typename T, typename S> 
    238 VerbosePvs<T, S>::VerbosePvs(const vector<PvsEntry<T, S> > &samples) 
     251VerbosePvs<T, S>::VerbosePvs(const vector<PvsEntry<T, S> > &samples):  
     252mLastSorted(0) 
    239253{ 
    240254        mEntries.reserve(samples.size()); 
    241255        mEntries = samples; 
    242         mLastSorted = 0; 
    243256        mSamples = samples.size(); 
    244257} 
  • GTP/trunk/Lib/Vis/Preprocessing/src/QtInterface/QtGlRenderer.cpp

    r2569 r2570  
    11801180} 
    11811181 
    1182  
     1182#if 0 
    11831183float QtGlRendererWidget::ComputeRenderCost(ViewCell *vc) 
    11841184{ 
     
    12211221        return renderCost; 
    12221222} 
    1223  
     1223#else 
     1224 
     1225float QtGlRendererWidget::ComputeRenderCost(ViewCell *vc) 
     1226{ 
     1227        float renderCost = 0; 
     1228 
     1229        if (mShowDistanceWeightedPvs) 
     1230        { 
     1231                return vc->GetPvs().mStats.mDistanceWeightedPvs; 
     1232        } 
     1233        else if (mShowDistanceWeightedTriangles) 
     1234        { 
     1235                return vc->GetPvs().mStats.mDistanceWeightedTriangles; 
     1236        } 
     1237        else //if (mShowWeightedTriangles) 
     1238        { 
     1239                return vc->GetPvs().mStats.mWeightedTriangles; 
     1240        } 
     1241} 
     1242#endif 
    12241243 
    12251244void 
     
    13741393                        else if (mShowWeightedCost) 
    13751394                        { 
    1376                                 const float rcCost = mTransferFunction * vc->GetTrianglesInPvs(); 
     1395                                const float rcCost = mTransferFunction * ComputeRenderCost(vc); 
    13771396                                importance = rcCost / maxRcCost; 
    13781397                        } 
  • GTP/trunk/Lib/Vis/Preprocessing/src/ViewCellsManager.cpp

    r2569 r2570  
    21012101                if (!ViewCellsConstructed())  
    21022102                { 
    2103                         // view cells not yet constructed 
     2103                        // view cells not constructed yet => 
    21042104                        // just take the lenghts of the rays as contributions 
    21052105                        if ((*it)->mTerminationObject) 
     
    26692669 
    26702670 
     2671void ViewCellsManager::UpdateStatsForViewCell(ViewCell *vc, Intersectable *obj) 
     2672{ 
     2673                KdIntersectable *kdObj = static_cast<KdIntersectable *>(obj); 
     2674 
     2675        const AxisAlignedBox3 box = kdObj->GetBox(); 
     2676                const float dist = SqrDistance(vc->GetBox().Center(), box.Center()); 
     2677 
     2678                float f; 
     2679 
     2680                const float radius = mViewSpaceBox.Radius(); 
     2681                const float fullRadius = mViewSpaceBox.Radius(); 
     2682 
     2683                const float minVal = 0.1f; 
     2684                const float maxVal = 1.0f; 
     2685 
     2686                if (dist <= radius)  
     2687                        f = maxVal; 
     2688                else if (dist >= fullRadius) 
     2689                        f = minVal; 
     2690                else // linear blending 
     2691                { 
     2692                        f = minVal * (dist - radius) + maxVal * (fullRadius - radius - dist); 
     2693                } 
     2694 
     2695                const int numTriangles = kdObj->ComputeNumTriangles(); 
     2696 
     2697                vc->GetPvs().mStats.mDistanceWeightedTriangles += f * numTriangles;  
     2698                vc->GetPvs().mStats.mDistanceWeightedPvs += f; 
     2699                vc->GetPvs().mStats.mWeightedTriangles += numTriangles; 
     2700} 
     2701 
     2702 
    26712703void ViewCellsManager::ComputeViewCellContribution(ViewCell *viewCell, 
    26722704                                                                                                   VssRay &ray,  
     
    26922724                hasAbsContribution = viewCell->GetPvs().AddSampleDirtyCheck(obj, ray.mPdf); 
    26932725                //hasAbsContribution = viewCell->GetPvs().AddSample(obj,ray.mPdf); 
     2726#if 1 
     2727                UpdateStatsForViewCell(viewCell, obj); 
     2728#endif 
     2729 
    26942730        } 
    26952731        else  
  • GTP/trunk/Lib/Vis/Preprocessing/src/ViewCellsManager.h

    r2569 r2570  
    670670         
    671671 
     672        void UpdateStatsForViewCell(ViewCell *viewCell, Intersectable *obj); 
     673 
     674 
    672675        /////////////////////// 
    673676        //-- helper functions for view cell visualization 
Note: See TracChangeset for help on using the changeset viewer.