scons error http://www.pasteall.org/20713
Daniel Salazar 3Developer.com On Sat, Apr 9, 2011 at 5:19 PM, Joseph Eagar <[email protected]> wrote: > Revision: 36073 > > http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=36073 > Author: joeedh > Date: 2011-04-09 23:19:11 +0000 (Sat, 09 Apr 2011) > Log Message: > ----------- > =cloth collisions= > > Plugged the eltopo library into the cloth solver. > I was playing with it earlier, and it's so easy to > use I decided to quickly put it in (trunk's) cloth. > > See http://www.cs.ubc.ca/labs/imager/tr/2009/eltopo/eltopo.html > . The authors are on the bleeding edge of continuous collision > detection (one of them did ILM's cloth sim). > I > don't really have to time to plug it into softbody, particles, > bullet, fluid, etc, but doing so would be pretty straightforward. > I'll leave that up to someone else. > > To use, turn on USE_ELTOPO (in cmake) or WITH_BF_ELTOPO in scons. > > Modified Paths: > -------------- > trunk/blender/build_files/cmake/FindPythonLibsUnix.cmake > trunk/blender/build_files/scons/tools/btools.py > trunk/blender/extern/CMakeLists.txt > trunk/blender/extern/SConscript > trunk/blender/source/blender/blenkernel/BKE_collision.h > trunk/blender/source/blender/blenkernel/CMakeLists.txt > trunk/blender/source/blender/blenkernel/SConscript > trunk/blender/source/blender/blenkernel/intern/collision.c > trunk/blender/source/blenderplayer/CMakeLists.txt > trunk/blender/source/creator/CMakeLists.txt > > Modified: trunk/blender/build_files/cmake/FindPythonLibsUnix.cmake > =================================================================== > --- trunk/blender/build_files/cmake/FindPythonLibsUnix.cmake 2011-04-09 > 19:46:17 UTC (rev 36072) > +++ trunk/blender/build_files/cmake/FindPythonLibsUnix.cmake 2011-04-09 > 23:19:11 UTC (rev 36073) > @@ -4,7 +4,7 @@ > # PYTHON_INCLUDE_DIRS > # PYTHON_LIBRARY > # PYTHON_LIBPATH > -# PYTHON_LINKFLAGS > +# PYTHON_LINKFLAGSPYTHON > > #============================================================================= > > > Modified: trunk/blender/build_files/scons/tools/btools.py > =================================================================== > --- trunk/blender/build_files/scons/tools/btools.py 2011-04-09 19:46:17 > UTC (rev 36072) > +++ trunk/blender/build_files/scons/tools/btools.py 2011-04-09 23:19:11 > UTC (rev 36073) > @@ -99,7 +99,7 @@ > 'WITH_BF_INTERNATIONAL', > 'BF_GETTEXT', 'BF_GETTEXT_INC', 'BF_GETTEXT_LIB', > 'WITH_BF_GETTEXT_STATIC', 'BF_GETTEXT_LIB_STATIC', 'BF_GETTEXT_LIBPATH', > 'WITH_BF_ICONV', 'BF_ICONV', 'BF_ICONV_INC', 'BF_ICONV_LIB', > 'BF_ICONV_LIBPATH', > - 'WITH_BF_GAMEENGINE', 'WITH_BF_BULLET', 'BF_BULLET', > 'BF_BULLET_INC', 'BF_BULLET_LIB', > + 'WITH_BF_GAMEENGINE', 'WITH_BF_BULLET', 'WITH_BF_ELTOPO', > 'BF_BULLET', 'BF_BULLET_INC', 'BF_BULLET_LIB', > 'BF_WINTAB', 'BF_WINTAB_INC', > 'WITH_BF_FREETYPE', 'BF_FREETYPE', 'BF_FREETYPE_INC', > 'BF_FREETYPE_LIB', 'BF_FREETYPE_LIBPATH', 'BF_FREETYPE_LIB_STATIC', > 'WITH_BF_FREETYPE_STATIC', > 'WITH_BF_QUICKTIME', 'BF_QUICKTIME', 'BF_QUICKTIME_INC', > 'BF_QUICKTIME_LIB', 'BF_QUICKTIME_LIBPATH', > @@ -365,6 +365,8 @@ > (BoolVariable('WITH_BF_GAMEENGINE', 'Build with gameengine' , False)), > > (BoolVariable('WITH_BF_BULLET', 'Use Bullet if true', True)), > + (BoolVariable('WITH_BF_ELTOPO', 'Use Eltopo collision library if > true', False)), > + > ('BF_BULLET', 'Bullet base dir', ''), > ('BF_BULLET_INC', 'Bullet include path', ''), > ('BF_BULLET_LIB', 'Bullet library', ''), > > Modified: trunk/blender/extern/CMakeLists.txt > =================================================================== > --- trunk/blender/extern/CMakeLists.txt 2011-04-09 19:46:17 UTC (rev 36072) > +++ trunk/blender/extern/CMakeLists.txt 2011-04-09 23:19:11 UTC (rev 36073) > @@ -31,6 +31,10 @@ > add_subdirectory(bullet2) > endif() > > +if(WITH_ELTOPO) > + add_subdirectory(eltopo) > +endif() > + > if(WITH_BINRELOC) > add_subdirectory(binreloc) > endif() > > Modified: trunk/blender/extern/SConscript > =================================================================== > --- trunk/blender/extern/SConscript 2011-04-09 19:46:17 UTC (rev 36072) > +++ trunk/blender/extern/SConscript 2011-04-09 23:19:11 UTC (rev 36073) > @@ -4,6 +4,9 @@ > > SConscript(['glew/SConscript']) > > +if env['WITH_BF_ELTOPO']: > + SConscript(['eltopo/SConscript']) > + > if env['WITH_BF_BULLET']: > SConscript(['bullet2/src/SConscript']) > > > Modified: trunk/blender/source/blender/blenkernel/BKE_collision.h > =================================================================== > --- trunk/blender/source/blender/blenkernel/BKE_collision.h 2011-04-09 > 19:46:17 UTC (rev 36072) > +++ trunk/blender/source/blender/blenkernel/BKE_collision.h 2011-04-09 > 23:19:11 UTC (rev 36073) > @@ -63,7 +63,11 @@ > /* COLLISION FLAGS */ > typedef enum > { > - COLLISION_IN_FUTURE = ( 1 << 1 ), > + COLLISION_IN_FUTURE = (1 << 1), > +#ifdef USE_ELTOPO > + COLLISION_USE_COLLFACE = (1 << 2), > + COLLISION_IS_EDGES = (1 << 3), > +#endif > } COLLISION_FLAGS; > > > @@ -81,7 +85,13 @@ > float pa[3], pb[3]; // collision point p1 on face1, p2 on face2 > int flag; > float time; // collision time, from 0 up to 1 > +#ifdef USE_ELTOPO /*either ap* or bp* can be set, but not both*/ > + float bary[3]; > + int ap1, ap2, ap3, collp, bp1, bp2, bp3; > + int collface; > +#else > int ap1, ap2, ap3, bp1, bp2, bp3; > +#endif > int pointsb[4]; > } > CollPair; > @@ -109,6 +119,7 @@ > float pa[3], pb[3]; // collision point p1 on face1, p2 on face2 > } > FaceCollPair; > + > //////////////////////////////////////// > > > > Modified: trunk/blender/source/blender/blenkernel/CMakeLists.txt > =================================================================== > --- trunk/blender/source/blender/blenkernel/CMakeLists.txt 2011-04-09 > 19:46:17 UTC (rev 36072) > +++ trunk/blender/source/blender/blenkernel/CMakeLists.txt 2011-04-09 > 23:19:11 UTC (rev 36073) > @@ -140,7 +140,7 @@ > intern/writeavi.c > intern/writeffmpeg.c > intern/writeframeserver.c > - > + > BKE_DerivedMesh.h > BKE_action.h > BKE_anim.h > @@ -235,6 +235,11 @@ > add_definitions(-DUSE_BULLET) > endif() > > +if(WITH_ELTOPO) > + list(APPEND INC ../../../extern/eltopo) > + add_definitions(-DUSE_ELTOPO) > +endif() > + > if(WITH_IMAGE_OPENEXR) > add_definitions(-DWITH_OPENEXR) > endif() > > Modified: trunk/blender/source/blender/blenkernel/SConscript > =================================================================== > --- trunk/blender/source/blender/blenkernel/SConscript 2011-04-09 19:46:17 > UTC (rev 36072) > +++ trunk/blender/source/blender/blenkernel/SConscript 2011-04-09 23:19:11 > UTC (rev 36073) > @@ -27,6 +27,10 @@ > if env['BF_DEBUG']: > defs.append('DEBUG') > > +if env['WITH_BF_ELTOPO']: > + incs += ' ../../../extern/eltopo' > + defs.append('USE_ELTOPO') > + > if env['WITH_BF_QUICKTIME']: > incs += ' ../quicktime' > > > Modified: trunk/blender/source/blender/blenkernel/intern/collision.c > =================================================================== > --- trunk/blender/source/blender/blenkernel/intern/collision.c 2011-04-09 > 19:46:17 UTC (rev 36072) > +++ trunk/blender/source/blender/blenkernel/intern/collision.c 2011-04-09 > 23:19:11 UTC (rev 36073) > @@ -48,6 +48,8 @@ > #include "BLI_math.h" > #include "BLI_edgehash.h" > #include "BLI_utildefines.h" > +#include "BLI_ghash.h" > +#include "BLI_memarena.h" > > #include "BKE_DerivedMesh.h" > #include "BKE_global.h" > @@ -63,7 +65,11 @@ > #include "BLI_kdopbvh.h" > #include "BKE_collision.h" > > +#ifdef USE_ELTOPO > +#include "eltopo-capi.h" > +#endif > > + > /*********************************** > Collision modifier code start > ***********************************/ > @@ -486,7 +492,7 @@ > VECADDMUL ( to, v3, w3 ); > } > > - > +#ifndef USE_ELTOPO > static int cloth_collision_response_static ( ClothModifierData *clmd, > CollisionModifierData *collmd, CollPair *collpair, CollPair *collision_end ) > { > int result = 0; > @@ -601,7 +607,663 @@ > } > return result; > } > +#endif > > +#ifdef USE_ELTOPO > +typedef struct edgepairkey { > + int a1, a2, b1, b2; > +} edgepairkey; > + > +unsigned int edgepair_hash(void *vkey) > +{ > + edgepairkey *key = vkey; > + int keys[4] = {key->a1, key->a2, key->b1, key->b2}; > + int i, j; > + > + for (i=0; i<4; i++) { > + for (j=0; j<3; j++) { > + if (keys[j] >= keys[j+1]) { > + SWAP(int, keys[j], keys[j+1]); > + } > + } > + } > + > + return keys[0]*101 + keys[1]*72 + keys[2]*53 + keys[3]*34; > +} > + > +int edgepair_cmp(const void *va, const void *vb) > +{ > + edgepairkey *a = va, *b = vb; > + int keysa[4] = {a->a1, a->a2, a->b1, a->b2}; > + int keysb[4] = {b->a1, b->a2, b->b1, b->b2}; > + int i; > + > + for (i=0; i<4; i++) { > + int j, ok=0; > + for (j=0; j<4; j++) { > + if (keysa[i] == keysa[j]) { > + ok = 1; > + break; > + } > + } > + if (!ok) > + return -1; > + } > + > + return 0; > +} > + > +static void get_edgepairkey(edgepairkey *key, int a1, int a2, int b1, int b2) > +{ > + key->a1 = a1; > + key->a2 = a2; > + key->b1 = b1; > + key->b2 = b2; > +} > + > +/*an immense amount of duplication goes on here. . .a major performance hit, > I'm sure*/ > +static CollPair* cloth_edge_collision ( ModifierData *md1, ModifierData *md2, > + > BVHTreeOverlap *overlap, CollPair *collpair, > + > GHash *visithash, MemArena *arena) > +{ > + ClothModifierData *clmd = ( ClothModifierData * ) md1; > + CollisionModifierData *collmd = ( CollisionModifierData * ) md2; > + MFace *face1=NULL, *face2 = NULL; > + ClothVertex *verts1 = clmd->clothObject->verts; > + double distance = 0; > + edgepairkey *key, tstkey; > + float epsilon1 = clmd->coll_parms->epsilon; > + float epsilon2 = BLI_bvhtree_getepsilon ( collmd->bvhtree ); > + float no[3], uv[3], t, relnor; > + int i, i1, i2, i3, i4, i5, i6; > + Cloth *cloth = clmd->clothObject; > + float n1[3], n2[3], off[3], v1[2][3], v2[2][3], v3[2][3], v4[2][3], > v5[2][3], v6[2][3]; > + void **verts[] = {v1, v2, v3, v4, v5, v6}; > + int j, ret, bp1, bp2, bp3, ap1, ap2, ap3, table[6]; > + > + face1 = & ( clmd->clothObject->mfaces[overlap->indexA] ); > + face2 = & ( collmd->mfaces[overlap->indexB] ); > + > + // check all 4 possible collisions > + for ( i = 0; i < 4; i++ ) > + { > + if ( i == 0 ) > + { > + // fill faceA > + ap1 = face1->v1; > + ap2 = face1->v2; > + ap3 = face1->v3; > + > + // fill faceB > + bp1 = face2->v1; > + bp2 = face2->v2; > + bp3 = face2->v3; > + } > + else if ( i == 1 ) > + { > + if ( face1->v4 ) > + { > + // fill faceA > + ap1 = face1->v1; > + ap2 = face1->v3; > + ap3 = face1->v4; > + > + // fill faceB > + bp1 = face2->v1; > + bp2 = face2->v2; > + bp3 = face2->v3; > + } > + else { > + continue; > + } > + } > + if ( i == 2 ) > + { > + if ( face2->v4 ) > + { > + // fill faceA > + ap1 = face1->v1; > + ap2 = face1->v2; > + ap3 = face1->v3; > + > + // fill faceB > + bp1 = face2->v1; > + bp2 = face2->v3; > + bp3 = face2->v4; > + } > + else { > + continue; > + } > + } > + else if ( i == 3 ) > + { > + if ( face1->v4 && face2->v4 ) > + { > + // fill faceA > + ap1 = face1->v1; > + ap2 = face1->v3; > + ap3 = face1->v4; > + > + // fill faceB > + bp1 = face2->v1; > + bp2 = face2->v3; > + bp3 = face2->v4; > + } > + else { > + continue; > + } > + } > + > + copy_v3_v3(v1[0], cloth->verts[ap1].txold); > + copy_v3_v3(v1[1], cloth->verts[ap1].tx); > + copy_v3_v3(v2[0], cloth->verts[ap2].txold); > + copy_v3_v3(v2[1], cloth->verts[ap2].tx); > + copy_v3_v3(v3[0], cloth->verts[ap3].txold); > + copy_v3_v3(v3[1], cloth->verts[ap3].tx); > + > + copy_v3_v3(v4[0], collmd->current_x[bp1].co); > + copy_v3_v3(v4[1], collmd->current_xnew[bp1].co); > + copy_v3_v3(v5[0], collmd->current_x[bp2].co); > + copy_v3_v3(v5[1], collmd->current_xnew[bp2].co); > + copy_v3_v3(v6[0], collmd->current_x[bp3].co); > + copy_v3_v3(v6[1], collmd->current_xnew[bp3].co); > + > + normal_tri_v3(n2, v4[1], v5[1], v6[1]); > + > + /*offset new positions a bit, to account for margins*/ > + copy_v3_v3(off, n2); > + mul_v3_fl(off, epsilon1 + epsilon2 + ALMOST_ZERO); > + add_v3_v3(v4[1], off); add_v3_v3(v5[1], off); > add_v3_v3(v6[1], off); > + > + i1 = ap1; i2 = ap2; i3 = ap3; > + i4 = bp1; i5 = bp2; i6 = bp3; > + > + for (j=0; j<3; j++) { > + int collp1, collp2, k, j2 = (j+1)%3; > + > + table[0] = ap1; table[1] = ap2; table[2] = ap3; > + table[3] = bp1; table[4] = bp2; table[5] = bp3; > > @@ Diff output truncated at 10240 characters. @@ > _______________________________________________ > Bf-blender-cvs mailing list > [email protected] > http://lists.blender.org/mailman/listinfo/bf-blender-cvs > _______________________________________________ Bf-committers mailing list [email protected] http://lists.blender.org/mailman/listinfo/bf-committers
