|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectartisynth.core.modelbase.ModelComponentBase
artisynth.core.modelbase.CompositeComponentBase
artisynth.core.modelbase.RenderableCompositeBase
artisynth.core.mechmodels.CollisionManager
public class CollisionManager
A special component the manages collisions between collidable bodies.
Nested Class Summary |
---|
Nested classes/interfaces inherited from interface artisynth.core.modelbase.ModelComponent |
---|
ModelComponent.NavpanelVisibility |
Nested classes/interfaces inherited from interface artisynth.core.modelbase.CompositeComponent |
---|
CompositeComponent.NavpanelDisplay |
Field Summary | |
---|---|
static boolean |
DEFAULT_USE_NEW_HANDLER
|
static PropertyList |
myProps
|
Fields inherited from class artisynth.core.modelbase.ModelComponentBase |
---|
enforceUniqueCompositeNames, enforceUniqueNames, myNumber, NULL_OBJ, useCompactPathNames |
Fields inherited from interface maspack.render.GLRenderable |
---|
TRANSLUCENT, TWO_DIMENSIONAL |
Constructor Summary | |
---|---|
CollisionManager()
|
Method Summary | |
---|---|
void |
addAuxStateComponents(java.util.List<HasAuxState> comps)
|
void |
addCollisionOverride(CollidablePair pair,
CollisionBehavior behavior)
Adds a CollisionComponent to override the primary collision behavior for a specific pair of components. |
void |
clear()
|
void |
clearCachedData()
|
void |
clearCollisionOverrides()
Removes all collision overrides, so that the collision behavior between all components will revert back to their primary behavior. |
ComponentList<CollisionComponent> |
collisionComponents()
|
CollisionHandlerList |
collisionHandlers()
If necessary, rebuilds the collison pair list from the specified contact info. |
void |
componentChanged(ComponentChangeEvent e)
Notifies this composite component that a change has occured within one or more of its descendants. |
RenderProps |
createRenderProps()
Factory method to create render properties appropriate to this object. |
PropertyList |
getAllPropertyInfo()
Returns a list giving static information about all properties exported by this object. |
double |
getCollisionAccel()
|
double |
getCollisionArenaRadius()
|
CollisionBehavior |
getCollisionBehavior(Collidable a,
Collidable b)
Returns the collision behavior for a specified pair of collidables. |
double |
getCollisionCompliance()
|
double |
getCollisionDamping()
|
CollisionComponent |
getCollisionOverride(Collidable a,
Collidable b)
Returns the CollisionCompenent in this model associated with a particular collision override. |
CollisionComponent |
getCollisionOverride(CollidablePair pair)
Returns the CollisionCompenent in this model associated with a particular collision override. |
double |
getCollisionPointTol()
|
double |
getCollisionRegionTol()
|
void |
getConstrainers(java.util.List<Constrainer> constrainers)
|
double |
getContactNormalLen()
|
CollisionBehavior |
getDefaultCollisionBehavior(Collidable typeA,
Collidable typeB)
Gets the default collision behavior, for a specified pair of generic collidable types. |
static double |
getDefaultPenetrationTol(ModelComponent comp,
double defaultTol)
|
double |
getPenetrationTol()
|
PropertyMode |
getPenetrationTolMode()
|
CollisionBehavior |
getPrimaryCollisionBehavior(CollidablePair pair)
Returns the primary collision behavior for a specified component pair as seen by this model. |
boolean |
getUseNewHandler()
|
void |
initialize()
|
boolean |
isDrawIntersectionContours()
|
boolean |
isDrawIntersectionFaces()
|
boolean |
isDrawIntersectionPoints()
|
void |
prerender(RenderList list)
Prepare for rendering, and potentially add itself to a list to be drawn by a GLRenderer. |
boolean |
removeCollisionOverride(CollisionComponent comp)
Removes a CollisionComponent, removing the collision override for the associated pair of components. |
void |
render(GLRenderer renderer,
int flags)
Render this object using Open GL via the JOGL. |
void |
scaleDistance(double s)
Scales all distance coordinates. |
void |
scaleMass(double s)
Scales all mass units. |
void |
setCollisionAccel(double acc)
|
void |
setCollisionArenaRadius(double rad)
|
void |
setCollisionBehavior(Collidable a,
Collidable b,
boolean enabled)
|
void |
setCollisionBehavior(Collidable a,
Collidable b,
boolean enabled,
double mu)
Sets collision behavior for a specified pair of Collidables, overriding, if necessary, the primary behavior. |
void |
setCollisionBehavior(Collidable a,
Collidable b,
CollisionBehavior behavior)
Sets collision behavior for a specified pair of Collidables, overriding, if necessary, the primary behavior. |
void |
setCollisionCompliance(double c)
|
void |
setCollisionDamping(double d)
|
void |
setCollisionPointTol(double tol)
|
void |
setCollisionRegionTol(double tol)
|
void |
setContactNormalLen(double len)
|
void |
setDefaultCollisionBehavior(boolean enabled,
double mu)
Specifies the default collision behavior for all default pairs (RigidBody-RigidBody, RigidBody-Deformable, Deformable-Deformable, Deformable-Self). |
void |
setDefaultCollisionBehavior(Collidable typeA,
Collidable typeB,
boolean enabled,
double mu)
Sets the default collision behavior for a specified pair of generic collidable types. |
void |
setDefaultCollisionBehavior(Collidable typeA,
Collidable typeB,
CollisionBehavior behavior)
Sets the default collision behavior for a specified pair of generic collidable types. |
void |
setDefaultCollisionBehavior(CollisionBehavior behavior)
Specifies the default collision behavior for all default pairs (RigidBody-RigidBody, RigidBody-Deformable, Deformable-Deformable, Deformable-Self). |
void |
setDrawIntersectionContours(boolean set)
|
void |
setDrawIntersectionFaces(boolean set)
|
void |
setDrawIntersectionPoints(boolean set)
|
void |
setFriction(double mu)
|
void |
setPenetrationTol(double tol)
Sets the penetration tolerance for this component. |
void |
setPenetrationTolMode(PropertyMode mode)
|
void |
setUseNewHandler(boolean set)
|
void |
updateBounds(Point3d pmin,
Point3d pmax)
Update the minimum and maximum points for this object. |
Methods inherited from class artisynth.core.modelbase.RenderableCompositeBase |
---|
copy, getRenderHints, getRenderProps, getSelection, isSelectable, numSelectionQueriesNeeded, setRenderProps |
Methods inherited from class artisynth.core.modelbase.CompositeComponentBase |
---|
findComponent, get, get, getByNumber, getChildren, getNavpanelDisplay, getNumberLimit, hasChildren, hasState, hierarchyContainsReferences, indexOf, iterator, numComponents, postscan, scan, setDisplayMode, updateNameMap |
Methods inherited from class java.lang.Object |
---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Methods inherited from interface artisynth.core.modelbase.ModelComponent |
---|
connectToHierarchy, disconnectFromHierarchy, getHardReferences, getName, getNavpanelVisibility, getNumber, getParent, getSoftReferences, hasState, isFixed, isMarked, isSelected, notifyParentOfChange, postscan, scan, setFixed, setMarked, setName, setNumber, setParent, setSelected, updateReferences |
Methods inherited from interface maspack.properties.HasProperties |
---|
getProperty |
Methods inherited from interface maspack.properties.HierarchyNode |
---|
getChildren, hasChildren |
Methods inherited from interface maspack.util.Scannable |
---|
isWritable, write |
Field Detail |
---|
public static boolean DEFAULT_USE_NEW_HANDLER
public static PropertyList myProps
Constructor Detail |
---|
public CollisionManager()
Method Detail |
---|
public PropertyList getAllPropertyInfo()
HasProperties
getAllPropertyInfo
in interface HasProperties
getAllPropertyInfo
in class ModelComponentBase
public void setPenetrationTol(double tol)
tol
- new penetration tolerancepublic double getPenetrationTol()
public PropertyMode getPenetrationTolMode()
public void setPenetrationTolMode(PropertyMode mode)
public static double getDefaultPenetrationTol(ModelComponent comp, double defaultTol)
public double getCollisionArenaRadius()
public void setCollisionArenaRadius(double rad)
public void setCollisionPointTol(double tol)
public double getCollisionPointTol()
public void setCollisionRegionTol(double tol)
public double getCollisionRegionTol()
public void setContactNormalLen(double len)
public double getContactNormalLen()
public void setCollisionCompliance(double c)
public double getCollisionCompliance()
public void setCollisionDamping(double d)
public double getCollisionDamping()
public double getCollisionAccel()
public void setCollisionAccel(double acc)
public void clear()
public void setFriction(double mu)
public void setDefaultCollisionBehavior(boolean enabled, double mu)
setDefaultCollisionBehavior(behavior)
.
enabled
- if true, enables collisionsmu
- friction coefficient (ignored if enabled is false)public void setDefaultCollisionBehavior(CollisionBehavior behavior)
behavior
- desired collision behaviorpublic CollisionBehavior getDefaultCollisionBehavior(Collidable typeA, Collidable typeB)
Collidable.RigidBody
and
Collidable.Deformable
. In addition, the type
Collidable.Self
can be paired with Collidable.Deformable
to obtain the default behavior for deformable self collisions;
Collidable.Self
cannot be paired with other types.
typeA
- first generic collidable typetypeB
- second generic collidable type
public void setDefaultCollisionBehavior(Collidable typeA, Collidable typeB, boolean enabled, double mu)
setDefaultCollisionBehavior(typeA,typeB,behavior)
.
typeA
- first generic collidable typetypeB
- second generic collidable typeenabled
- if true, enables collisionsmu
- friction coefficient (ignored if enabled is false)public void setDefaultCollisionBehavior(Collidable typeA, Collidable typeB, CollisionBehavior behavior)
Collidable.RigidBody
and
Collidable.Deformable
. In addition, the type
Collidable.Self
can be paired with Collidable.Deformable
to set the default behavior for deformable self collisions;
Collidable.Self
cannot be paired with other types.
typeA
- first generic collidable typetypeB
- second generic collidable typebehavior
- specified collision behaviorpublic void setCollisionBehavior(Collidable a, Collidable b, boolean enabled)
public void setCollisionBehavior(Collidable a, Collidable b, boolean enabled, double mu)
setCollisionBehavior(a,b,behavior)
.
a
- first Collidableb
- second Collidableenabled
- if true, enables collisionsmu
- friction coefficient (ignored if enabled is false)public void setCollisionBehavior(Collidable a, Collidable b, CollisionBehavior behavior)
Collidable.Self
to indicate self-intersection; otherwise, generic
designations (such as Collidable.RigidBody
) are not allowed.
If the specified collision behavior equals the existing collision
behavior (as returned by getCollisionBehavior(artisynth.core.mechmodels.Collidable, artisynth.core.mechmodels.Collidable)
), then this method
does nothing. Otherwise, if the collision behavior can be obtained by
removing an existing collision override for the pair, the override is
removed. Otherwise, a collision override is created for the desired
behavior, replacing any existing override.
a
- first Collidableb
- second Collidablebehavior
- specified collision behaviorpublic CollisionComponent getCollisionOverride(CollidablePair pair)
null
is returned. This method is provided mostly for
internal ArtiSynth use.
pair
- collidable pair
public CollisionComponent getCollisionOverride(Collidable a, Collidable b)
null
is returned. This method is provided mostly for
internal ArtiSynth use.
a
- first collidableb
- second collidable
public void addCollisionOverride(CollidablePair pair, CollisionBehavior behavior)
Collidable.Self
to indicate self-intersection; otherwise,
generic designations (such as Collidable.RigidBody
) are not
allowed. This method is mainly intended for ArtiSynth internal use.
pair
- specified pair of collidablesbehavior
- desired override collision behaviorpublic boolean removeCollisionOverride(CollisionComponent comp)
comp
- CollisionComponent overriding primary collision
behavior for a specific pair of components
public void clearCollisionOverrides()
public CollisionBehavior getPrimaryCollisionBehavior(CollidablePair pair)
Each collidable must be a particular
component instance. A deformable body may be paired with Collidable.Self
to indicate self-intersection; otherwise, generic
designations (such as Collidable.RigidBody
) are not allowed.
pair
- specified pair of collidables
public CollisionBehavior getCollisionBehavior(Collidable a, Collidable b)
Collidable.Self
to indicate self-intersection;
otherwise, generic designations (such as Collidable.RigidBody
)
are not allowed.
If this CollisionManager contains a collision override for
the specified pair, then the behavior will be determined
by that override. Otherwise, the behavior will equal
that returned by getPrimaryCollisionBehavior(artisynth.core.mechmodels.CollidablePair)
.
a
- first Collidableb
- second Collidable
public CollisionHandlerList collisionHandlers()
public ComponentList<CollisionComponent> collisionComponents()
public void initialize()
public RenderProps createRenderProps()
HasRenderProps
createRenderProps
in interface HasRenderProps
createRenderProps
in class RenderableCompositeBase
public void updateBounds(Point3d pmin, Point3d pmax)
GLRenderable
updateBounds
in interface GLRenderable
updateBounds
in class RenderableCompositeBase
pmin
- minimum pointpmax
- maximum pointpublic void prerender(RenderList list)
GLRenderable
prerender
in interface GLRenderable
prerender
in class RenderableCompositeBase
public void render(GLRenderer renderer, int flags)
GLRenderable
render
in interface GLRenderable
render
in class RenderableCompositeBase
renderer
- renderer object which is used to perform the rendering. Provides pointers
to GL and GLU, along with helper functions.flags
- supplies flags that may be used to control different
aspects of the rendering. Flags are defined in GLRenderer
and currently include
GLRenderer.SELECTED
,
GLRenderer.VERTEX_COLORING
,
GLRenderer.HSV_COLOR_INTERPOLATION
,
GLRenderer.SORT_FACES
, and
GLRenderer.CLEAR_MESH_DISPLAY_LISTS
.public void scaleDistance(double s)
ScalableUnits
scaleDistance
in interface ScalableUnits
s
- scaling factorpublic void scaleMass(double s)
ScalableUnits
scaleMass
in interface ScalableUnits
s
- scaling factorpublic void clearCachedData()
public void addAuxStateComponents(java.util.List<HasAuxState> comps)
public void componentChanged(ComponentChangeEvent e)
CompositeComponentBase
This method should propagate the notification up the component hierarchy
by calling notifyParentOfChange
.
componentChanged
in interface ComponentChangeListener
componentChanged
in interface CompositeComponent
componentChanged
in class CompositeComponentBase
e
- optional argument giving specific information about the changepublic void getConstrainers(java.util.List<Constrainer> constrainers)
public void setUseNewHandler(boolean set)
public boolean getUseNewHandler()
public void setDrawIntersectionContours(boolean set)
public boolean isDrawIntersectionContours()
public void setDrawIntersectionFaces(boolean set)
public boolean isDrawIntersectionFaces()
public void setDrawIntersectionPoints(boolean set)
public boolean isDrawIntersectionPoints()
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |