Revision: 16004
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=16004
Author:   mxcurioni
Date:     2008-08-07 18:15:10 +0200 (Thu, 07 Aug 2008)

Log Message:
-----------
soc-2008-mxcurioni: corrected matrix used to import meshes. Despite providing 
the exact same information (verified by the same bounding box and grid), the 
ViewMap does not have any view edge yet. The lib3ds-less iteration does NOT 
work yet.

Modified Paths:
--------------
    
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/app/Controller.cpp
    
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/app_blender/Controller.cpp
    
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/scene_graph/BlenderFileLoader.cpp

Modified: 
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/app/Controller.cpp
===================================================================
--- 
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/app/Controller.cpp  
    2008-08-07 15:18:47 UTC (rev 16003)
+++ 
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/app/Controller.cpp  
    2008-08-07 16:15:10 UTC (rev 16004)
@@ -251,8 +251,8 @@
   _ProgressBar->setProgress(1);
 
   // DEBUG
-//   ScenePrettyPrinter spp;
-//   maxScene->accept(spp);
+  // ScenePrettyPrinter spp;
+  // maxScene->accept(spp);
 
   _RootNode->AddChild(maxScene);
   _RootNode->UpdateBBox(); // FIXME: Correct that by making a Renderer to 
compute the bbox

Modified: 
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/app_blender/Controller.cpp
===================================================================
--- 
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/app_blender/Controller.cpp
      2008-08-07 15:18:47 UTC (rev 16003)
+++ 
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/app_blender/Controller.cpp
      2008-08-07 16:15:10 UTC (rev 16004)
@@ -202,8 +202,8 @@
   cout << "Epsilon computed : " << _EPSILON << endl;
 
   // DEBUG
-//   ScenePrettyPrinter spp;
-//   blenderScene->accept(spp);
+  // ScenePrettyPrinter spp;
+  // blenderScene->accept(spp);
        
   _RootNode->AddChild(blenderScene);
   _RootNode->UpdateBBox(); // FIXME: Correct that by making a Renderer to 
compute the bbox
@@ -243,9 +243,9 @@
   printf("Grid building    : %lf\n", _Chrono.stop());
   
   // DEBUG
-//   _Grid.displayDebug();
-   
-  _pView->setDebug(_DebugNode);
+  _Grid.displayDebug();
+  //  
+  // _pView->setDebug(_DebugNode);
 
   //delete stuff
   //  if(0 != ws_builder)
@@ -305,8 +305,8 @@
   cout << "Epsilon computed : " << _EPSILON << endl;
 
   // DEBUG
-//   ScenePrettyPrinter spp;
-//   maxScene->accept(spp);
+  // ScenePrettyPrinter spp;
+  // maxScene->accept(spp);
        
   _RootNode->AddChild(maxScene);
   _RootNode->UpdateBBox(); // FIXME: Correct that by making a Renderer to 
compute the bbox
@@ -346,7 +346,7 @@
   printf("Grid building    : %lf\n", _Chrono.stop());
   
   // DEBUG
-//   _Grid.displayDebug();
+  _Grid.displayDebug();
    
   _pView->setDebug(_DebugNode);
 

Modified: 
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/scene_graph/BlenderFileLoader.cpp
===================================================================
--- 
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/scene_graph/BlenderFileLoader.cpp
       2008-08-07 15:18:47 UTC (rev 16003)
+++ 
branches/soc-2008-mxcurioni/source/blender/freestyle/intern/scene_graph/BlenderFileLoader.cpp
       2008-08-07 16:15:10 UTC (rev 16004)
@@ -53,7 +53,10 @@
        // lib3ds_matrix_copy(M, mesh->matrix);
        // lib3ds_matrix_inv(M);
        //---------------------
-       // M => obr->ob->imat
+       // M allows to recover world coordinates from camera coordinates
+       // M => obr->ob->imat * obr->obmat  (multiplication from left to right)
+       float M[4][4];
+       MTC_Mat4MulMat4(M, obr->ob->imat, obr->ob->obmat); 
        
        // We compute a normal per vertex and manages the smoothing of the 
shape:
        // Lib3dsVector 
*normalL=(Lib3dsVector*)malloc(3*sizeof(Lib3dsVector)*mesh->faces);
@@ -68,7 +71,7 @@
        for(int a=0; a < obr->totvlak; a++) {
                if((a & 255)==0) vlr= obr->vlaknodes[a>>8].vlak;
                else vlr++;
-
+       
                if(vlr->v4)
                        numFaces += 2;
                else
@@ -115,7 +118,7 @@
        pvtmp[1] = obr->vertnodes[0].vert->co[1];
        pvtmp[2] = obr->vertnodes[0].vert->co[2];
        
-       MTC_Mat4MulVecfl( obr->ob->imat, pvtmp);
+       MTC_Mat4MulVecfl( M, pvtmp);
        
        minBBox[0] = pvtmp[0];
        maxBBox[0] = pvtmp[0];
@@ -179,44 +182,44 @@
                        for(i=0; i<3; ++i) // we parse the vertices of the face 
f
                        {
                                unsigned j;
-
+       
                                //lib3ds_vector_transform(pv, M, 
mesh->pointL[f->points[i]].pos); //fills the cells of the pv array
                                for(j=0; j<3; j++)
                                        pv[j] = fv[i]->co[j];
-                               MTC_Mat4MulVecfl( obr->ob->imat, pv);
-
+                               MTC_Mat4MulVecfl( M, pv);
+       
                                for(j=0; j<3; j++) // we parse the xyz 
coordinates of the vertex i
                                {
                                        if(minBBox[j] > pv[j])
                                        minBBox[j] = pv[j];
-
+       
                                        if(maxBBox[j] < pv[j])
                                        maxBBox[j] = pv[j];
-
+       
                                        vert[i][j] = pv[j];
                                }
-
+       
                                for(j=0; j<3; j++)
                                        pn[j] = fv[i]->n[j];
                        
-                               MTC_Mat4MulVecfl( obr->ob->imat, pn);
-
+                               MTC_Mat4MulVecfl( M, pn);
+       
                        //lib3ds_normal_transform(pn, M, normalL[3*p+i]); 
//fills the cells of the pv array
                        //lib3ds_vector_normalize(pn);
-
+       
                                *pvi = currentIndex;
                                *pni = currentIndex;
                                *pmi = currentMIndex;
-
+       
                                currentIndex +=3;
                                pv += 3;
                                pn += 3;
                                pvi++;
                                pni++;
                                pmi++;
-
+       
                        }
-
+       
                        for(i=0; i<3; i++)
                        {
                                norm = 0.0;
@@ -238,51 +241,51 @@
                                                for(i=0; i<3; ++i) // we parse 
the vertices of the face f
                                                {
                                                        unsigned j;
-
+       
                                                        
//lib3ds_vector_transform(pv, M, mesh->pointL[f->points[i]].pos); //fills the 
cells of the pv array
                                                        for(j=0; j<3; j++)
                                                                pv[j] = 
fv[i]->co[j];
-                                                       MTC_Mat4MulVecfl( 
obr->ob->imat, pv);
-
+                                                       MTC_Mat4MulVecfl( M, 
pv);
+       
                                                        for(j=0; j<3; j++) // 
we parse the xyz coordinates of the vertex i
                                                        {
                                                                if(minBBox[j] > 
pv[j])
                                                                minBBox[j] = 
pv[j];
-
+       
                                                                if(maxBBox[j] < 
pv[j])
                                                                maxBBox[j] = 
pv[j];
-
+       
                                                                vert[i][j] = 
pv[j];
                                                        }
-
+       
                                                        for(j=0; j<3; j++)
                                                                pn[j] = 
fv[i]->n[j];
-
-                                                       MTC_Mat4MulVecfl( 
obr->ob->imat, pn);
-
+       
+                                                       MTC_Mat4MulVecfl( M, 
pn);
+       
                                                //lib3ds_normal_transform(pn, 
M, normalL[3*p+i]); //fills the cells of the pv array
                                                //lib3ds_vector_normalize(pn);
-
+       
                                                        *pvi = currentIndex;
                                                        *pni = currentIndex;
                                                        *pmi = currentMIndex;
-
+       
                                                        currentIndex +=3;
                                                        pv += 3;
                                                        pn += 3;
                                                        pvi++;
                                                        pni++;
                                                        pmi++;
-
+       
                                                }
-
+       
                                                for(i=0; i<3; i++)
                                                {
                                                        norm = 0.0;
-
+       
                                                        for (unsigned j = 0; j 
< 3; j++)
                                                                norm += 
(vert[i][j] - vert[(i+1)%3][j])*(vert[i][j] - vert[(i+1)%3][j]);
-
+       
                                                        norm = sqrt(norm);
                                                        if(_minEdgeSize > norm)
                                                                _minEdgeSize = 
norm;
@@ -290,7 +293,7 @@
                                
                                        ++_numFacesRead;
                        }
-
+       
        }
        
        // We might have several times the same vertex. We want a clean 
@@ -350,8 +353,8 @@
        rep->setBBox(bbox);
        shape->AddRep(rep);
        
-       Matrix44r M = Matrix44r::identity();
-       currentMesh->setMatrix(M);
+       Matrix44r meshMat = Matrix44r::identity();
+       currentMesh->setMatrix(meshMat);
        currentMesh->Translate(0,0,0);
        
        currentMesh->AddChild(shape);


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to