[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [13460] trunk/blender: Initial commit of cloth modifier from branch rev 13453
Daniel Genrich
daniel.genrich at gmx.net
Tue Jan 29 22:01:12 CET 2008
Revision: 13460
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=13460
Author: genscher
Date: 2008-01-29 22:01:12 +0100 (Tue, 29 Jan 2008)
Log Message:
-----------
Initial commit of cloth modifier from branch rev 13453
Revision Links:
--------------
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=13453
Modified Paths:
--------------
trunk/blender/CMakeLists.txt
trunk/blender/SConstruct
trunk/blender/extern/SConscript
trunk/blender/extern/bullet2/src/BulletDynamics/CMakeLists.txt
trunk/blender/extern/bullet2/src/SConscript
trunk/blender/intern/elbeem/CMakeLists.txt
trunk/blender/intern/elbeem/SConscript
trunk/blender/intern/elbeem/intern/isosurface.cpp
trunk/blender/source/Makefile
trunk/blender/source/blender/blenkernel/BKE_modifier.h
trunk/blender/source/blender/blenkernel/CMakeLists.txt
trunk/blender/source/blender/blenkernel/SConscript
trunk/blender/source/blender/blenkernel/intern/Makefile
trunk/blender/source/blender/blenkernel/intern/modifier.c
trunk/blender/source/blender/blenloader/intern/readfile.c
trunk/blender/source/blender/blenloader/intern/writefile.c
trunk/blender/source/blender/include/butspace.h
trunk/blender/source/blender/makesdna/DNA_modifier_types.h
trunk/blender/source/blender/makesdna/intern/makesdna.c
trunk/blender/source/blender/src/buttons_editing.c
trunk/blender/source/blender/src/buttons_object.c
trunk/blender/source/blender/src/editmesh.c
trunk/blender/source/blender/src/editobject.c
trunk/blender/source/blender/src/transform_conversions.c
trunk/blender/source/blender/src/transform_generics.c
trunk/blender/source/blender/src/vpaint.c
trunk/blender/tools/btools.py
Added Paths:
-----------
trunk/blender/source/blender/blenkernel/BKE_cloth.h
trunk/blender/source/blender/blenkernel/BKE_collision.h
trunk/blender/source/blender/blenkernel/intern/cloth.c
trunk/blender/source/blender/blenkernel/intern/collision.c
trunk/blender/source/blender/blenkernel/intern/implicit.c
trunk/blender/source/blender/blenkernel/intern/kdop.c
trunk/blender/source/blender/makesdna/DNA_cloth_types.h
Modified: trunk/blender/CMakeLists.txt
===================================================================
--- trunk/blender/CMakeLists.txt 2008-01-29 20:53:19 UTC (rev 13459)
+++ trunk/blender/CMakeLists.txt 2008-01-29 21:01:12 UTC (rev 13460)
@@ -65,8 +65,9 @@
OPTION(WITH_QUICKTIME "Enable Quicktime Support" OFF)
OPTION(WITH_OPENEXR "Enable OpenEXR Support (http://www.openexr.com)" OFF)
OPTION(WITH_FFMPEG "Enable FFMPeg Support (http://ffmpeg.mplayerhq.hu/)" OFF)
-OPTION(WITH_OPENAL "Enable OpenAL Support (http://www.openal.org)" ON)
-OPTION(YESIAMSTUPID "Enable execution on 64-bit platforms" OFF)
+OPTION(WITH_OPENAL "Enable OpenAL Support (http://www.openal.org)" ON)
+OPTION(YESIAMSTUPID "Enable execution on 64-bit platforms" OFF)
+OPTION(WITH_OPENMP "Enable OpenMP (has to be supported by the compiler)" OFF)
IF(NOT WITH_GAMEENGINE AND WITH_PLAYER)
MESSAGE("WARNING: WITH_PLAYER needs WITH_GAMEENGINE")
@@ -184,6 +185,13 @@
SET(LLIBS "-lXi -lutil -lc -lm -lpthread -lstdc++")
+ IF(WITH_OPENMP)
+ SET(LLIBS "${LLIBS} -lgomp ")
+ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fopenmp ")
+ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp ")
+ ENDIF(WITH_OPENMP)
+
+
SET(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing -DXP_UNIX -Wno-char-subscripts")
SET(PLATFORM_LINKFLAGS "-pthread")
@@ -270,6 +278,11 @@
SET(CMAKE_C_FLAGS_MINSIZEREL "/D_CRT_NONSTDC_NO_DEPRECATE /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /wd4800 /wd4244 /wd4305 /O1 /Ob1 /DNDEBUG /EHsc /MT /W3 /nologo /J" CACHE STRING "MSVC MT flags " FORCE)
SET(CMAKE_C_FLAGS_RELWITHDEBINFO "/D_CRT_NONSTDC_NO_DEPRECATE /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /wd4800 /wd4244 /wd4305 /O2 /Ob1 /DNDEBUG /EHsc /MT /W3 /nologo /Zi /J" CACHE STRING "MSVC MT flags " FORCE)
+ IF(WITH_OPENMP)
+ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /openmp ")
+ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /openmp ")
+ ENDIF(WITH_OPENMP)
+
SET(SDL ${LIBDIR}/sdl)
SET(SDL_INC ${SDL}/include)
SET(SDL_LIB SDL)
@@ -347,6 +360,12 @@
SET(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing")
SET(PLATFORM_LINKFLAGS "-fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Carbon -framework AGL -framework AudioUnit -framework AudioToolbox -framework CoreAudio -framework QuickTime")
+ IF(WITH_OPENMP)
+ SET(LLIBS "${LLIBS} -lgomp ")
+ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fopenmp ")
+ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp ")
+ ENDIF(WITH_OPENMP)
+
SET(SDL ${LIBDIR}/sdl)
SET(SDL_INC ${SDL}/include)
SET(SDL_LIB SDL)
Modified: trunk/blender/SConstruct
===================================================================
--- trunk/blender/SConstruct 2008-01-29 20:53:19 UTC (rev 13459)
+++ trunk/blender/SConstruct 2008-01-29 21:01:12 UTC (rev 13460)
@@ -179,6 +179,18 @@
env['CXXFLAGS'].append('-DDISABLE_ELBEEM')
env['CCFLAGS'].append('-DDISABLE_ELBEEM')
+if env['WITH_BF_OPENMP'] == 1:
+ if env['OURPLATFORM']=='win32-vc':
+ env.Append(LINKFLAGS=['/openmp'])
+ env['CCFLAGS'].append('/openmp')
+ env['CPPFLAGS'].append('/openmp')
+ env['CXXFLAGS'].append('/openmp')
+ else:
+ env.Append(LINKFLAGS=['-lgomp'])
+ env['CCFLAGS'].append('-fopenmp')
+ env['CPPFLAGS'].append('-fopenmp')
+ env['CXXFLAGS'].append('-fopenmp')
+
#check for additional debug libnames
if env.has_key('BF_DEBUG_LIBS'):
Modified: trunk/blender/extern/SConscript
===================================================================
--- trunk/blender/extern/SConscript 2008-01-29 20:53:19 UTC (rev 13459)
+++ trunk/blender/extern/SConscript 2008-01-29 21:01:12 UTC (rev 13460)
@@ -5,9 +5,10 @@
if env['WITH_BF_GAMEENGINE']:
SConscript(['qhull/SConscript',
'solid/SConscript'])
- if env['WITH_BF_BULLET']:
- SConscript(['bullet2/src/SConscript'])
+if env['WITH_BF_BULLET']:
+ SConscript(['bullet2/src/SConscript'])
+
if env['WITH_BF_INTERNATIONAL']:
SConscript(['bFTGL/SConscript'])
Modified: trunk/blender/extern/bullet2/src/BulletDynamics/CMakeLists.txt
===================================================================
--- trunk/blender/extern/bullet2/src/BulletDynamics/CMakeLists.txt 2008-01-29 20:53:19 UTC (rev 13459)
+++ trunk/blender/extern/bullet2/src/BulletDynamics/CMakeLists.txt 2008-01-29 21:01:12 UTC (rev 13460)
@@ -13,6 +13,7 @@
ConstraintSolver/btTypedConstraint.cpp
Dynamics/btDiscreteDynamicsWorld.cpp
Dynamics/btSimpleDynamicsWorld.cpp
+ Dynamics/Bullet-C-API.cpp
Dynamics/btRigidBody.cpp
Vehicle/btRaycastVehicle.cpp
Vehicle/btWheelInfo.cpp
Modified: trunk/blender/extern/bullet2/src/SConscript
===================================================================
--- trunk/blender/extern/bullet2/src/SConscript 2008-01-29 20:53:19 UTC (rev 13459)
+++ trunk/blender/extern/bullet2/src/SConscript 2008-01-29 21:01:12 UTC (rev 13460)
@@ -34,6 +34,7 @@
"BulletDynamics/Dynamics/btSimpleDynamicsWorld.cpp",
"BulletDynamics/Dynamics/btRigidBody.cpp",
"BulletDynamics/Vehicle/btRaycastVehicle.cpp",
+ "BulletDynamics/Dynamics/Bullet-C-API.cpp",
"BulletDynamics/Vehicle/btWheelInfo.cpp"]
collision_src = ["BulletCollision/BroadphaseCollision/btAxisSweep3.cpp",
"BulletCollision/BroadphaseCollision/btBroadphaseProxy.cpp",
Modified: trunk/blender/intern/elbeem/CMakeLists.txt
===================================================================
--- trunk/blender/intern/elbeem/CMakeLists.txt 2008-01-29 20:53:19 UTC (rev 13459)
+++ trunk/blender/intern/elbeem/CMakeLists.txt 2008-01-29 21:01:12 UTC (rev 13460)
@@ -36,5 +36,9 @@
ADD_DEFINITIONS(-DUSE_MSVC6FIXES)
ENDIF(WINDOWS)
+IF(WITH_OPENMP)
+ ADD_DEFINITIONS(-DPARALLEL)
+ENDIF(WITH_OPENMP)
+
BLENDERLIB_NOLIST(bf_elbeem "${SRC}" "${INC}")
#, libtype='blender', priority=0 )
Modified: trunk/blender/intern/elbeem/SConscript
===================================================================
--- trunk/blender/intern/elbeem/SConscript 2008-01-29 20:53:19 UTC (rev 13459)
+++ trunk/blender/intern/elbeem/SConscript 2008-01-29 21:01:12 UTC (rev 13460)
@@ -5,7 +5,11 @@
sources = env.Glob('intern/*.cpp')
-defs = 'NOGUI ELBEEM_BLENDER=1'
+defs = ' NOGUI ELBEEM_BLENDER=1'
+
+if env['WITH_BF_OPENMP'] == 1:
+ defs += ' PARALLEL'
+
if env['OURPLATFORM']=='win32-vc':
defs += ' USE_MSVC6FIXES'
incs = env['BF_PNG_INC'] + ' ' + env['BF_ZLIB_INC'] + ' ' +env['BF_SDL_INC']
Modified: trunk/blender/intern/elbeem/intern/isosurface.cpp
===================================================================
--- trunk/blender/intern/elbeem/intern/isosurface.cpp 2008-01-29 20:53:19 UTC (rev 13459)
+++ trunk/blender/intern/elbeem/intern/isosurface.cpp 2008-01-29 21:01:12 UTC (rev 13460)
@@ -22,6 +22,10 @@
#define round(x) (x)
#endif
+#if PARALLEL==1
+#include <omp.h>
+#endif
+
/******************************************************************************
* Constructor
*****************************************************************************/
@@ -160,13 +164,6 @@
mpEdgeVerticesZ[i] = -1;
}
- ntlVec3Gfx pos[8];
- float value[8];
- int cubeIndex; // index entry of the cube
- int triIndices[12]; // vertex indices
- int *eVert[12];
- IsoLevelVertex ilv;
-
// edges between which points?
const int mcEdges[24] = {
0,1, 1,2, 2,3, 3,0,
@@ -193,7 +190,12 @@
px = mStart[0]-gsx*0.5;
for(int i=1;i<(mSizex-2);i++) {
px += gsx;
-
+ int cubeIndex; // index entry of the cube
+ float value[8];
+ int triIndices[12]; // vertex indices
+ int *eVert[12];
+ IsoLevelVertex ilv;
+
value[0] = *getData(i ,j ,k );
value[1] = *getData(i+1,j ,k );
value[2] = *getData(i+1,j+1,k );
@@ -239,6 +241,7 @@
eVert[11] = &mpEdgeVerticesZ[ ISOLEVEL_INDEX( i+0, j+1, edgek+0) ];
// grid positions
+ ntlVec3Gfx pos[8];
pos[0] = ntlVec3Gfx(px ,py ,pz);
pos[1] = ntlVec3Gfx(px+gsx,py ,pz);
pos[2] = ntlVec3Gfx(px+gsx,py+gsy,pz);
@@ -344,10 +347,7 @@
if(mUseFullEdgeArrays) {
errMsg("IsoSurface::triangulate","Disabling mUseFullEdgeArrays!");
}
-
- // subdiv local arrays
- gfxReal orgval[8];
- gfxReal subdAr[2][11][11]; // max 10 subdivs!
+
ParticleObject* *arppnt = new ParticleObject*[mSizez*mSizey*mSizex];
// construct pointers
@@ -408,13 +408,25 @@
debMsgStd("IsoSurface::triangulate",DM_MSG,"Starting. Parts in use:"<<pInUse<<", Subdivs:"<<mSubdivs, 9);
pz = mStart[2]-(double)(0.*gsz)-0.5*orgGsz;
+
for(int ok=1;ok<(mSizez-2)*mSubdivs;ok++) {
pz += gsz;
const int k = ok/mSubdivs;
if(k<=0) continue; // skip zero plane
+#if PARALLEL==1
+#pragma omp parallel for
+#endif
for(int j=1;j<(mSizey-2);j++) {
for(int i=1;i<(mSizex-2);i++) {
-
+ float value[8];
+ ntlVec3Gfx pos[8];
+ int cubeIndex; // index entry of the cube
+ int triIndices[12]; // vertex indices
+ int *eVert[12];
+ IsoLevelVertex ilv;
+ gfxReal orgval[8];
+ gfxReal subdAr[2][11][11]; // max 10 subdivs!
+
orgval[0] = *getData(i ,j ,k );
orgval[1] = *getData(i+1,j ,k );
orgval[2] = *getData(i+1,j+1,k ); // with subdivs
@@ -426,6 +438,7 @@
// prebuild subsampled array slice
const int sdkOffset = ok-k*mSubdivs;
+
for(int sdk=0; sdk<2; sdk++)
for(int sdj=0; sdj<mSubdivs+1; sdj++)
for(int sdi=0; sdi<mSubdivs+1; sdi++) {
@@ -580,8 +593,13 @@
// init isolevel vertex
ilv.v = p1 + (p2-p1)*mu; // with subdivs
+#if PARALLEL==1
+#pragma omp critical
+#endif
+ {
mPoints.push_back( ilv );
triIndices[e] = (mPoints.size()-1);
+ }
// store vertex
*eVert[ e ] = triIndices[e];
} else {
@@ -591,23 +609,27 @@
} // along all edges
}
// removed cutoff treatment...
-
+
// Create the triangles...
+#if PARALLEL==1
+#pragma omp critical
+#endif
+ {
for(int e=0; mcTriTable[cubeIndex][e]!=-1; e+=3) {
mIndices.push_back( triIndices[ mcTriTable[cubeIndex][e+0] ] );
mIndices.push_back( triIndices[ mcTriTable[cubeIndex][e+1] ] ); // with subdivs
mIndices.push_back( triIndices[ mcTriTable[cubeIndex][e+2] ] );
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list