[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [36419] trunk/blender: =trunk=

Joseph Eagar joeedh at gmail.com
Sun May 1 23:39:14 CEST 2011


Revision: 36419
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=36419
Author:   joeedh
Date:     2011-05-01 21:39:13 +0000 (Sun, 01 May 2011)
Log Message:
-----------
=trunk=
Recommitted eltopo collision code (but disabled by default)
with Genscher's permission.

To use, you need to install liblapack and libblas

Modified Paths:
--------------
    trunk/blender/CMakeLists.txt
    trunk/blender/build_files/scons/tools/btools.py
    trunk/blender/extern/CMakeLists.txt
    trunk/blender/extern/SConscript
    trunk/blender/release/scripts/startup/bl_ui/properties_physics_cloth.py
    trunk/blender/source/blender/blenkernel/BKE_cloth.h
    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/cloth.c
    trunk/blender/source/blender/blenkernel/intern/collision.c
    trunk/blender/source/blender/blenkernel/intern/implicit.c
    trunk/blender/source/blender/blenlib/BLI_math_geom.h
    trunk/blender/source/blender/blenlib/intern/math_geom.c
    trunk/blender/source/blender/makesdna/DNA_cloth_types.h
    trunk/blender/source/blender/makesrna/intern/rna_cloth.c
    trunk/blender/source/creator/CMakeLists.txt

Added Paths:
-----------
    trunk/blender/extern/eltopo/
    trunk/blender/extern/eltopo/CMakeLists.txt
    trunk/blender/extern/eltopo/SConscript
    trunk/blender/extern/eltopo/common/
    trunk/blender/extern/eltopo/common/array1.h
    trunk/blender/extern/eltopo/common/array2.h
    trunk/blender/extern/eltopo/common/array3.h
    trunk/blender/extern/eltopo/common/array3_utils.h
    trunk/blender/extern/eltopo/common/bfstream.cpp
    trunk/blender/extern/eltopo/common/bfstream.h
    trunk/blender/extern/eltopo/common/blas_wrapper.h
    trunk/blender/extern/eltopo/common/ccd_wrapper.cpp
    trunk/blender/extern/eltopo/common/ccd_wrapper.h
    trunk/blender/extern/eltopo/common/clamped_spline.cpp
    trunk/blender/extern/eltopo/common/clamped_spline.h
    trunk/blender/extern/eltopo/common/collisionqueries.cpp
    trunk/blender/extern/eltopo/common/collisionqueries.h
    trunk/blender/extern/eltopo/common/cubic_ccd_wrapper.cpp
    trunk/blender/extern/eltopo/common/fe_ccd_wrapper.cpp
    trunk/blender/extern/eltopo/common/fileio.cpp
    trunk/blender/extern/eltopo/common/fileio.h
    trunk/blender/extern/eltopo/common/gluvi.cpp
    trunk/blender/extern/eltopo/common/gluvi.h
    trunk/blender/extern/eltopo/common/grid3.h
    trunk/blender/extern/eltopo/common/hashtable.h
    trunk/blender/extern/eltopo/common/lapack_wrapper.h
    trunk/blender/extern/eltopo/common/levelset.cpp
    trunk/blender/extern/eltopo/common/levelset.h
    trunk/blender/extern/eltopo/common/makelevelset2.cpp
    trunk/blender/extern/eltopo/common/makelevelset2.h
    trunk/blender/extern/eltopo/common/makelevelset3.cpp
    trunk/blender/extern/eltopo/common/makelevelset3.h
    trunk/blender/extern/eltopo/common/marching_triangles.cpp
    trunk/blender/extern/eltopo/common/marching_triangles.h
    trunk/blender/extern/eltopo/common/mat.h
    trunk/blender/extern/eltopo/common/matlapack.h
    trunk/blender/extern/eltopo/common/meshes/
    trunk/blender/extern/eltopo/common/meshes/Edge.hpp
    trunk/blender/extern/eltopo/common/meshes/ObjLoader.cpp
    trunk/blender/extern/eltopo/common/meshes/ObjLoader.hpp
    trunk/blender/extern/eltopo/common/meshes/TriangleIndex.hpp
    trunk/blender/extern/eltopo/common/meshes/meshloader.cpp
    trunk/blender/extern/eltopo/common/meshes/meshloader.h
    trunk/blender/extern/eltopo/common/newsparse/
    trunk/blender/extern/eltopo/common/newsparse/dense_matrix.cpp
    trunk/blender/extern/eltopo/common/newsparse/dense_matrix.h
    trunk/blender/extern/eltopo/common/newsparse/krylov_solvers.cpp
    trunk/blender/extern/eltopo/common/newsparse/krylov_solvers.h
    trunk/blender/extern/eltopo/common/newsparse/linear_operator.h
    trunk/blender/extern/eltopo/common/newsparse/sparse_matrix.cpp
    trunk/blender/extern/eltopo/common/newsparse/sparse_matrix.h
    trunk/blender/extern/eltopo/common/openglutils.cpp
    trunk/blender/extern/eltopo/common/openglutils.h
    trunk/blender/extern/eltopo/common/predicates.cpp
    trunk/blender/extern/eltopo/common/predicates.h
    trunk/blender/extern/eltopo/common/sos_ccd_wrapper.cpp
    trunk/blender/extern/eltopo/common/sparse/
    trunk/blender/extern/eltopo/common/sparse/cgsolver.h
    trunk/blender/extern/eltopo/common/sparse/crsolver.h
    trunk/blender/extern/eltopo/common/sparse/incomplete_qr.cpp
    trunk/blender/extern/eltopo/common/sparse/incomplete_qr.h
    trunk/blender/extern/eltopo/common/sparse/sparseilu.h
    trunk/blender/extern/eltopo/common/sparse/sparsematrix.h
    trunk/blender/extern/eltopo/common/sparse/sparsemilu.h
    trunk/blender/extern/eltopo/common/tunicate/
    trunk/blender/extern/eltopo/common/tunicate/expansion.cpp
    trunk/blender/extern/eltopo/common/tunicate/expansion.h
    trunk/blender/extern/eltopo/common/tunicate/intersection.cpp
    trunk/blender/extern/eltopo/common/tunicate/neg.cpp
    trunk/blender/extern/eltopo/common/tunicate/neg.h
    trunk/blender/extern/eltopo/common/tunicate/orientation.cpp
    trunk/blender/extern/eltopo/common/tunicate/sos_intersection.cpp
    trunk/blender/extern/eltopo/common/tunicate/sos_orientation.cpp
    trunk/blender/extern/eltopo/common/tunicate/tunicate.h
    trunk/blender/extern/eltopo/common/util.h
    trunk/blender/extern/eltopo/common/vec.h
    trunk/blender/extern/eltopo/common/vector_math.h
    trunk/blender/extern/eltopo/common/wallclocktime.cpp
    trunk/blender/extern/eltopo/common/wallclocktime.h
    trunk/blender/extern/eltopo/eltopo-capi.cpp
    trunk/blender/extern/eltopo/eltopo-capi.h
    trunk/blender/extern/eltopo/eltopo3d/
    trunk/blender/extern/eltopo/eltopo3d/Makefile
    trunk/blender/extern/eltopo/eltopo3d/Makefile.example_defs
    trunk/blender/extern/eltopo/eltopo3d/Makefile.inc
    trunk/blender/extern/eltopo/eltopo3d/Makefile.local_defs
    trunk/blender/extern/eltopo/eltopo3d/accelerationgrid.cpp
    trunk/blender/extern/eltopo/eltopo3d/accelerationgrid.h
    trunk/blender/extern/eltopo/eltopo3d/broadphase.h
    trunk/blender/extern/eltopo/eltopo3d/broadphase_blenderbvh.cpp
    trunk/blender/extern/eltopo/eltopo3d/broadphase_blenderbvh.h
    trunk/blender/extern/eltopo/eltopo3d/broadphasegrid.cpp
    trunk/blender/extern/eltopo/eltopo3d/broadphasegrid.h
    trunk/blender/extern/eltopo/eltopo3d/dynamicsurface.cpp
    trunk/blender/extern/eltopo/eltopo3d/dynamicsurface.h
    trunk/blender/extern/eltopo/eltopo3d/eltopo.cpp
    trunk/blender/extern/eltopo/eltopo3d/eltopo.h
    trunk/blender/extern/eltopo/eltopo3d/nondestructivetrimesh.cpp
    trunk/blender/extern/eltopo/eltopo3d/nondestructivetrimesh.h
    trunk/blender/extern/eltopo/eltopo3d/obj/
    trunk/blender/extern/eltopo/eltopo3d/obj_debug/
    trunk/blender/extern/eltopo/eltopo3d/options.h
    trunk/blender/extern/eltopo/eltopo3d/readme.txt
    trunk/blender/extern/eltopo/eltopo3d/subdivisionscheme.cpp
    trunk/blender/extern/eltopo/eltopo3d/subdivisionscheme.h
    trunk/blender/extern/eltopo/eltopo3d/surftrack.cpp
    trunk/blender/extern/eltopo/eltopo3d/surftrack.h
    trunk/blender/extern/eltopo/readme.txt

Modified: trunk/blender/CMakeLists.txt
===================================================================
--- trunk/blender/CMakeLists.txt	2011-05-01 21:12:45 UTC (rev 36418)
+++ trunk/blender/CMakeLists.txt	2011-05-01 21:39:13 UTC (rev 36419)
@@ -114,6 +114,7 @@
 option(WITH_IK_ITASC      "Enable ITASC IK solver (only disable for development & for incompatible C++ compilers)" ON)
 option(WITH_FFTW3         "Enable FFTW3 support (Used for smoke and audio effects)" OFF)
 option(WITH_BULLET        "Enable Bullet (Physics Engine)" ON)
+option(WITH_ELTOPO        "Enable Eltopo Continuous Collision Engine" OFF)
 option(WITH_GAMEENGINE    "Enable Game Engine" ON)
 option(WITH_PLAYER        "Build Player" OFF)
 # (unix defaults to OpenMP On)

Modified: trunk/blender/build_files/scons/tools/btools.py
===================================================================
--- trunk/blender/build_files/scons/tools/btools.py	2011-05-01 21:12:45 UTC (rev 36418)
+++ trunk/blender/build_files/scons/tools/btools.py	2011-05-01 21:39:13 UTC (rev 36419)
@@ -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-05-01 21:12:45 UTC (rev 36418)
+++ trunk/blender/extern/CMakeLists.txt	2011-05-01 21:39:13 UTC (rev 36419)
@@ -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-05-01 21:12:45 UTC (rev 36418)
+++ trunk/blender/extern/SConscript	2011-05-01 21:39:13 UTC (rev 36419)
@@ -4,6 +4,9 @@
 
 SConscript(['glew/SConscript'])
 
+if env['WITH_BF_ELTOPO']:
+    SConscript(['eltopo/SConscript'])
+
 if env['WITH_BF_BULLET']:
     SConscript(['bullet2/src/SConscript'])
 

Added: trunk/blender/extern/eltopo/CMakeLists.txt
===================================================================
--- trunk/blender/extern/eltopo/CMakeLists.txt	                        (rev 0)
+++ trunk/blender/extern/eltopo/CMakeLists.txt	2011-05-01 21:39:13 UTC (rev 36419)
@@ -0,0 +1,42 @@
+# $Id: CMakeLists.txt 23630 2009-10-05 07:08:59Z campbellbarton $
+# ***** BEGIN GPL LICENSE BLOCK *****
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+# The Original Code is Copyright (C) 2006, Blender Foundation
+# All rights reserved.
+#
+# The Original Code is: all of this file.
+#
+# Contributor(s): Jacques Beaurai, Erwin Coumans
+#
+# ***** END GPL LICENSE BLOCK *****
+
+SET(INC . common common/newsparse eltopo3d common/tunicate common/meshes)
+
+FILE(GLOB SRC
+	common/*.cpp
+	common/newsparse/*.cpp
+	common/tunicate/*.cpp
+	common/sparse/*.cpp
+	eltopo3d/*.cpp
+	./*.cpp
+)
+
+ADD_DEFINITIONS(-DNOGUI)
+ADD_DEFINITIONS(-DUSE_FORTRAN_BLAS)
+
+blender_add_lib(extern_eltopo "${SRC}" "${INC}")
+

Added: trunk/blender/extern/eltopo/SConscript
===================================================================
--- trunk/blender/extern/eltopo/SConscript	                        (rev 0)
+++ trunk/blender/extern/eltopo/SConscript	2011-05-01 21:39:13 UTC (rev 36419)
@@ -0,0 +1,28 @@
+#!/usr/bin/python
+import sys
+import os
+
+Import('env')
+
+defs = ' -DUSE_FORTRAN_BLAS -DNOGUI'
+cflags = []
+
+if env['OURPLATFORM'] in ('win32-vc', 'win64-vc'):
+    defs += ' WIN32 NDEBUG _WINDOWS'
+    #cflags += ['/MT', '/W3', '/GX', '/O2', '/Op']
+    cflags += ['/MT', '/W3', '/GX', '/Og', '/Ot', '/Ob1', '/Op', '/G6', '/O3', '/EHcs']
+elif env['OURPLATFORM']=='win32-mingw':
+    defs += ' NDEBUG'
+    cflags += ['-O2']
+elif sys.platform=='linux2' or sys.platform=='linux-i386' or sys.platform=='freebsd4' or sys.platform=='freebsd5':
+    defs += ' NDEBUG'
+    cflags += ['-O2']
+elif sys.platform=='darwin':
+    defs += ' NDEBUG'
+    cflags += ['-O2','-pipe', '-fPIC', '-funsigned-char', '-ffast-math']
+
+eltopo_src = env.Glob("common/*.cpp") + env.Glob("eltopo3d/*.cpp") + env.Glob("common/newsparse/*.cpp") + env.Glob("common/sparse/*.cpp") + env.Glob("common/meshes/*.cpp") + ["eltopo-capi.cpp"]
+incs = '. common eltopo3d common/newsparse common/meshes common/sparse'
+
+env.BlenderLib ( libname = 'extern_eltopo3d', sources=eltopo_src, includes=Split(incs), defines=Split(defs), libtype=['extern','player'], priority=[20,137], compileflags=cflags )
+

Added: trunk/blender/extern/eltopo/common/array1.h
===================================================================
--- trunk/blender/extern/eltopo/common/array1.h	                        (rev 0)
+++ trunk/blender/extern/eltopo/common/array1.h	2011-05-01 21:39:13 UTC (rev 36419)
@@ -0,0 +1,794 @@
+#ifndef ARRAY1_H
+#define ARRAY1_H
+
+#include <algorithm>
+#include <cassert>
+#include <climits>
+#include <cstdlib>
+#include <iostream>
+#include <stdexcept>
+#include <cstring>
+#include <vector>
+
+// In this file:
+//   Array1<T>: a dynamic 1D array for plain-old-data (not objects)
+//   WrapArray1<T>: a 1D array wrapper around an existing array (perhaps objects, perhaps data)
+// For the most part std::vector operations are supported, though for the Wrap version
+// note that memory is never allocated/deleted and constructor/destructors are never called
+// from within the class, thus only shallow copies can be made and some operations such as
+// resize() and push_back() are limited.
+// Note: for the most part assertions are done with assert(), not exceptions...
+
+// gross template hacking to determine if a type is integral or not
+struct Array1True {};
+struct Array1False {};
+template<typename T> struct Array1IsIntegral{ typedef Array1False type; }; // default: no (specializations to yes follow)
+template<> struct Array1IsIntegral<bool>{ typedef Array1True type; };
+template<> struct Array1IsIntegral<char>{ typedef Array1True type; };
+template<> struct Array1IsIntegral<signed char>{ typedef Array1True type; };
+template<> struct Array1IsIntegral<unsigned char>{ typedef Array1True type; };
+template<> struct Array1IsIntegral<short>{ typedef Array1True type; };
+template<> struct Array1IsIntegral<unsigned short>{ typedef Array1True type; };
+template<> struct Array1IsIntegral<int>{ typedef Array1True type; };
+template<> struct Array1IsIntegral<unsigned int>{ typedef Array1True type; };
+template<> struct Array1IsIntegral<long>{ typedef Array1True type; };
+template<> struct Array1IsIntegral<unsigned long>{ typedef Array1True type; };
+//template<> struct Array1IsIntegral<long long>{ typedef Array1True type; };
+//template<> struct Array1IsIntegral<unsigned long long>{ typedef Array1True type; };
+
+//============================================================================
+template<typename T>
+struct Array1
+{
+   // STL-friendly typedefs
+
+   typedef T* iterator;
+   typedef const T* const_iterator;
+   typedef unsigned long size_type;
+   typedef long difference_type;
+   typedef T& reference;
+   typedef const T& const_reference;
+   typedef T value_type;
+   typedef T* pointer;
+   typedef const T* const_pointer;
+   typedef std::reverse_iterator<iterator> reverse_iterator;
+   typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
+
+   // the actual representation
+
+   unsigned long n;
+   unsigned long max_n;
+   T* data;
+
+   // STL vector's interface, with additions, but only valid when used with plain-old-data
+
+   Array1(void)
+      : n(0), max_n(0), data(0)
+   {}
+
+   // note: default initial values are zero
+   Array1(unsigned long n_)
+      : n(0), max_n(0), data(0)
+   {
+      if(n_>ULONG_MAX/sizeof(T)) throw std::bad_alloc();
+      data=(T*)std::calloc(n_, sizeof(T));
+      if(!data) throw std::bad_alloc();
+      n=n_;
+      max_n=n_;
+   }
+
+   Array1(unsigned long n_, const T& value)
+      : n(0), max_n(0), data(0)
+   {
+      if(n_>ULONG_MAX/sizeof(T)) throw std::bad_alloc();
+      data=(T*)std::calloc(n_, sizeof(T));
+      if(!data) throw std::bad_alloc();
+      n=n_;
+      max_n=n_;
+      for(unsigned long i=0; i<n; ++i) data[i]=value;
+   }
+
+   Array1(unsigned long n_, const T& value, unsigned long max_n_)
+      : n(0), max_n(0), data(0)
+   {
+      assert(n_<=max_n_);
+      if(max_n_>ULONG_MAX/sizeof(T)) throw std::bad_alloc();
+      data=(T*)std::calloc(max_n_, sizeof(T));
+      if(!data) throw std::bad_alloc();
+      n=n_;
+      max_n=max_n_;
+      for(unsigned long i=0; i<n; ++i) data[i]=value;
+   }
+
+   Array1(unsigned long n_, const T* data_)
+      : n(0), max_n(0), data(0)
+   {

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list