Ignore:
Timestamp:
01/03/09 17:32:10 (16 years ago)
Author:
mattausch
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/ViewCellsTree.cpp

    r3243 r3244  
    2424        while (!node->IsLeaf())  
    2525        { 
     26                //cout << "pt: " << point[node->mAxis] << " " << node->mPosition << endl; 
    2627                if (point[node->mAxis] < node->mPosition) 
    2728                        node = node->mBack; 
     
    2930                        node = node->mFront; 
    3031        } 
     32 
     33        //cout << "vc: " << node->mViewCell->GetBox() << " pvs " << node->mViewCell->mPvs.Size() << endl; 
    3134 
    3235        return node->mViewCell; 
     
    3639bool ViewCellsTree::LoadFromFile(const std::string &filename) 
    3740{ 
    38         cout << "Info: Loading view cells from file '" + filename + "'"; 
     41        cout << "Loading view cells from file '" + filename + "'"; 
    3942 
    4043        FILE *fr = fopen(filename.c_str(), "rb"); 
     
    4851        bool result = _LoadFromFile(fr); 
    4952 
    50         cout << "Info: done. " << endl; 
     53        cout << "finished loading view cells. " << endl; 
    5154        fclose(fr); 
    5255 
     
    5861{ 
    5962        int buffer[256];  
    60         fread(buffer, sizeof(int), 3, fr); 
     63        fread(buffer, sizeof(int), 2, fr); 
    6164 
    6265        if (buffer[0] != MAGIC)  
     
    7578        fread(&mBox, sizeof(AxisAlignedBox3), 1, fr); 
    7679 
     80        Vector3 v1(mBox.Min().x, -mBox.Min().z, mBox.Min().y); 
     81        Vector3 v2(mBox.Max().x, -mBox.Max().z, mBox.Max().y); 
     82         
     83        Vector3 newMin = v1; 
     84        Vector3 newMax = v2; 
     85 
     86        Minimize(newMin, v2); 
     87        Maximize(newMax, v1); 
     88 
     89        mBox.SetMin(newMin); 
     90        mBox.SetMax(newMax); 
     91 
    7792        stack<ViewCellsTreeNode **> nodeStack; 
     93        nodeStack.push(&mRoot); 
    7894 
    79         nodeStack.push(&mRoot); 
     95        cout << "view cells bounds " << mBox << endl; 
     96 
     97        int numViewCells = 0; 
    8098 
    8199        while (!nodeStack.empty())  
     
    85103                node = new ViewCellsTreeNode(); 
    86104 
    87                 fread(&node->mAxis, sizeof(int), 1, fr); 
     105                ++ numViewCells; 
     106 
     107                int axis; 
     108                fread(&axis, sizeof(int), 1, fr); 
     109 
     110                // exchange y and z axis like we have to do for the scene 
     111                if (axis == 2) axis = 1; 
     112                else if (axis == 1) axis = 2; 
     113 
     114                node->mAxis = axis; 
     115 
     116                if (node->mAxis > 2 || node->mAxis < -1) cout << "a " << node->mAxis << " "; 
    88117 
    89118                if (!node->IsLeaf()) 
    90119                { 
    91                         fread(&node->mPosition, sizeof(float), 1, fr); 
     120                        float pos; 
     121                        fread(&pos, sizeof(float), 1, fr); 
     122 
     123                        if (axis == 1) pos = -pos; 
     124                        node->mPosition = pos; 
     125                         
    92126                        nodeStack.push(&node->mFront); 
    93127                        nodeStack.push(&node->mBack); 
     
    95129        } 
    96130 
     131        cout << "loaded " << numViewCells << " view cells" << endl; 
    97132        return true; 
    98133} 
Note: See TracChangeset for help on using the changeset viewer.