Package com.jme3.scene.control
Class LodControl
java.lang.Object
com.jme3.scene.control.AbstractControl
com.jme3.scene.control.LodControl
- All Implemented Interfaces:
Savable
,Control
,JmeCloneable
,Cloneable
Determines what Level of Detail a spatial should be, based on how many pixels
on the screen the spatial is taking up. The more pixels covered, the more
detailed the spatial should be. It calculates the area of the screen that the
spatial covers by using its bounding box. When initializing, it will ask the
spatial for how many triangles it has for each LOD. It then uses that, along
with the trisPerPixel value to determine what LOD it should be at. It
requires the camera to do this. The controlRender method is called each frame
and will update the spatial's LOD if the camera has moved by a specified
amount.
-
Field Summary
Fields inherited from class com.jme3.scene.control.AbstractControl
enabled, spatial
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected void
controlRender
(RenderManager rm, ViewPort vp) To be implemented in subclass.protected void
controlUpdate
(float tpf) To be implemented in subclass.float
Returns the distance tolerance for changing LOD.float
Returns the triangles per pixel value.jmeClone()
Performs a regular shallow clone of the object.void
read
(JmeImporter im) void
setDistTolerance
(float distTolerance) Specifies the distance tolerance for changing the LOD level on the geometry.void
setSpatial
(Spatial spatial) void
setTrisPerPixel
(float trisPerPixel) Sets the triangles per pixel value.void
write
(JmeExporter ex) Methods inherited from class com.jme3.scene.control.AbstractControl
cloneFields, cloneForSpatial, getSpatial, isEnabled, render, setEnabled, update
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface com.jme3.util.clone.JmeCloneable
cloneFields
-
Constructor Details
-
LodControl
public LodControl()Creates a newLodControl
.
-
-
Method Details
-
getDistTolerance
public float getDistTolerance()Returns the distance tolerance for changing LOD.- Returns:
- the distance tolerance for changing LOD.
- See Also:
-
setDistTolerance
public void setDistTolerance(float distTolerance) Specifies the distance tolerance for changing the LOD level on the geometry. The LOD level will only get changed if the geometry has moved this distance beyond the current LOD level.- Parameters:
distTolerance
- distance tolerance for changing LOD
-
getTrisPerPixel
public float getTrisPerPixel()Returns the triangles per pixel value.- Returns:
- the triangles per pixel value.
- See Also:
-
setTrisPerPixel
public void setTrisPerPixel(float trisPerPixel) Sets the triangles per pixel value. TheLodControl
will use this value as an error metric to determine which LOD level to use based on the geometry's area on the screen.- Parameters:
trisPerPixel
- triangles per pixel
-
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.
-
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
-
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)
-
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)
-
write
- Specified by:
write
in interfaceSavable
- Overrides:
write
in classAbstractControl
- Throws:
IOException
-
read
- Specified by:
read
in interfaceSavable
- Overrides:
read
in classAbstractControl
- Throws:
IOException
-