[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