com.jme3.scene.control
Class LodControl

java.lang.Object
  extended by com.jme3.scene.control.AbstractControl
      extended by com.jme3.scene.control.LodControl
All Implemented Interfaces:
Savable, Control, java.lang.Cloneable

public class LodControl
extends AbstractControl
implements java.lang.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
LodControl()
          Creates a new LodControl.
 
Method Summary
 Control cloneForSpatial(Spatial spatial)
          Creates a clone of the Control, the given Spatial is the cloned version of the spatial to which this control is attached to.
protected  void controlRender(RenderManager rm, ViewPort vp)
          To be implemented in subclass.
protected  void controlUpdate(float tpf)
          To be implemented in subclass.
 float getDistTolerance()
          Returns the distance tolerance for changing LOD.
 float getTrisPerPixel()
          Returns the triangles per pixel value.
 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
getSpatial, isEnabled, render, setEnabled, update
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

LodControl

public LodControl()
Creates a new LodControl.

Method Detail

getDistTolerance

public float getDistTolerance()
Returns the distance tolerance for changing LOD.

Returns:
the distance tolerance for changing LOD.
See Also:
setDistTolerance(float)

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(float)

setTrisPerPixel

public void setTrisPerPixel(float trisPerPixel)
Sets the triangles per pixel value. The LodControl 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

public void setSpatial(Spatial spatial)
Specified by:
setSpatial in interface Control
Overrides:
setSpatial in class AbstractControl
Parameters:
spatial - the spatial to be controlled. This should not be called from user code.

cloneForSpatial

public Control cloneForSpatial(Spatial spatial)
Description copied from interface: Control
Creates a clone of the Control, the given Spatial is the cloned version of the spatial to which this control is attached to.

Specified by:
cloneForSpatial in interface Control
Returns:
A clone of this control for the spatial

controlUpdate

protected void controlUpdate(float tpf)
Description copied from class: AbstractControl
To be implemented in subclass.

Specified by:
controlUpdate in class AbstractControl

controlRender

protected void controlRender(RenderManager rm,
                             ViewPort vp)
Description copied from class: AbstractControl
To be implemented in subclass.

Specified by:
controlRender in class AbstractControl

write

public void write(JmeExporter ex)
           throws java.io.IOException
Specified by:
write in interface Savable
Overrides:
write in class AbstractControl
Throws:
java.io.IOException

read

public void read(JmeImporter im)
          throws java.io.IOException
Specified by:
read in interface Savable
Overrides:
read in class AbstractControl
Throws:
java.io.IOException