[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [46655] trunk/blender: Fix El Topo:
Daniel Genrich
daniel.genrich at gmx.net
Tue May 15 13:35:01 CEST 2012
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 );
More information about the Bf-blender-cvs
mailing list