Package com.jme3.bullet.control.ragdoll
Class RagdollUtils
java.lang.Object
com.jme3.bullet.control.ragdoll.RagdollUtils
Utility methods used by KinematicRagdollControl.
This class is shared between JBullet and Native Bullet.
- Author:
- Nehon
-
Method Summary
Modifier and TypeMethodDescriptionbuildPointMap(com.jme3.scene.Spatial model) Build a map of mesh vertices in a subtree of the scene graph.getBoneIndices(com.jme3.animation.Bone bone, com.jme3.animation.Skeleton skeleton, Set<String> boneList) Enumerate the bone indices of the specified bone and all its descendents.static booleanhasVertices(int boneIndex, com.jme3.scene.Mesh[] targets, float weightThreshold) Test whether the indexed bone has at least one vertex in the specified meshes with a weight greater than the specified threshold.static HullCollisionShapemakeShapeFromPointMap(Map<Integer, List<Float>> pointsMap, List<Integer> boneIndices, com.jme3.math.Vector3f initialScale, com.jme3.math.Vector3f initialPosition) Create a hull collision shape from linked vertices to this bone.static HullCollisionShapemakeShapeFromVerticeWeights(com.jme3.scene.Spatial model, List<Integer> boneIndices, com.jme3.math.Vector3f initialScale, com.jme3.math.Vector3f initialPosition, float weightThreshold) Create a hull collision shape from linked vertices to this bone.static intRead an index from a buffer.static voidsetJointLimit(SixDofJoint joint, float maxX, float minX, float maxY, float minY, float maxZ, float minZ) Alter the limits of the specified 6-DOF joint.static voidsetTransform(com.jme3.animation.Bone bone, com.jme3.math.Vector3f pos, com.jme3.math.Quaternion rot, boolean restoreBoneControl, Set<String> boneList) Updates a bone position and rotation.static voidsetUserControl(com.jme3.animation.Bone bone, boolean bool) Alter the user-control flags of a bone and all its descendents.
-
Method Details
-
setJointLimit
public static void setJointLimit(SixDofJoint joint, float maxX, float minX, float maxY, float minY, float maxZ, float minZ) Alter the limits of the specified 6-DOF joint.- Parameters:
joint- which joint to alter (not null)maxX- the maximum rotation on the X axis (in radians)minX- the minimum rotation on the X axis (in radians)maxY- the maximum rotation on the Y axis (in radians)minY- the minimum rotation on the Y axis (in radians)maxZ- the maximum rotation on the Z axis (in radians)minZ- the minimum rotation on the Z axis (in radians)
-
buildPointMap
Build a map of mesh vertices in a subtree of the scene graph.- Parameters:
model- the root of the subtree (may be null)- Returns:
- a new map (not null)
-
makeShapeFromPointMap
public static HullCollisionShape makeShapeFromPointMap(Map<Integer, List<Float>> pointsMap, List<Integer> boneIndices, com.jme3.math.Vector3f initialScale, com.jme3.math.Vector3f initialPosition) Create a hull collision shape from linked vertices to this bone. Vertices must have previously been gathered using buildPointMap().- Parameters:
pointsMap- map from bone indices to coordinates (not null, unaffected)boneIndices- (not null, unaffected)initialScale- scale factors (not null, unaffected)initialPosition- location (not null, unaffected)- Returns:
- a new shape (not null)
-
getBoneIndices
public static List<Integer> getBoneIndices(com.jme3.animation.Bone bone, com.jme3.animation.Skeleton skeleton, Set<String> boneList) Enumerate the bone indices of the specified bone and all its descendents.- Parameters:
bone- the input bone (not null)skeleton- the skeleton containing the bone (not null)boneList- a set of bone names (not null, unaffected)- Returns:
- a new list (not null)
-
makeShapeFromVerticeWeights
public static HullCollisionShape makeShapeFromVerticeWeights(com.jme3.scene.Spatial model, List<Integer> boneIndices, com.jme3.math.Vector3f initialScale, com.jme3.math.Vector3f initialPosition, float weightThreshold) Create a hull collision shape from linked vertices to this bone.- Parameters:
model- the model on which to base the shapeboneIndices- indices of relevant bones (not null, unaffected)initialScale- scale factorsinitialPosition- locationweightThreshold- minimum weight for inclusion- Returns:
- a new shape
-
setTransform
public static void setTransform(com.jme3.animation.Bone bone, com.jme3.math.Vector3f pos, com.jme3.math.Quaternion rot, boolean restoreBoneControl, Set<String> boneList) Updates a bone position and rotation. if the child bones are not in the bone list this means, they are not associated with a physics shape. So they have to be updated- Parameters:
bone- the bonepos- the positionrot- the rotationrestoreBoneControl- true → user-control flag should be setboneList- the names of all bones without collision shapes (not null, unaffected)
-
setUserControl
public static void setUserControl(com.jme3.animation.Bone bone, boolean bool) Alter the user-control flags of a bone and all its descendents.- Parameters:
bone- the ancestor bone (not null, modified)bool- true to enable user control, false to disable
-
hasVertices
public static boolean hasVertices(int boneIndex, com.jme3.scene.Mesh[] targets, float weightThreshold) Test whether the indexed bone has at least one vertex in the specified meshes with a weight greater than the specified threshold.- Parameters:
boneIndex- the index of the bone (≥0)targets- the meshes to search (not null, no null elements)weightThreshold- the threshold (≥0, ≤1)- Returns:
- true if at least 1 vertex found, otherwise false
-
readIndex
Read an index from a buffer.- Parameters:
buffer- a buffer of bytes or shorts (not null)k- the position from which the index will be read- Returns:
- the index value (≥0)
-