Revision: 46655
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=46655
Author:   genscher
Date:     2012-05-15 11:35:01 +0000 (Tue, 15 May 2012)
Log Message:
-----------
Fix El Topo:
- Library compile errors
- 2 Bugs (have been reported to lib owner)
- LAPACK for cmake

TODO:
- Scons is still missing LAPACK lib define
- Do other platforms got LAPACK lib? 

Modified Paths:
--------------
    trunk/blender/CMakeLists.txt
    trunk/blender/build_files/cmake/macros.cmake
    trunk/blender/extern/eltopo/CMakeLists.txt
    trunk/blender/extern/eltopo/common/ccd_defs.h
    trunk/blender/extern/eltopo/eltopo3d/collisionpipeline.cpp
    trunk/blender/extern/eltopo/eltopo3d/dynamicsurface.cpp
    trunk/blender/extern/eltopo/eltopo3d/dynamicsurface.h
    trunk/blender/extern/eltopo/eltopo3d/eltopo.cpp

Modified: trunk/blender/CMakeLists.txt
===================================================================
--- trunk/blender/CMakeLists.txt        2012-05-15 11:14:50 UTC (rev 46654)
+++ trunk/blender/CMakeLists.txt        2012-05-15 11:35:01 UTC (rev 46655)
@@ -837,6 +837,15 @@
                        set(GETTEXT_LIBPATH ${GETTEXT}/lib)
                        set(GETTEXT_LIBRARIES gnu_gettext)
                endif()
+               
+               set(LAPACK ${LIBDIR}/lapack)
+               # set(LAPACK_INCLUDE_DIR ${LAPACK}/include)
+               set_lib_path(LAPACK_LIBPATH ${LAPACK}/lib)      
+               set(LAPACK_LIBRARIES
+                       ${LIBDIR}/lapack/lib/libf2c.lib
+                       ${LIBDIR}/lapack/lib/clapack_nowrap.lib
+                       ${LIBDIR}/lapack/lib/BLAS_nowrap.lib
+               )
 
                set(PNG_LIBRARIES libpng)
                set(JPEG_LIBRARIES libjpeg)

Modified: trunk/blender/build_files/cmake/macros.cmake
===================================================================
--- trunk/blender/build_files/cmake/macros.cmake        2012-05-15 11:14:50 UTC 
(rev 46654)
+++ trunk/blender/build_files/cmake/macros.cmake        2012-05-15 11:35:01 UTC 
(rev 46655)
@@ -214,7 +214,8 @@
                        ${OPENGL_glu_LIBRARY}
                        ${PNG_LIBRARIES}
                        ${ZLIB_LIBRARIES}
-                       ${FREETYPE_LIBRARY})
+                       ${FREETYPE_LIBRARY}
+                       ${LAPACK_LIBRARIES})
 
        # since we are using the local libs for python when compiling msvc 
projects, we need to add _d when compiling debug versions
        if(WITH_PYTHON)  # AND NOT WITH_PYTHON_MODULE  # WIN32 needs

Modified: trunk/blender/extern/eltopo/CMakeLists.txt
===================================================================
--- trunk/blender/extern/eltopo/CMakeLists.txt  2012-05-15 11:14:50 UTC (rev 
46654)
+++ trunk/blender/extern/eltopo/CMakeLists.txt  2012-05-15 11:35:01 UTC (rev 
46655)
@@ -50,15 +50,25 @@
        common/makelevelset3.cpp
        common/marching_triangles.cpp
        common/predicates.cpp
+       common/runstats.cpp
        common/sos_ccd_wrapper.cpp
        common/wallclocktime.cpp
        eltopo3d/accelerationgrid.cpp
        eltopo3d/broadphasegrid.cpp
+       eltopo3d/collisionpipeline.cpp
        eltopo3d/dynamicsurface.cpp
+       eltopo3d/edgecollapser.cpp
+       eltopo3d/edgeflipper.cpp
+       eltopo3d/edgesplitter.cpp
        eltopo3d/eltopo.cpp
+       eltopo3d/impactzonesolver.cpp
+       eltopo3d/meshmerger.cpp
+       eltopo3d/meshsmoother.cpp
+       eltopo3d/meshpincher.cpp
        eltopo3d/nondestructivetrimesh.cpp
        eltopo3d/subdivisionscheme.cpp
        eltopo3d/surftrack.cpp
+       eltopo3d/trianglequality.cpp
        common/newsparse/dense_matrix.cpp
        common/newsparse/krylov_solvers.cpp
        common/newsparse/sparse_matrix.cpp

Modified: trunk/blender/extern/eltopo/common/ccd_defs.h
===================================================================
--- trunk/blender/extern/eltopo/common/ccd_defs.h       2012-05-15 11:14:50 UTC 
(rev 46654)
+++ trunk/blender/extern/eltopo/common/ccd_defs.h       2012-05-15 11:35:01 UTC 
(rev 46655)
@@ -11,7 +11,7 @@
 // Uncomment one of the following (cubic solver version has been tested 
hardest):
 //
 
-//#define USE_CUBIC_SOLVER_CCD
+// #define USE_CUBIC_SOLVER_CCD
 #define USE_TUNICATE_CCD
 
 #endif

Modified: trunk/blender/extern/eltopo/eltopo3d/collisionpipeline.cpp
===================================================================
--- trunk/blender/extern/eltopo/eltopo3d/collisionpipeline.cpp  2012-05-15 
11:14:50 UTC (rev 46654)
+++ trunk/blender/extern/eltopo/eltopo3d/collisionpipeline.cpp  2012-05-15 
11:35:01 UTC (rev 46655)
@@ -126,7 +126,7 @@
     double s3 = alphas[3];
     
     double i = impulse_magnitude / (s0*s0*inv_m0 + s1*s1*inv_m1 + s2*s2*inv_m2 
+ s3*s3*inv_m3);
-    
+
     if ( i > 100.0 / dt )
     {
         std::cout << "big impulse: " << i << std::endl;
@@ -732,7 +732,7 @@
                 
                 g_stats.add_to_int( "CollisionPipeline::total_num_collisions", 
1 );
                 
-                double relvel = collision.m_relative_displacement / dt;
+                double relvel = collision.m_relative_displacement * dt;
                 double desired_relative_velocity = 0.0;
                 double impulse = IMPULSE_MULTIPLIER * 
(desired_relative_velocity - relvel);
                 apply_edge_edge_impulse( collision, impulse, dt );
@@ -752,7 +752,8 @@
                     add_point_update_candidates( 
collision.m_vertex_indices[3], new_candidates);
                 }
             }
-        }
+               }
+
         else
         {
             // point-triangle
@@ -763,7 +764,8 @@
                 
                 g_stats.add_to_int( "CollisionPipeline::total_num_collisions", 
1 );
                 
-                double relvel = collision.m_relative_displacement / dt;
+                double relvel = collision.m_relative_displacement * dt;
+                               // printf("collision.m_relative_displacement: 
%lf\n", collision.m_relative_displacement);
                 double desired_relative_velocity = 0.0;
                 double impulse = IMPULSE_MULTIPLIER * 
(desired_relative_velocity - relvel);
                 apply_triangle_point_impulse( collision, impulse, dt );
@@ -784,7 +786,8 @@
                 }  
             }
             
-        }
+               }
+
     }
     
     if ( m_surface.m_verbose && max_iteration > 0 && i >= max_iteration )
@@ -1040,14 +1043,14 @@
         status.all_candidates_processed = false;
         
         // dynamic point vs solid triangles
-        
+      
         dynamic_point_vs_solid_triangle_collisions( dt,
                                                    collect_candidates,
                                                    update_collision_candidates,
                                                    status );
         
         collision_found |= status.collision_found;
-        
+
         // dynamic triangle vs static points
         // dynamic triangle vs dynamic points
         
@@ -1067,7 +1070,7 @@
                                             status );
         
         collision_found |= status.collision_found;
-        
+  
         if ( status.overflow )
         {
             if ( verbose )

Modified: trunk/blender/extern/eltopo/eltopo3d/dynamicsurface.cpp
===================================================================
--- trunk/blender/extern/eltopo/eltopo3d/dynamicsurface.cpp     2012-05-15 
11:14:50 UTC (rev 46654)
+++ trunk/blender/extern/eltopo/eltopo3d/dynamicsurface.cpp     2012-05-15 
11:35:01 UTC (rev 46655)
@@ -504,8 +504,8 @@
             bool all_collisions_handled = false;
             
             all_collisions_handled = m_collision_pipeline->handle_collisions( 
curr_dt );
+
             
-            
             // failsafe impact zones 
             
             ImpactZoneSolver impactZoneSolver( *this );
@@ -555,22 +555,22 @@
                     assert( false );
                 }
                 
-                if ( m_verbose )
-                {
+                               if ( m_verbose )
+                               {
                     std::cout << "Intersection in predicted mesh, cutting 
timestep." << std::endl;
-                }
-                
+                               }
+
                 // back up and try again:
                 
                 curr_dt = 0.5 * curr_dt;
-                for ( size_t i = 0; i < get_num_vertices(); ++i )
-                {
-                    set_newposition( i, get_position(i) + 0.5 * ( 
saved_predicted_positions[i] - get_position(i) ) );
-                }
+                               for ( size_t i = 0; i < get_num_vertices(); ++i 
)
+                               {
+                                       set_newposition( i, get_position(i) + 
0.5 * ( saved_predicted_positions[i] - get_position(i) ) );
+                               }
                 
-                continue;      
+                               continue;   
                 
-            }                 
+                       }               
             
         }
         

Modified: trunk/blender/extern/eltopo/eltopo3d/dynamicsurface.h
===================================================================
--- trunk/blender/extern/eltopo/eltopo3d/dynamicsurface.h       2012-05-15 
11:14:50 UTC (rev 46654)
+++ trunk/blender/extern/eltopo/eltopo3d/dynamicsurface.h       2012-05-15 
11:35:01 UTC (rev 46655)
@@ -633,7 +633,10 @@
         if ( e[0] == e[1] )  { continue; }
         sum_lengths += mag( get_position(e[1]) - get_position(e[0]) ); 
     }
-    return sum_lengths / (double) m_mesh.m_edges.size();   
+
+       double len = sum_lengths / (double) m_mesh.m_edges.size();
+
+    return len;   
 }
 
 // --------------------------------------------------------
@@ -756,7 +759,7 @@
 inline bool DynamicSurface::edge_is_solid( size_t e ) const
 {
     const Vec2st& edge = m_mesh.m_edges[e];
-    return ( vertex_is_solid(edge[0]) || vertex_is_solid(edge[1]) );
+    return ( vertex_is_solid(edge[0]) && vertex_is_solid(edge[1]) );
 }
 
 // --------------------------------------------------------
@@ -768,7 +771,7 @@
 inline bool DynamicSurface::triangle_is_solid( size_t t ) const
 {
     const Vec3st& tri = m_mesh.get_triangle(t);
-    return ( vertex_is_solid(tri[0]) || vertex_is_solid(tri[1]) || 
vertex_is_solid(tri[2]) );
+    return ( vertex_is_solid(tri[0]) && vertex_is_solid(tri[1]) && 
vertex_is_solid(tri[2]) );
 }
 
 

Modified: trunk/blender/extern/eltopo/eltopo3d/eltopo.cpp
===================================================================
--- trunk/blender/extern/eltopo/eltopo3d/eltopo.cpp     2012-05-15 11:14:50 UTC 
(rev 46654)
+++ trunk/blender/extern/eltopo/eltopo3d/eltopo.cpp     2012-05-15 11:35:01 UTC 
(rev 46655)
@@ -10,6 +10,9 @@
 #include <eltopo.h>
 #include <surftrack.h>
 
+#include "../common/runstats.h"
+RunStats g_stats;
+
 // ---------------------------------------------------------
 ///
 /// Static operations: edge collapse, edge split, edge flip, null-space 
smoothing, and topological changes
@@ -225,7 +228,7 @@
     //
     
     // build a DynamicSurface
-    DynamicSurface dynamic_surface( vs, ts, masses, 
general_options->m_proximity_epsilon, options->m_friction_coefficient, 
general_options->m_collision_safety );
+       DynamicSurface dynamic_surface( vs, ts, masses, 
general_options->m_proximity_epsilon, options->m_friction_coefficient, 
general_options->m_collision_safety, general_options->m_verbose );
     
     dynamic_surface.set_all_newpositions( inputs->num_vertices, 
in_vertex_new_locations );
     

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

Reply via email to