de.grogra.imp3d.glsl
Class GLSLVolumeBuilder

java.lang.Object
  extended by de.grogra.imp3d.glsl.GLSLVolumeBuilder
All Implemented Interfaces:
RenderState

public class GLSLVolumeBuilder
extends java.lang.Object
implements RenderState

Simple class that will gather Scene information about the extend of all objects

Author:
Konni Hartmann

Field Summary
 
Fields inherited from interface de.grogra.imp3d.RenderState
CURRENT_HIGHLIGHT
 
Constructor Summary
GLSLVolumeBuilder()
           
 
Method Summary
 void drawBox(float halfWidth, float halfLength, float height, Shader s, int highlight, Matrix4d t)
           
 void drawFrustum(float height, float baseRadius, float topRadius, boolean baseClosed, boolean topClosed, float scaleV, Shader s, int highlight, Matrix4d t)
           
 void drawLine(Tuple3f start, Tuple3f end, Tuple3f color, int highlight, Matrix4d t)
           
 void drawParallelogram(float axis, Vector3f secondAxis, float scaleU, float scaleV, Shader s, int highlight, Matrix4d t)
           
 void drawPlane(Shader s, int highlight, Matrix4d t)
           
 void drawPoint(Tuple3f location, int pixelSize, Tuple3f color, int highlight, Matrix4d t)
           
 void drawPointCloud(float[] locations, float pointSize, Tuple3f color, int highlight, Matrix4d t)
          Draw a set of points.
 void drawPolygons(Polygonizable polygons, java.lang.Object obj, boolean asNode, Shader s, int highlight, Matrix4d t)
           
 void drawRectangle(int x, int y, int w, int h, Tuple3f color)
           
 void drawSphere(float radius, Shader s, int highlight, Matrix4d t)
           
 void drawString(int x, int y, java.lang.String text, java.awt.Font font, Tuple3f color)
           
 void drawSupershape(float a, float b, float m1, float n11, float n12, float n13, float m2, float n21, float n22, float n23, Shader s, int highlight, Matrix4d t)
          Draw a supershape around the origin (0/0/0).
 float estimateScaleAt(Tuple3f point)
           
 void fillRectangle(int x, int y, int w, int h, Tuple3f color)
           
 void finish()
          Should be called after all renderables have been processed.
 Vector3d getCenter()
           
 int getCurrentHighlight()
           
 float getCurrentRadius()
           
 Shader getCurrentShader()
           
 TransformableVolume getCurrentVolume()
           
 java.awt.FontMetrics getFontMetrics(java.awt.Font font)
           
 Pool getPool()
           
 double getRadius()
           
 GraphState getRenderGraphState()
           
 boolean getWindowPos(Tuple3f location, Tuple2f out)
          Computes the window coordinates in pixels of a location in the current object coordinates.
 void initSceneExtent(GLDisplay disp)
          Initializes values for calculation of scene extend.
 boolean needsData()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

GLSLVolumeBuilder

public GLSLVolumeBuilder()
Method Detail

drawBox

public void drawBox(float halfWidth,
                    float halfLength,
                    float height,
                    Shader s,
                    int highlight,
                    Matrix4d t)
Specified by:
drawBox in interface RenderState

drawFrustum

public void drawFrustum(float height,
                        float baseRadius,
                        float topRadius,
                        boolean baseClosed,
                        boolean topClosed,
                        float scaleV,
                        Shader s,
                        int highlight,
                        Matrix4d t)
Specified by:
drawFrustum in interface RenderState

drawLine

public void drawLine(Tuple3f start,
                     Tuple3f end,
                     Tuple3f color,
                     int highlight,
                     Matrix4d t)
Specified by:
drawLine in interface RenderState

drawParallelogram

public void drawParallelogram(float axis,
                              Vector3f secondAxis,
                              float scaleU,
                              float scaleV,
                              Shader s,
                              int highlight,
                              Matrix4d t)
Specified by:
drawParallelogram in interface RenderState

drawPlane

public void drawPlane(Shader s,
                      int highlight,
                      Matrix4d t)
Specified by:
drawPlane in interface RenderState

drawPoint

public void drawPoint(Tuple3f location,
                      int pixelSize,
                      Tuple3f color,
                      int highlight,
                      Matrix4d t)
Specified by:
drawPoint in interface RenderState

drawPointCloud

public void drawPointCloud(float[] locations,
                           float pointSize,
                           Tuple3f color,
                           int highlight,
                           Matrix4d t)
Description copied from interface: RenderState
Draw a set of points. The array locations contains a sequence of points given as triples of floats for x, y and z position of each point. If the same reference for the array location is passed in the implementation might assume that the contents of the array are the same as well. This is necessary for GLDisplay, for instance, to ensure a performant implementation. The class PointCloud ensures that this is the case.

Specified by:
drawPointCloud in interface RenderState
Parameters:
locations - array containing a sequence (x,y,z) of points
pointSize - size of the point on screen
color - color of the point
t - transformation of the point cloud

drawPolygons

public void drawPolygons(Polygonizable polygons,
                         java.lang.Object obj,
                         boolean asNode,
                         Shader s,
                         int highlight,
                         Matrix4d t)
Specified by:
drawPolygons in interface RenderState

drawRectangle

public void drawRectangle(int x,
                          int y,
                          int w,
                          int h,
                          Tuple3f color)
Specified by:
drawRectangle in interface RenderState

drawSphere

public void drawSphere(float radius,
                       Shader s,
                       int highlight,
                       Matrix4d t)
Specified by:
drawSphere in interface RenderState

drawString

public void drawString(int x,
                       int y,
                       java.lang.String text,
                       java.awt.Font font,
                       Tuple3f color)
Specified by:
drawString in interface RenderState

drawSupershape

public void drawSupershape(float a,
                           float b,
                           float m1,
                           float n11,
                           float n12,
                           float n13,
                           float m2,
                           float n21,
                           float n22,
                           float n23,
                           Shader s,
                           int highlight,
                           Matrix4d t)
Description copied from interface: RenderState
Draw a supershape around the origin (0/0/0). An implementation of Johan Gielis's Superformula which was published in the American Journal of Botany 90(3): 333–338. 2003. INVITED SPECIAL PAPER A GENERIC GEOMETRIC TRANSFORMATION THAT UNIFIES A WIDE RANGE OF NATURAL AND ABSTRACT SHAPES

Specified by:
drawSupershape in interface RenderState
t - transformation of the point cloud

estimateScaleAt

public float estimateScaleAt(Tuple3f point)
Specified by:
estimateScaleAt in interface RenderState

fillRectangle

public void fillRectangle(int x,
                          int y,
                          int w,
                          int h,
                          Tuple3f color)
Specified by:
fillRectangle in interface RenderState

finish

public void finish()
Should be called after all renderables have been processed. If not, calculated scene information will be incorrect.


getCenter

public Vector3d getCenter()
Returns:
The center of a sphere containing all renderable nodes of the scene.

getCurrentHighlight

public int getCurrentHighlight()
Specified by:
getCurrentHighlight in interface RenderState

getCurrentRadius

public float getCurrentRadius()
Returns:
The radius of the last processed renderable node.

getCurrentShader

public Shader getCurrentShader()
Specified by:
getCurrentShader in interface RenderState

getCurrentVolume

public TransformableVolume getCurrentVolume()
Returns:
The Volume-Object for the last processed renderable. This will also reset all information about this renderable to default values. It should be called after getCurrentRadius()

getFontMetrics

public java.awt.FontMetrics getFontMetrics(java.awt.Font font)
Specified by:
getFontMetrics in interface RenderState

getPool

public Pool getPool()
Specified by:
getPool in interface RenderState

getRadius

public double getRadius()
Returns:
The radius of a sphere containing all renderable nodes of the scene.

getRenderGraphState

public GraphState getRenderGraphState()
Specified by:
getRenderGraphState in interface RenderState

getWindowPos

public boolean getWindowPos(Tuple3f location,
                            Tuple2f out)
Description copied from interface: RenderState
Computes the window coordinates in pixels of a location in the current object coordinates.

Specified by:
getWindowPos in interface RenderState
Parameters:
location - a location in local object coordinates
out - the computed window coordinates are placed in here
Returns:
true iff the window coordinates are valid (i.e., the location is in the clipping region)

initSceneExtent

public void initSceneExtent(GLDisplay disp)
Initializes values for calculation of scene extend. Should be called before nodes are processed by this class.

Parameters:
disp - The Display using this class.

needsData

public boolean needsData()
Returns:
true, if the calculated scene extend needs to be updated.