Class SkinningControl
- All Implemented Interfaces:
Savable
,Control
,JmeCloneable
,Cloneable
It can perform software skinning or Hardware skinning
-
Field Summary
Fields inherited from class com.jme3.scene.control.AbstractControl
enabled, spatial
-
Constructor Summary
ModifierConstructorDescriptionprotected
Serialization only.SkinningControl
(Armature armature) Creates an armature control. -
Method Summary
Modifier and TypeMethodDescriptionvoid
cloneFields
(Cloner cloner, Object original) Implemented to perform deep cloning for this object, resolving local cloned references using the specified cloner.protected void
controlRender
(RenderManager rm, ViewPort vp) To be implemented in subclass.protected void
controlUpdate
(float tpf) To be implemented in subclass.returns the armature of this controlgetAttachmentsNode
(String jointName) Access the attachments node of the named bone.Mesh[]
Enumerate the target meshes of this control.boolean
boolean
jmeClone()
Performs a regular shallow clone of the object.void
read
(JmeImporter im) De-serialize this Control from the specified importer, for example when loading from a J3O file.void
setHardwareSkinningPreferred
(boolean preferred) Specifies if hardware skinning is preferred.void
setSpatial
(Spatial spatial) void
write
(JmeExporter ex) Serialize this Control to the specified exporter, for example when saving to a J3O file.Methods inherited from class com.jme3.scene.control.AbstractControl
cloneForSpatial, getSpatial, isEnabled, render, setEnabled, update
-
Constructor Details
-
SkinningControl
protected SkinningControl()Serialization only. Do not use. -
SkinningControl
Creates an armature control. The list of targets will be acquired automatically when the control is attached to a node.- Parameters:
armature
- the armature
-
-
Method Details
-
setHardwareSkinningPreferred
public void setHardwareSkinningPreferred(boolean preferred) Specifies if hardware skinning is preferred. If it is preferred and supported by GPU, it shall be enabled. If it's not preferred, or not supported by GPU, then it shall be disabled.- Parameters:
preferred
- true to prefer hardware skinning, false to prefer software skinning (default=true)- See Also:
-
isHardwareSkinningPreferred
public boolean isHardwareSkinningPreferred()- Returns:
- True if hardware skinning is preferable to software skinning. Set to false by default.
- See Also:
-
isHardwareSkinningUsed
public boolean isHardwareSkinningUsed()- Returns:
- True is hardware skinning is activated and is currently used, false otherwise.
-
setSpatial
- Specified by:
setSpatial
in interfaceControl
- Overrides:
setSpatial
in classAbstractControl
- Parameters:
spatial
- the spatial to be controlled. This should not be called from user code.
-
controlRender
Description copied from class:AbstractControl
To be implemented in subclass.- Specified by:
controlRender
in classAbstractControl
- Parameters:
rm
- the RenderManager rendering the controlled Spatial (not null)vp
- the ViewPort being rendered (not null)
-
controlUpdate
protected void controlUpdate(float tpf) Description copied from class:AbstractControl
To be implemented in subclass.- Specified by:
controlUpdate
in classAbstractControl
- Parameters:
tpf
- time per frame (in seconds)
-
jmeClone
Description copied from interface:JmeCloneable
Performs a regular shallow clone of the object. Some fields may also be cloned but generally only if they will never be shared with other objects. (For example, local Vector3fs and so on.)This method is separate from the regular clone() method so that objects might still maintain their own regular java clone() semantics (perhaps even using Cloner for those methods). However, because Java's clone() has specific features in the sense of Object's clone() implementation, it's usually best to have some path for subclasses to bypass the public clone() method that might be cloning fields and instead get at the superclass protected clone() methods. For example, through super.jmeClone() or another protected clone method that some base class eventually calls super.clone() in.
- Specified by:
jmeClone
in interfaceJmeCloneable
- Overrides:
jmeClone
in classAbstractControl
- Returns:
- a new instance
-
cloneFields
Description copied from interface:JmeCloneable
Implemented to perform deep cloning for this object, resolving local cloned references using the specified cloner. The object can call cloner.clone(fieldValue) to deep clone any of its fields.Note: during normal clone operations the original object will not be needed as the clone has already had all of the fields shallow copied.
- Specified by:
cloneFields
in interfaceJmeCloneable
- Overrides:
cloneFields
in classAbstractControl
- Parameters:
cloner
- The cloner that is performing the cloning operation. The cloneFields method can call back into the cloner to make clones of its subordinate fields.original
- The original object from which this object was cloned. This is provided for the very rare case that this object needs to refer to its original for some reason. In general, all of the relevant values should have been transferred during the shallow clone, and this object need only clone what it wants.
-
getAttachmentsNode
Access the attachments node of the named bone. If the bone doesn't already have an attachments node, create one and attach it to the scene graph. Models and effects attached to the attachments node will follow the bone's motions.- Parameters:
jointName
- the name of the joint- Returns:
- the attachments node of the joint
-
getArmature
returns the armature of this control- Returns:
- the pre-existing instance
-
getTargets
Enumerate the target meshes of this control.- Returns:
- a new array
-
write
Serialize this Control to the specified exporter, for example when saving to a J3O file.- Specified by:
write
in interfaceSavable
- Overrides:
write
in classAbstractControl
- Parameters:
ex
- the exporter to write to (not null)- Throws:
IOException
- from the exporter
-
read
De-serialize this Control from the specified importer, for example when loading from a J3O file.- Specified by:
read
in interfaceSavable
- Overrides:
read
in classAbstractControl
- Parameters:
im
- the importer to read from (not null)- Throws:
IOException
- from the importer
-