BulletSim: add parameters and parameter definitions for VHACD
addition coming.0.8.1-post-fixes
parent
3289aa3bcd
commit
de76116624
|
@ -211,6 +211,21 @@ public struct HACDParams
|
||||||
public float addNeighboursDistPoints; // false
|
public float addNeighboursDistPoints; // false
|
||||||
public float addFacesPoints; // false
|
public float addFacesPoints; // false
|
||||||
public float shouldAdjustCollisionMargin; // false
|
public float shouldAdjustCollisionMargin; // false
|
||||||
|
// VHACD
|
||||||
|
public float whichHACD; // zero if Bullet HACD, non-zero says VHACD
|
||||||
|
// http://kmamou.blogspot.ca/2014/12/v-hacd-20-parameters-description.html
|
||||||
|
public float vHACDresolution; // 100,000 max number of voxels generated during voxelization stage
|
||||||
|
public float vHACDdepth; // 20 max number of clipping stages
|
||||||
|
public float vHACDconcavity; // 0.0025 maximum concavity
|
||||||
|
public float vHACDplaneDownsampling; // 4 granularity of search for best clipping plane
|
||||||
|
public float vHACDconvexHullDownsampling; // 4 precision of hull gen process
|
||||||
|
public float vHACDalpha; // 0.05 bias toward clipping along symmetry planes
|
||||||
|
public float vHACDbeta; // 0.05 bias toward clipping along revolution axis
|
||||||
|
public float vHACDgamma; // 0.00125 max concavity when merging
|
||||||
|
public float vHACDpca; // 0 on/off normalizing mesh before decomp
|
||||||
|
public float vHACDmode; // 0 0:voxel based, 1: tetrahedron based
|
||||||
|
public float vHACDmaxNumVerticesPerCH; // 64 max triangles per convex hull
|
||||||
|
public float vHACDminVolumePerCH; // 0.0001 sampling of generated convex hulls
|
||||||
}
|
}
|
||||||
|
|
||||||
// The states a bullet collision object can have
|
// The states a bullet collision object can have
|
||||||
|
|
|
@ -183,6 +183,7 @@ public static class BSParam
|
||||||
public static bool VehicleEnableAngularBanking { get; private set; }
|
public static bool VehicleEnableAngularBanking { get; private set; }
|
||||||
|
|
||||||
// Convex Hulls
|
// Convex Hulls
|
||||||
|
// Parameters for convex hull routine that ships with Bullet
|
||||||
public static int CSHullMaxDepthSplit { get; private set; }
|
public static int CSHullMaxDepthSplit { get; private set; }
|
||||||
public static int CSHullMaxDepthSplitForSimpleShapes { get; private set; }
|
public static int CSHullMaxDepthSplitForSimpleShapes { get; private set; }
|
||||||
public static float CSHullConcavityThresholdPercent { get; private set; }
|
public static float CSHullConcavityThresholdPercent { get; private set; }
|
||||||
|
@ -198,6 +199,22 @@ public static class BSParam
|
||||||
public static bool BHullAddNeighboursDistPoints { get; private set; } // false
|
public static bool BHullAddNeighboursDistPoints { get; private set; } // false
|
||||||
public static bool BHullAddFacesPoints { get; private set; } // false
|
public static bool BHullAddFacesPoints { get; private set; } // false
|
||||||
public static bool BHullShouldAdjustCollisionMargin { get; private set; } // false
|
public static bool BHullShouldAdjustCollisionMargin { get; private set; } // false
|
||||||
|
public static float WhichHACD { get; private set; } // zero if Bullet HACD, non-zero says VHACD
|
||||||
|
// Parameters for VHACD 2.0: http://code.google.com/p/v-hacd
|
||||||
|
// To enable, set both ShouldUseBulletHACD=true and WhichHACD=1
|
||||||
|
// http://kmamou.blogspot.ca/2014/12/v-hacd-20-parameters-description.html
|
||||||
|
public static float VHACDresolution { get; private set; } // 100,000 max number of voxels generated during voxelization stage
|
||||||
|
public static float VHACDdepth { get; private set; } // 20 max number of clipping stages
|
||||||
|
public static float VHACDconcavity { get; private set; } // 0.0025 maximum concavity
|
||||||
|
public static float VHACDplaneDownsampling { get; private set; } // 4 granularity of search for best clipping plane
|
||||||
|
public static float VHACDconvexHullDownsampling { get; private set; } // 4 precision of hull gen process
|
||||||
|
public static float VHACDalpha { get; private set; } // 0.05 bias toward clipping along symmetry planes
|
||||||
|
public static float VHACDbeta { get; private set; } // 0.05 bias toward clipping along revolution axis
|
||||||
|
public static float VHACDgamma { get; private set; } // 0.00125 max concavity when merging
|
||||||
|
public static float VHACDpca { get; private set; } // 0 on/off normalizing mesh before decomp
|
||||||
|
public static float VHACDmode { get; private set; } // 0 0:voxel based, 1: tetrahedron based
|
||||||
|
public static float VHACDmaxNumVerticesPerCH { get; private set; } // 64 max triangles per convex hull
|
||||||
|
public static float VHACDminVolumePerCH { get; private set; } // 0.0001 sampling of generated convex hulls
|
||||||
|
|
||||||
// Linkset implementation parameters
|
// Linkset implementation parameters
|
||||||
public static float LinksetImplementation { get; private set; }
|
public static float LinksetImplementation { get; private set; }
|
||||||
|
@ -749,6 +766,33 @@ public static class BSParam
|
||||||
new ParameterDefn<bool>("BHullShouldAdjustCollisionMargin", "Bullet impl: whether to shrink resulting hulls to account for collision margin",
|
new ParameterDefn<bool>("BHullShouldAdjustCollisionMargin", "Bullet impl: whether to shrink resulting hulls to account for collision margin",
|
||||||
false ),
|
false ),
|
||||||
|
|
||||||
|
new ParameterDefn<float>("WhichHACD", "zero if Bullet HACD, non-zero says VHACD",
|
||||||
|
0f ),
|
||||||
|
new ParameterDefn<float>("VHACDresolution", "max number of voxels generated during voxelization stage",
|
||||||
|
100000f ),
|
||||||
|
new ParameterDefn<float>("VHACDdepth", "max number of clipping stages",
|
||||||
|
20f ),
|
||||||
|
new ParameterDefn<float>("VHACDconcavity", "maximum concavity",
|
||||||
|
0.0025f ),
|
||||||
|
new ParameterDefn<float>("VHACDplaneDownsampling", "granularity of search for best clipping plane",
|
||||||
|
4f ),
|
||||||
|
new ParameterDefn<float>("VHACDconvexHullDownsampling", "precision of hull gen process",
|
||||||
|
4f ),
|
||||||
|
new ParameterDefn<float>("VHACDalpha", "bias toward clipping along symmetry planes",
|
||||||
|
0.05f ),
|
||||||
|
new ParameterDefn<float>("VHACDbeta", "bias toward clipping along revolution axis",
|
||||||
|
0.05f ),
|
||||||
|
new ParameterDefn<float>("VHACDgamma", "max concavity when merging",
|
||||||
|
0.00125f ),
|
||||||
|
new ParameterDefn<float>("VHACDpca", "on/off normalizing mesh before decomp",
|
||||||
|
0f ),
|
||||||
|
new ParameterDefn<float>("VHACDmode", "0:voxel based, 1: tetrahedron based",
|
||||||
|
0f ),
|
||||||
|
new ParameterDefn<float>("VHACDmaxNumVerticesPerCH", "max triangles per convex hull",
|
||||||
|
64f ),
|
||||||
|
new ParameterDefn<float>("VHACDminVolumePerCH", "sampling of generated convex hulls",
|
||||||
|
0.0001f ),
|
||||||
|
|
||||||
new ParameterDefn<float>("LinksetImplementation", "Type of linkset implementation (0=Constraint, 1=Compound, 2=Manual)",
|
new ParameterDefn<float>("LinksetImplementation", "Type of linkset implementation (0=Constraint, 1=Compound, 2=Manual)",
|
||||||
(float)BSLinkset.LinksetImplementation.Compound ),
|
(float)BSLinkset.LinksetImplementation.Compound ),
|
||||||
new ParameterDefn<bool>("LinksetOffsetCenterOfMass", "If 'true', compute linkset center-of-mass and offset linkset position to account for same",
|
new ParameterDefn<bool>("LinksetOffsetCenterOfMass", "If 'true', compute linkset center-of-mass and offset linkset position to account for same",
|
||||||
|
|
|
@ -782,7 +782,7 @@ public class BSShapeHull : BSShape
|
||||||
|
|
||||||
if (meshShape.physShapeInfo.HasPhysicalShape)
|
if (meshShape.physShapeInfo.HasPhysicalShape)
|
||||||
{
|
{
|
||||||
HACDParams parms;
|
HACDParams parms = new HACDParams();
|
||||||
parms.maxVerticesPerHull = BSParam.BHullMaxVerticesPerHull;
|
parms.maxVerticesPerHull = BSParam.BHullMaxVerticesPerHull;
|
||||||
parms.minClusters = BSParam.BHullMinClusters;
|
parms.minClusters = BSParam.BHullMinClusters;
|
||||||
parms.compacityWeight = BSParam.BHullCompacityWeight;
|
parms.compacityWeight = BSParam.BHullCompacityWeight;
|
||||||
|
@ -792,6 +792,7 @@ public class BSShapeHull : BSShape
|
||||||
parms.addNeighboursDistPoints = BSParam.NumericBool(BSParam.BHullAddNeighboursDistPoints);
|
parms.addNeighboursDistPoints = BSParam.NumericBool(BSParam.BHullAddNeighboursDistPoints);
|
||||||
parms.addFacesPoints = BSParam.NumericBool(BSParam.BHullAddFacesPoints);
|
parms.addFacesPoints = BSParam.NumericBool(BSParam.BHullAddFacesPoints);
|
||||||
parms.shouldAdjustCollisionMargin = BSParam.NumericBool(BSParam.BHullShouldAdjustCollisionMargin);
|
parms.shouldAdjustCollisionMargin = BSParam.NumericBool(BSParam.BHullShouldAdjustCollisionMargin);
|
||||||
|
parms.whichHACD = 0; // Use the HACD routine that comes with Bullet
|
||||||
|
|
||||||
physicsScene.DetailLog("{0},BSShapeHull.CreatePhysicalHull,hullFromMesh,beforeCall", prim.LocalID, newShape.HasPhysicalShape);
|
physicsScene.DetailLog("{0},BSShapeHull.CreatePhysicalHull,hullFromMesh,beforeCall", prim.LocalID, newShape.HasPhysicalShape);
|
||||||
newShape = physicsScene.PE.BuildHullShapeFromMesh(physicsScene.World, meshShape.physShapeInfo, parms);
|
newShape = physicsScene.PE.BuildHullShapeFromMesh(physicsScene.World, meshShape.physShapeInfo, parms);
|
||||||
|
|
Loading…
Reference in New Issue