Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/kicklib2/src/external/bullet/BulletCollision/CollisionDispatch/btInternalEdgeUtility.h @ 8284

Last change on this file since 8284 was 8284, checked in by rgrieder, 14 years ago

Merged revisions 7978 - 8096 from kicklib to kicklib2.

  • Property svn:eol-style set to native
File size: 1.7 KB
Line 
1
2#ifndef BT_INTERNAL_EDGE_UTILITY_H
3#define BT_INTERNAL_EDGE_UTILITY_H
4
5#include "LinearMath/btHashMap.h"
6#include "LinearMath/btVector3.h"
7
8#include "BulletCollision/CollisionShapes/btTriangleInfoMap.h"
9
10///The btInternalEdgeUtility helps to avoid or reduce artifacts due to wrong collision normals caused by internal edges.
11///See also http://code.google.com/p/bullet/issues/detail?id=27
12
13class btBvhTriangleMeshShape;
14class btCollisionObject;
15class btManifoldPoint;
16class btIDebugDraw;
17
18
19
20enum btInternalEdgeAdjustFlags
21{
22        BT_TRIANGLE_CONVEX_BACKFACE_MODE = 1,
23        BT_TRIANGLE_CONCAVE_DOUBLE_SIDED = 2, //double sided options are experimental, single sided is recommended
24        BT_TRIANGLE_CONVEX_DOUBLE_SIDED = 4
25};
26
27
28///Call btGenerateInternalEdgeInfo to create triangle info, store in the shape 'userInfo'
29void    btGenerateInternalEdgeInfo (btBvhTriangleMeshShape*trimeshShape, btTriangleInfoMap* triangleInfoMap);
30
31
32///Call the btFixMeshNormal to adjust the collision normal, using the triangle info map (generated using btGenerateInternalEdgeInfo)
33///If this info map is missing, or the triangle is not store in this map, nothing will be done
34void    btAdjustInternalEdgeContacts(btManifoldPoint& cp, const btCollisionObject* trimeshColObj0,const btCollisionObject* otherColObj1, int partId0, int index0, int normalAdjustFlags = 0);
35
36///Enable the BT_INTERNAL_EDGE_DEBUG_DRAW define and call btSetDebugDrawer, to get visual info to see if the internal edge utility works properly.
37///If the utility doesn't work properly, you might have to adjust the threshold values in btTriangleInfoMap
38//#define BT_INTERNAL_EDGE_DEBUG_DRAW
39
40#ifdef BT_INTERNAL_EDGE_DEBUG_DRAW
41void    btSetDebugDrawer(btIDebugDraw* debugDrawer);
42#endif //BT_INTERNAL_EDGE_DEBUG_DRAW
43
44
45#endif //BT_INTERNAL_EDGE_UTILITY_H
46
Note: See TracBrowser for help on using the repository browser.