artisynth.core.mechmodels
Class SkinMeshBase

java.lang.Object
  extended by artisynth.core.modelbase.ModelComponentBase
      extended by artisynth.core.modelbase.RenderableComponentBase
          extended by artisynth.core.mechmodels.MeshComponent
              extended by artisynth.core.mechmodels.SkinMeshBase
All Implemented Interfaces:
HasSlaveObjects, ComponentChangeListener, CompositeComponent, IndexedComponentList, ModelComponent, RenderableComponent, ScalableUnits, TransformableGeometry, java.lang.Cloneable, HasProperties, HierarchyNode, GLRenderable, GLSelectable, HasRenderProps, Renderable, Scannable
Direct Known Subclasses:
FemMeshBase, SkinMesh

public abstract class SkinMeshBase
extends MeshComponent
implements HasSlaveObjects, CompositeComponent

Base class for a SkinMesh, which is a type of mesh component in which each vertex is attached to one or more underlying dynamic master components using a PointAttachment.


Nested Class Summary
 
Nested classes/interfaces inherited from interface artisynth.core.modelbase.CompositeComponent
CompositeComponent.NavpanelDisplay
 
Nested classes/interfaces inherited from interface artisynth.core.modelbase.ModelComponent
ModelComponent.NavpanelVisibility
 
Field Summary
static PropertyList myProps
           
 
Fields inherited from class artisynth.core.modelbase.ModelComponentBase
enforceUniqueCompositeNames, enforceUniqueNames, myNumber, NULL_OBJ, useCompactPathNames
 
Fields inherited from interface artisynth.core.util.TransformableGeometry
ARTICULATED, SIMULATING
 
Fields inherited from interface maspack.render.GLRenderable
TRANSLUCENT, TWO_DIMENSIONAL
 
Constructor Summary
SkinMeshBase()
           
SkinMeshBase(java.lang.String name)
           
 
Method Summary
 void componentChanged(ComponentChangeEvent e)
          Notifies this composite component that a change has occured within one or more of its descendants.
 SkinMeshBase copy(int flags, java.util.Map<ModelComponent,ModelComponent> copyMap)
           
 ModelComponent findComponent(java.lang.String path)
          Recursively searches for a sub-component of this ModelComponent, identified by a path of component names.
 ModelComponent get(int idx)
          Returns a specific sub-component of this ModelComponent, identified by index.
 ModelComponent get(java.lang.String nameOrNumber)
          Returns a specific sub-component of this ModelComponent, identified by name or string representation of the sub-component's number
 PropertyList getAllPropertyInfo()
          Returns a list giving static information about all properties exported by this object.
abstract  PointAttachment getAttachment(int idx)
           
 ModelComponent getByNumber(int num)
          Returns a specific sub-component of this ModelComponent, identified by number.
 CompositeComponent.NavpanelDisplay getNavpanelDisplay()
          Returns the DisplayMode for this component.
 ModelComponent.NavpanelVisibility getNavpanelVisibility()
           
 int getNumberLimit()
          Returns the current upper limit for numbers among all sub-components in this composite.
 boolean hierarchyContainsReferences()
          Returns true if the component hierarchy formed by this component and its descendents is closed with respect to references.
 int indexOf(ModelComponent comp)
          Returns the index of a specified sub-component, or -1 if that the component is not present.
abstract  int numAttachments()
           
 int numComponents()
          Returns the number of components in this CompositeComponent.
 void postscan(java.util.Deque<ScanToken> tokens, CompositeComponent ancestor)
          Performs any required post-scanning for this component.
 void scaleDistance(double s)
          Scales all distance coordinates.
 void scan(ReaderTokenizer rtok, java.lang.Object ref)
          Scans this element from a ReaderTokenizer.
 void setDisplayMode(CompositeComponent.NavpanelDisplay mode)
          Sets the display mode for this component.
 void setNavpanelDisplay(CompositeComponent.NavpanelDisplay mode)
          Sets the display mode for this component.
 void transformGeometry(AffineTransform3dBase X, TransformableGeometry topObject, int flags)
          Applies an affine transformation to the geometry of this object.
 void updateNameMap(java.lang.String newName, java.lang.String oldName, ModelComponent comp)
          
 void updateSlavePos()
          Updates the mesh vertices to reflect the current position of the attached Frames, FemModels, and points.
 void updateSlaveVel()
          Called when the system's dynamic velocity state changes, to update the velocity state of the slave objects.
 
Methods inherited from class artisynth.core.mechmodels.MeshComponent
createRenderProps, getMesh, getVertex, numVertices, prerender, render, render, scaleMass, setDefaultValues, setMesh, setMesh, setMesh, transformGeometry, transformGeometry, updateBounds, updatePosition
 
Methods inherited from class artisynth.core.modelbase.RenderableComponentBase
getRenderHints, getRenderProps, getSelection, isSelectable, numSelectionQueriesNeeded, setRenderProps, updateRenderProps
 
Methods inherited from class artisynth.core.modelbase.ModelComponentBase
checkFlag, checkName, checkNameUniqueness, clearFlag, clone, connectToHierarchy, createTempFlag, disconnectFromHierarchy, getChildren, getGrandParent, getHardReferences, getName, getNameRange, getNavpanelVisibility, getNumber, getParent, getProperty, getSoftReferences, hasChildren, hasState, isFixed, isMarked, isSelected, isWritable, makeValidName, makeValidName, notifyParentOfChange, printReferences, recursivelyContained, recursivelyContains, removeTempFlag, setFixed, setFlag, setMarked, setName, setNavpanelVisibility, setNavpanelVisibility, setNumber, setParent, setSelected, updateReferences, write
 
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, getNumber, getParent, getSoftReferences, hasState, isFixed, isMarked, isSelected, notifyParentOfChange, 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

myProps

public static PropertyList myProps
Constructor Detail

SkinMeshBase

public SkinMeshBase()

SkinMeshBase

public SkinMeshBase(java.lang.String name)
Method Detail

numAttachments

public abstract int numAttachments()

getAttachment

public abstract PointAttachment getAttachment(int idx)

getAllPropertyInfo

public PropertyList getAllPropertyInfo()
Description copied from interface: HasProperties
Returns a list giving static information about all properties exported by this object.

Specified by:
getAllPropertyInfo in interface HasProperties
Overrides:
getAllPropertyInfo in class MeshComponent
Returns:
static information for all exported properties

get

public ModelComponent get(java.lang.String nameOrNumber)
Returns a specific sub-component of this ModelComponent, identified by name or string representation of the sub-component's number

Specified by:
get in interface CompositeComponent
Parameters:
nameOrNumber - name or number of the sub-component
Returns:
named sub-component, or null if the component does not exist.

get

public ModelComponent get(int idx)
Returns a specific sub-component of this ModelComponent, identified by index.

Specified by:
get in interface CompositeComponent
Specified by:
get in interface IndexedComponentList
Parameters:
idx - index of the sub-component
Returns:
indexed sub-component, or null if the component does not exist.

getByNumber

public ModelComponent getByNumber(int num)
Returns a specific sub-component of this ModelComponent, identified by number.

Specified by:
getByNumber in interface CompositeComponent
Parameters:
num - number of the sub-component
Returns:
specified sub-component, or null if the component does not exist.

numComponents

public int numComponents()
Returns the number of components in this CompositeComponent.

Specified by:
numComponents in interface CompositeComponent
Specified by:
numComponents in interface IndexedComponentList
Returns:
number of sub-components

indexOf

public int indexOf(ModelComponent comp)
Returns the index of a specified sub-component, or -1 if that the component is not present.

Specified by:
indexOf in interface CompositeComponent
Returns:
indexed sub-component

findComponent

public ModelComponent findComponent(java.lang.String path)
Recursively searches for a sub-component of this ModelComponent, identified by a path of component names.

Specified by:
findComponent in interface CompositeComponent
Parameters:
path - path leading to the sub-component
Returns:
named sub-component, or null if the component does not exist.

getNumberLimit

public int getNumberLimit()
Returns the current upper limit for numbers among all sub-components in this composite. This is one greater than the maximum sub-component number currently assigned. A value of 0 means that there are no sub-components. This method is useful for creating and sizing arrays whose contents are indexed by component numbers.

Specified by:
getNumberLimit in interface CompositeComponent
Returns:
upper limit for numbers among all sub-components

getNavpanelDisplay

public CompositeComponent.NavpanelDisplay getNavpanelDisplay()
Returns the DisplayMode for this component. This specifies how the component should be displayed in a navigation panel.

Specified by:
getNavpanelDisplay in interface CompositeComponent
Returns:
display mode for this component

setNavpanelDisplay

public void setNavpanelDisplay(CompositeComponent.NavpanelDisplay mode)
Sets the display mode for this component. This controls how the component is displayed in a navigation panel. The default setting is NORMAL.

Parameters:
mode - new display mode

setDisplayMode

public void setDisplayMode(CompositeComponent.NavpanelDisplay mode)
Sets the display mode for this component. This controls how the component is displayed in a navigation panel. The default setting is NORMAL.

Parameters:
mode - new display mode

getNavpanelVisibility

public ModelComponent.NavpanelVisibility getNavpanelVisibility()
Specified by:
getNavpanelVisibility in interface ModelComponent
Overrides:
getNavpanelVisibility in class ModelComponentBase

componentChanged

public void componentChanged(ComponentChangeEvent e)
Notifies this composite component that a change has occured within one or more of its descendants. When this occurs, the composite may need to invalidate cached information that depends on the descendants.

This method should propagate the notification up the component hierarchy by calling notifyParentOfChange.

Specified by:
componentChanged in interface ComponentChangeListener
Specified by:
componentChanged in interface CompositeComponent
Parameters:
e - optional argument giving specific information about the change

updateNameMap

public void updateNameMap(java.lang.String newName,
                          java.lang.String oldName,
                          ModelComponent comp)

Specified by:
updateNameMap in interface CompositeComponent

hierarchyContainsReferences

public boolean hierarchyContainsReferences()
Returns true if the component hierarchy formed by this component and its descendents is closed with respect to references. In other words, all components referenced by components within the hierarchy are themselves components within the hierarchy.

In particular, this means that one does not need to search outside the hierarchy when looking for dependencies.

Specified by:
hierarchyContainsReferences in interface CompositeComponent
Returns:
true if this component's hierarchy is closed with respect to references.

scan

public void scan(ReaderTokenizer rtok,
                 java.lang.Object ref)
          throws java.io.IOException
Description copied from class: ModelComponentBase
Scans this element from a ReaderTokenizer. The expected text format is assumed to be compatible with that produced by write.

Specified by:
scan in interface ModelComponent
Specified by:
scan in interface Scannable
Overrides:
scan in class ModelComponentBase
Parameters:
rtok - Tokenizer from which to scan the element
ref - optional reference object which can be used for resolving references to other objects
Throws:
java.io.IOException - if an I/O or formatting error occured

postscan

public void postscan(java.util.Deque<ScanToken> tokens,
                     CompositeComponent ancestor)
              throws java.io.IOException
Description copied from interface: ModelComponent
Performs any required post-scanning for this component. This involves handling any information whose processing was deferred during the scan() method and stored in the token queue. The most common use of this method is to resolve the paths of component references, which may not have been created at the time of the initial scan() call.

Specified by:
postscan in interface ModelComponent
Overrides:
postscan in class ModelComponentBase
Parameters:
tokens - token information that was stored during scan().
ancestor - ancestor component with respect to which reference component paths are defined.
Throws:
java.io.IOException

updateSlavePos

public void updateSlavePos()
Updates the mesh vertices to reflect the current position of the attached Frames, FemModels, and points.

Specified by:
updateSlavePos in interface HasSlaveObjects
Overrides:
updateSlavePos in class MeshComponent

updateSlaveVel

public void updateSlaveVel()
Description copied from interface: HasSlaveObjects
Called when the system's dynamic velocity state changes, to update the velocity state of the slave objects.

Specified by:
updateSlaveVel in interface HasSlaveObjects

scaleDistance

public void scaleDistance(double s)
Description copied from interface: ScalableUnits
Scales all distance coordinates.

Specified by:
scaleDistance in interface ScalableUnits
Overrides:
scaleDistance in class MeshComponent
Parameters:
s - scaling factor

transformGeometry

public void transformGeometry(AffineTransform3dBase X,
                              TransformableGeometry topObject,
                              int flags)
Description copied from interface: TransformableGeometry
Applies an affine transformation to the geometry of this object. If recursively invoked within a component hierarchy, then topComponent should be the component for which the method was initially invoked. The variable flags provides information about the context in which the transformation is being applied. At present, the available flags are TransformableGeometry.SIMULATING and TransformableGeometry.ARTICULATED.

Specified by:
transformGeometry in interface TransformableGeometry
Overrides:
transformGeometry in class MeshComponent
Parameters:
X - affine transformation
topObject - component on which the method was initially invoked
flags - provides information about the context in which the transformation is being applied.

copy

public SkinMeshBase copy(int flags,
                         java.util.Map<ModelComponent,ModelComponent> copyMap)
Overrides:
copy in class MeshComponent