[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [16743] branches/sim_physics: svn merge -r 16667:16741 https://svn.blender.org/svnroot/bf-blender/trunk/ blender
Daniel Genrich
daniel.genrich at gmx.net
Fri Sep 26 10:58:22 CEST 2008
Revision: 16743
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=16743
Author: genscher
Date: 2008-09-26 10:58:15 +0200 (Fri, 26 Sep 2008)
Log Message:
-----------
svn merge -r 16667:16741 https://svn.blender.org/svnroot/bf-blender/trunk/blender
Modified Paths:
--------------
branches/sim_physics/extern/bullet2/CMakeLists.txt
branches/sim_physics/extern/bullet2/Makefile
branches/sim_physics/extern/bullet2/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h
branches/sim_physics/extern/bullet2/src/BulletCollision/CollisionDispatch/btSimulationIslandManager.cpp
branches/sim_physics/extern/bullet2/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp
branches/sim_physics/extern/bullet2/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h
branches/sim_physics/extern/bullet2/src/BulletCollision/CollisionShapes/btTriangleMesh.cpp
branches/sim_physics/extern/bullet2/src/BulletCollision/CollisionShapes/btTriangleMesh.h
branches/sim_physics/extern/bullet2/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp
branches/sim_physics/extern/bullet2/src/BulletSoftBody/btSoftBody.cpp
branches/sim_physics/extern/bullet2/src/BulletSoftBody/btSoftBody.h
branches/sim_physics/extern/bullet2/src/BulletSoftBody/btSoftRigidDynamicsWorld.cpp
branches/sim_physics/extern/bullet2/src/BulletSoftBody/btSoftRigidDynamicsWorld.h
branches/sim_physics/extern/bullet2/src/LinearMath/btConvexHull.cpp
branches/sim_physics/extern/bullet2/src/LinearMath/btConvexHull.h
branches/sim_physics/extern/bullet2/src/SConscript
branches/sim_physics/intern/SoundSystem/intern/SND_Utils.cpp
branches/sim_physics/intern/elbeem/CMakeLists.txt
branches/sim_physics/intern/elbeem/SConscript
branches/sim_physics/intern/elbeem/extern/LBM_fluidsim.h
branches/sim_physics/intern/elbeem/intern/controlparticles.cpp
branches/sim_physics/intern/elbeem/intern/isosurface.cpp
branches/sim_physics/intern/elbeem/intern/mvmcoords.h
branches/sim_physics/intern/elbeem/intern/solver_class.h
branches/sim_physics/intern/elbeem/intern/solver_control.h
branches/sim_physics/intern/elbeem/intern/solver_init.cpp
branches/sim_physics/intern/elbeem/intern/solver_main.cpp
branches/sim_physics/intern/elbeem/intern/solver_relax.h
branches/sim_physics/intern/ghost/intern/GHOST_SystemX11.cpp
branches/sim_physics/intern/ghost/intern/GHOST_SystemX11.h
branches/sim_physics/intern/ghost/intern/GHOST_WindowX11.cpp
branches/sim_physics/intern/ghost/intern/GHOST_WindowX11.h
branches/sim_physics/projectfiles_vc7/gameengine/gameplayer/common/GP_common.vcproj
branches/sim_physics/projectfiles_vc7/gameengine/gameplayer/ghost/GP_ghost.vcproj
branches/sim_physics/release/scripts/bpymodules/colladaImEx/collada.py
branches/sim_physics/release/scripts/import_obj.py
branches/sim_physics/release/text/blender.html
branches/sim_physics/source/blender/blenkernel/BKE_blender.h
branches/sim_physics/source/blender/blenkernel/BKE_curve.h
branches/sim_physics/source/blender/blenkernel/intern/anim.c
branches/sim_physics/source/blender/blenkernel/intern/curve.c
branches/sim_physics/source/blender/blenkernel/intern/displist.c
branches/sim_physics/source/blender/blenkernel/intern/modifier.c
branches/sim_physics/source/blender/blenkernel/intern/multires.c
branches/sim_physics/source/blender/blenkernel/intern/object.c
branches/sim_physics/source/blender/blenkernel/intern/particle.c
branches/sim_physics/source/blender/blenkernel/intern/particle_system.c
branches/sim_physics/source/blender/blenlib/BLI_blenlib.h
branches/sim_physics/source/blender/blenlib/intern/util.c
branches/sim_physics/source/blender/blenloader/intern/readfile.c
branches/sim_physics/source/blender/gpu/intern/gpu_draw.c
branches/sim_physics/source/blender/makesdna/DNA_curve_types.h
branches/sim_physics/source/blender/makesdna/DNA_modifier_types.h
branches/sim_physics/source/blender/makesdna/DNA_object_types.h
branches/sim_physics/source/blender/makesdna/DNA_particle_types.h
branches/sim_physics/source/blender/render/intern/source/shadeinput.c
branches/sim_physics/source/blender/render/intern/source/zbuf.c
branches/sim_physics/source/blender/src/buttons_editing.c
branches/sim_physics/source/blender/src/buttons_logic.c
branches/sim_physics/source/blender/src/buttons_object.c
branches/sim_physics/source/blender/src/buttons_shading.c
branches/sim_physics/source/blender/src/drawaction.c
branches/sim_physics/source/blender/src/drawnode.c
branches/sim_physics/source/blender/src/drawobject.c
branches/sim_physics/source/blender/src/editcurve.c
branches/sim_physics/source/blender/src/editimasel.c
branches/sim_physics/source/blender/src/editmesh_tools.c
branches/sim_physics/source/blender/src/editobject.c
branches/sim_physics/source/blender/src/editsima.c
branches/sim_physics/source/blender/src/filelist.c
branches/sim_physics/source/blender/src/filesel.c
branches/sim_physics/source/blender/src/fluidsim.c
branches/sim_physics/source/blender/src/view.c
branches/sim_physics/source/creator/CMakeLists.txt
branches/sim_physics/source/creator/Makefile
branches/sim_physics/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
branches/sim_physics/source/gameengine/Converter/BL_BlenderDataConversion.cpp
branches/sim_physics/source/gameengine/Converter/BL_DeformableGameObject.cpp
branches/sim_physics/source/gameengine/Converter/BL_DeformableGameObject.h
branches/sim_physics/source/gameengine/Converter/BL_MeshDeformer.h
branches/sim_physics/source/gameengine/Converter/BL_ShapeActionActuator.cpp
branches/sim_physics/source/gameengine/Converter/BL_ShapeActionActuator.h
branches/sim_physics/source/gameengine/Converter/BL_ShapeDeformer.cpp
branches/sim_physics/source/gameengine/Converter/BL_ShapeDeformer.h
branches/sim_physics/source/gameengine/Converter/BL_SkinDeformer.cpp
branches/sim_physics/source/gameengine/Converter/BL_SkinDeformer.h
branches/sim_physics/source/gameengine/Converter/BL_SkinMeshObject.cpp
branches/sim_physics/source/gameengine/Converter/KX_ConvertActuators.cpp
branches/sim_physics/source/gameengine/Converter/KX_ConvertProperties.cpp
branches/sim_physics/source/gameengine/Ketsji/KX_BulletPhysicsController.cpp
branches/sim_physics/source/gameengine/Ketsji/KX_ConvertPhysicsObject.h
branches/sim_physics/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp
branches/sim_physics/source/gameengine/Ketsji/KX_GameObject.h
branches/sim_physics/source/gameengine/Ketsji/KX_IPO_SGController.cpp
branches/sim_physics/source/gameengine/Ketsji/KX_IPO_SGController.h
branches/sim_physics/source/gameengine/Ketsji/KX_KetsjiEngine.cpp
branches/sim_physics/source/gameengine/Ketsji/KX_PythonInit.cpp
branches/sim_physics/source/gameengine/Ketsji/KX_Scene.cpp
branches/sim_physics/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp
branches/sim_physics/source/gameengine/Physics/Bullet/CcdPhysicsController.h
branches/sim_physics/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp
branches/sim_physics/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.h
branches/sim_physics/source/gameengine/PyDoc/BL_ActionActuator.py
branches/sim_physics/source/gameengine/PyDoc/BL_ShapeActionActuator.py
branches/sim_physics/source/gameengine/PyDoc/Rasterizer.py
branches/sim_physics/source/gameengine/Rasterizer/RAS_Deformer.h
branches/sim_physics/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp
branches/sim_physics/source/gameengine/Rasterizer/RAS_TexVert.cpp
branches/sim_physics/source/gameengine/Rasterizer/RAS_TexVert.h
Added Paths:
-----------
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/btBoxCollision.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/btClipPolygon.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/btContactProcessing.cpp
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/btContactProcessing.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/btGImpactBvh.cpp
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/btGImpactBvh.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/btGImpactMassUtil.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/btGImpactShape.cpp
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/btGImpactShape.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/btGenericPoolAllocator.cpp
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/btGenericPoolAllocator.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/btGeometryOperations.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/btQuantization.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/btTriangleShapeEx.cpp
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/btTriangleShapeEx.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/gim_array.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/gim_basic_geometry_operations.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/gim_bitset.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/gim_box_collision.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/gim_box_set.cpp
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/gim_box_set.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/gim_clip_polygon.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/gim_contact.cpp
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/gim_contact.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/gim_geom_types.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/gim_geometry.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/gim_hash_table.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/gim_linear_math.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/gim_math.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/gim_memory.cpp
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/gim_memory.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/gim_radixsort.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/gim_tri_collision.cpp
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/gim_tri_collision.h
branches/sim_physics/release/scripts/ms3d_import_ascii.py
Removed Paths:
-------------
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/btBoxCollision.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/btClipPolygon.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/btContactProcessing.cpp
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/btContactProcessing.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/btGImpactBvh.cpp
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/btGImpactBvh.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.cpp
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/btGImpactCollisionAlgorithm.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/btGImpactMassUtil.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.cpp
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/btGImpactQuantizedBvh.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/btGImpactShape.cpp
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/btGImpactShape.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/btGenericPoolAllocator.cpp
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/btGenericPoolAllocator.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/btGeometryOperations.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/btQuantization.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/btTriangleShapeEx.cpp
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/btTriangleShapeEx.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/gim_array.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/gim_basic_geometry_operations.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/gim_bitset.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/gim_box_collision.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/gim_box_set.cpp
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/gim_box_set.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/gim_clip_polygon.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/gim_contact.cpp
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/gim_contact.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/gim_geom_types.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/gim_geometry.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/gim_hash_table.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/gim_linear_math.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/gim_math.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/gim_memory.cpp
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/gim_memory.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/gim_radixsort.h
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/gim_tri_collision.cpp
branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/gim_tri_collision.h
branches/sim_physics/source/blender/include/license_key.h
branches/sim_physics/source/blender/src/cre/license.jpeg.c
branches/sim_physics/source/blender/src/cre/license_key.c
branches/sim_physics/source/blender/src/pub/license_key.c
Modified: branches/sim_physics/extern/bullet2/CMakeLists.txt
===================================================================
--- branches/sim_physics/extern/bullet2/CMakeLists.txt 2008-09-26 08:51:05 UTC (rev 16742)
+++ branches/sim_physics/extern/bullet2/CMakeLists.txt 2008-09-26 08:58:15 UTC (rev 16743)
@@ -31,6 +31,7 @@
src/BulletCollision/BroadphaseCollision/*.cpp
src/BulletCollision/CollisionShapes/*.cpp
src/BulletCollision/NarrowPhaseCollision/*.cpp
+ src/BulletCollision/Gimpact/*.cpp
src/BulletCollision//CollisionDispatch/*.cpp
src/BulletDynamics/ConstraintSolver/*.cpp
src/BulletDynamics/Vehicle/*.cpp
Modified: branches/sim_physics/extern/bullet2/Makefile
===================================================================
--- branches/sim_physics/extern/bullet2/Makefile 2008-09-26 08:51:05 UTC (rev 16742)
+++ branches/sim_physics/extern/bullet2/Makefile 2008-09-26 08:58:15 UTC (rev 16743)
@@ -37,6 +37,7 @@
BulletCollision/BroadphaseCollision \
BulletCollision/CollisionShapes \
BulletCollision/NarrowPhaseCollision \
+BulletCollision/Gimpact \
BulletCollision//CollisionDispatch \
BulletDynamics/ConstraintSolver \
BulletDynamics/Vehicle \
Modified: branches/sim_physics/extern/bullet2/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h
===================================================================
--- branches/sim_physics/extern/bullet2/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h 2008-09-26 08:51:05 UTC (rev 16742)
+++ branches/sim_physics/extern/bullet2/src/BulletCollision/BroadphaseCollision/btBroadphaseProxy.h 2008-09-26 08:58:15 UTC (rev 16743)
@@ -46,6 +46,7 @@
CONCAVE_SHAPES_START_HERE,
//keep all the convex shapetype below here, for the check IsConvexShape in broadphase proxy!
TRIANGLE_MESH_SHAPE_PROXYTYPE,
+ SCALED_TRIANGLE_MESH_SHAPE_PROXYTYPE,
///used for demo integration FAST/Swift collision library and Bullet
FAST_CONCAVE_MESH_PROXYTYPE,
//terrain
Modified: branches/sim_physics/extern/bullet2/src/BulletCollision/CollisionDispatch/btSimulationIslandManager.cpp
===================================================================
--- branches/sim_physics/extern/bullet2/src/BulletCollision/CollisionDispatch/btSimulationIslandManager.cpp 2008-09-26 08:51:05 UTC (rev 16742)
+++ branches/sim_physics/extern/bullet2/src/BulletCollision/CollisionDispatch/btSimulationIslandManager.cpp 2008-09-26 08:58:15 UTC (rev 16743)
@@ -105,7 +105,7 @@
for (i=0;i<colWorld->getCollisionObjectArray().size();i++)
{
btCollisionObject* collisionObject= colWorld->getCollisionObjectArray()[i];
- if (collisionObject->mergesSimulationIslands())
+ if (!collisionObject->isStaticOrKinematicObject())
{
collisionObject->setIslandTag( m_unionFind.find(index) );
collisionObject->setCompanionId(-1);
Modified: branches/sim_physics/extern/bullet2/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp
===================================================================
--- branches/sim_physics/extern/bullet2/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp 2008-09-26 08:51:05 UTC (rev 16742)
+++ branches/sim_physics/extern/bullet2/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.cpp 2008-09-26 08:58:15 UTC (rev 16743)
@@ -117,5 +117,5 @@
void btScaledBvhTriangleMeshShape::calculateLocalInertia(btScalar mass,btVector3& inertia) const
{
///don't make this a movable object!
- btAssert(0);
+// btAssert(0);
}
Modified: branches/sim_physics/extern/bullet2/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h
===================================================================
--- branches/sim_physics/extern/bullet2/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h 2008-09-26 08:51:05 UTC (rev 16742)
+++ branches/sim_physics/extern/bullet2/src/BulletCollision/CollisionShapes/btScaledBvhTriangleMeshShape.h 2008-09-26 08:58:15 UTC (rev 16743)
@@ -39,7 +39,7 @@
virtual int getShapeType() const
{
//use un-used 'FAST_CONCAVE_MESH_PROXYTYPE' for now, later add SCALED_TRIANGLE_MESH_SHAPE_PROXYTYPE to btBroadphaseProxy.h
- return FAST_CONCAVE_MESH_PROXYTYPE;
+ return SCALED_TRIANGLE_MESH_SHAPE_PROXYTYPE;
}
virtual void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const;
@@ -49,6 +49,16 @@
virtual void processAllTriangles(btTriangleCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const;
+ btBvhTriangleMeshShape* getChildShape()
+ {
+ return m_bvhTriMeshShape;
+ }
+
+ const btBvhTriangleMeshShape* getChildShape() const
+ {
+ return m_bvhTriMeshShape;
+ }
+
//debugging
virtual const char* getName()const {return "SCALEDBVHTRIANGLEMESH";}
Modified: branches/sim_physics/extern/bullet2/src/BulletCollision/CollisionShapes/btTriangleMesh.cpp
===================================================================
--- branches/sim_physics/extern/bullet2/src/BulletCollision/CollisionShapes/btTriangleMesh.cpp 2008-09-26 08:51:05 UTC (rev 16742)
+++ branches/sim_physics/extern/bullet2/src/BulletCollision/CollisionShapes/btTriangleMesh.cpp 2008-09-26 08:58:15 UTC (rev 16743)
@@ -19,7 +19,8 @@
btTriangleMesh::btTriangleMesh (bool use32bitIndices,bool use4componentVertices)
:m_use32bitIndices(use32bitIndices),
-m_use4componentVertices(use4componentVertices)
+m_use4componentVertices(use4componentVertices),
+m_weldingThreshold(0.0)
{
btIndexedMesh meshIndex;
meshIndex.m_numTriangles = 0;
@@ -60,50 +61,67 @@
}
-
-void btTriangleMesh::addTriangle(const btVector3& vertex0,const btVector3& vertex1,const btVector3& vertex2)
+void btTriangleMesh::addIndex(int index)
{
- m_indexedMeshes[0].m_numTriangles++;
- m_indexedMeshes[0].m_numVertices+=3;
+ if (m_use32bitIndices)
+ {
+ m_32bitIndices.push_back(index);
+ m_indexedMeshes[0].m_triangleIndexBase = (unsigned char*) &m_32bitIndices[0];
+ } else
+ {
+ m_16bitIndices.push_back(index);
+ m_indexedMeshes[0].m_triangleIndexBase = (unsigned char*) &m_16bitIndices[0];
+ }
+}
+int btTriangleMesh::findOrAddVertex(const btVector3& vertex)
+{
+ //return index of new/existing vertex
+ //todo: could use acceleration structure for this
if (m_use4componentVertices)
{
- m_4componentVertices.push_back(vertex0);
- m_4componentVertices.push_back(vertex1);
- m_4componentVertices.push_back(vertex2);
+ for (int i=0;i< m_4componentVertices.size();i++)
+ {
+ if ((m_4componentVertices[i]-vertex).length2() <= m_weldingThreshold)
+ {
+ return i;
+ }
+ }
+ m_indexedMeshes[0].m_numVertices++;
+ m_4componentVertices.push_back(vertex);
m_indexedMeshes[0].m_vertexBase = (unsigned char*)&m_4componentVertices[0];
+
+ return m_4componentVertices.size()-1;
+
} else
{
- m_3componentVertices.push_back(vertex0.getX());
- m_3componentVertices.push_back(vertex0.getY());
- m_3componentVertices.push_back(vertex0.getZ());
-
- m_3componentVertices.push_back(vertex1.getX());
- m_3componentVertices.push_back(vertex1.getY());
- m_3componentVertices.push_back(vertex1.getZ());
-
- m_3componentVertices.push_back(vertex2.getX());
- m_3componentVertices.push_back(vertex2.getY());
- m_3componentVertices.push_back(vertex2.getZ());
+
+ for (int i=0;i< m_3componentVertices.size();i+=3)
+ {
+ btVector3 vtx(m_3componentVertices[i],m_3componentVertices[i+1],m_3componentVertices[i+2]);
+ if ((vtx-vertex).length2() <= m_weldingThreshold)
+ {
+ return i/3;
+ }
+ }
+ m_3componentVertices.push_back(vertex.getX());
+ m_3componentVertices.push_back(vertex.getY());
+ m_3componentVertices.push_back(vertex.getZ());
+ m_indexedMeshes[0].m_numVertices++;
m_indexedMeshes[0].m_vertexBase = (unsigned char*)&m_3componentVertices[0];
+ return (m_3componentVertices.size()/3)-1;
}
- if (m_use32bitIndices)
- {
- int curIndex = m_32bitIndices.size();
- m_32bitIndices.push_back(curIndex++);
- m_32bitIndices.push_back(curIndex++);
- m_32bitIndices.push_back(curIndex++);
- m_indexedMeshes[0].m_triangleIndexBase = (unsigned char*) &m_32bitIndices[0];
- } else
- {
- short curIndex = static_cast<short>(m_16bitIndices.size());
- m_16bitIndices.push_back(curIndex++);
- m_16bitIndices.push_back(curIndex++);
- m_16bitIndices.push_back(curIndex++);
- m_indexedMeshes[0].m_triangleIndexBase = (unsigned char*) &m_16bitIndices[0];
- }
}
+
+void btTriangleMesh::addTriangle(const btVector3& vertex0,const btVector3& vertex1,const btVector3& vertex2)
+{
+ m_indexedMeshes[0].m_numTriangles++;
+
+ addIndex(findOrAddVertex(vertex0));
+ addIndex(findOrAddVertex(vertex1));
+ addIndex(findOrAddVertex(vertex2));
+}
int btTriangleMesh::getNumTriangles() const
{
Modified: branches/sim_physics/extern/bullet2/src/BulletCollision/CollisionShapes/btTriangleMesh.h
===================================================================
--- branches/sim_physics/extern/bullet2/src/BulletCollision/CollisionShapes/btTriangleMesh.h 2008-09-26 08:51:05 UTC (rev 16742)
+++ branches/sim_physics/extern/bullet2/src/BulletCollision/CollisionShapes/btTriangleMesh.h 2008-09-26 08:58:15 UTC (rev 16743)
@@ -25,6 +25,7 @@
///It allows either 32bit or 16bit indices, and 4 (x-y-z-w) or 3 (x-y-z) component vertices.
///If you want to share triangle/index data between graphics mesh and collision mesh (btBvhTriangleMeshShape), you can directly use btTriangleIndexVertexArray or derive your own class from btStridingMeshInterface.
///Performance of btTriangleMesh and btTriangleIndexVertexArray used in a btBvhTriangleMeshShape is the same.
+///It has a brute-force option to weld together closeby vertices.
class btTriangleMesh : public btTriangleIndexVertexArray
{
btAlignedObjectArray<btVector3> m_4componentVertices;
@@ -34,11 +35,16 @@
btAlignedObjectArray<unsigned short int> m_16bitIndices;
bool m_use32bitIndices;
bool m_use4componentVertices;
+
+ public:
+ btScalar m_weldingThreshold;
- public:
btTriangleMesh (bool use32bitIndices=true,bool use4componentVertices=true);
+ int findOrAddVertex(const btVector3& vertex);
+ void addIndex(int index);
+
bool getUse32bitIndices() const
{
return m_use32bitIndices;
Copied: branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact (from rev 16741, trunk/blender/extern/bullet2/src/BulletCollision/Gimpact)
Deleted: branches/sim_physics/extern/bullet2/src/BulletCollision/Gimpact/btBoxCollision.h
===================================================================
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list