com.jme.scene.lod
Class ClodCreator

java.lang.Object
  extended by com.jme.scene.lod.VETMesh
      extended by com.jme.scene.lod.ClodCreator

public class ClodCreator
extends VETMesh

ClodCreator originally ported from David Eberly's c++, modifications and enhancements made from there.

This class is used by ClodMesh to create automatically generated records. The reason for lack of documentation is that it should have little use to someone outside the API, unless they already know how to use it.

Version:
$Id: ClodCreator.java 4131 2009-03-19 20:15:28Z blaine.dev $
Author:
Joshua Slack

Nested Class Summary
protected  class ClodCreator.HeapRecord
           
 
Nested classes/interfaces inherited from class com.jme.scene.lod.VETMesh
VETMesh.Edge, VETMesh.EdgeAttribute, VETMesh.Triangle, VETMesh.TriangleAttribute, VETMesh.VertexAttribute
 
Field Summary
(package private)  boolean collapsing
           
(package private)  java.util.ArrayList<CollapseRecord> deletedEdges
           
(package private)  java.util.TreeSet<java.lang.Integer> deletedVertices
           
(package private)  ClodCreator.HeapRecord[] heapArray
           
(package private)  int heapSize
           
(package private)  CollapseRecord[] records
           
 
Fields inherited from class com.jme.scene.lod.VETMesh
edgeMap, triangleMap, vertexMap
 
Constructor Summary
ClodCreator(java.nio.FloatBuffer vertexArray, java.nio.FloatBuffer normalArray, java.nio.FloatBuffer colorArray, java.nio.FloatBuffer textureArray, java.nio.IntBuffer indiceArray)
           
 
Method Summary
 void add(float fMetric)
           
 boolean collapseCausesFolding(int iVKeep, int iVThrow)
           
 void collapseEdge(int iVKeep, int iVThrow)
           
 CollapseRecord[] computeRecords()
           
 void doCollapse()
           
 void flushTriangles()
           
 void flushVertices()
           
 float getMetric(VETMesh.Edge pkE, VETMesh.EdgeAttribute pkEA)
           
 CollapseRecord[] getRecords()
           
 void initializeHeap()
           
 boolean isValidHeap()
           
 boolean isValidHeap(int iStart, int iFinal)
           
 void modifyTriangle(VETMesh.Triangle rkT, int iVKeep, int iVThrow)
           
 void onEdgeInsert(VETMesh.Edge rkE, boolean bCreate, VETMesh.EdgeAttribute att)
           
 void onEdgeRemove(VETMesh.Edge rkE, boolean bDestroy, VETMesh.EdgeAttribute att)
           
 void onTriangleInsert(VETMesh.Triangle tri, boolean bCreate, VETMesh.TriangleAttribute att)
           
 void onTriangleRemove(VETMesh.Triangle tri, boolean bDestroy, VETMesh.TriangleAttribute att)
           
 void onVertexInsert(java.lang.Integer vert, boolean bCreate, VETMesh.VertexAttribute att)
           
 void onVertexRemove(java.lang.Integer vert, boolean bDestroy, VETMesh.VertexAttribute att)
           
 void remove()
           
 void removeTriangle(VETMesh.Triangle rkT)
           
 void reorder()
           
 void sort()
           
 void update(int iHIndex, float fMetric)
           
 
Methods inherited from class com.jme.scene.lod.VETMesh
create, getComponents, getComponents, getConsistentComponents, getData, getData, getData, getData, getData, getEdgeMap, getEdgeQuantity, getEdges, getEdges, getReversedOrderMesh, getTriangleMap, getTriangleQuantity, getTriangles, getTriangles, getTriangles, getVertexMap, getVertexQuantity, getVertices, insertTriangle, insertTriangle, isClosed, isConnected, isManifold, removeAllTriangles, removeComponent, removeTriangle, setData, setData
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

heapSize

int heapSize

heapArray

ClodCreator.HeapRecord[] heapArray

collapsing

boolean collapsing

deletedVertices

java.util.TreeSet<java.lang.Integer> deletedVertices

deletedEdges

java.util.ArrayList<CollapseRecord> deletedEdges

records

CollapseRecord[] records
Constructor Detail

ClodCreator

public ClodCreator(java.nio.FloatBuffer vertexArray,
                   java.nio.FloatBuffer normalArray,
                   java.nio.FloatBuffer colorArray,
                   java.nio.FloatBuffer textureArray,
                   java.nio.IntBuffer indiceArray)
Method Detail

getRecords

public CollapseRecord[] getRecords()

doCollapse

public void doCollapse()

collapseCausesFolding

public boolean collapseCausesFolding(int iVKeep,
                                     int iVThrow)

getMetric

public float getMetric(VETMesh.Edge pkE,
                       VETMesh.EdgeAttribute pkEA)

removeTriangle

public void removeTriangle(VETMesh.Triangle rkT)
Overrides:
removeTriangle in class VETMesh

modifyTriangle

public void modifyTriangle(VETMesh.Triangle rkT,
                           int iVKeep,
                           int iVThrow)

collapseEdge

public void collapseEdge(int iVKeep,
                         int iVThrow)

flushVertices

public void flushVertices()

flushTriangles

public void flushTriangles()

reorder

public void reorder()

computeRecords

public CollapseRecord[] computeRecords()

initializeHeap

public void initializeHeap()

sort

public void sort()

add

public void add(float fMetric)

remove

public void remove()

update

public void update(int iHIndex,
                   float fMetric)

isValidHeap

public boolean isValidHeap(int iStart,
                           int iFinal)

isValidHeap

public boolean isValidHeap()

onVertexInsert

public void onVertexInsert(java.lang.Integer vert,
                           boolean bCreate,
                           VETMesh.VertexAttribute att)
Overrides:
onVertexInsert in class VETMesh

onVertexRemove

public void onVertexRemove(java.lang.Integer vert,
                           boolean bDestroy,
                           VETMesh.VertexAttribute att)
Overrides:
onVertexRemove in class VETMesh

onEdgeInsert

public void onEdgeInsert(VETMesh.Edge rkE,
                         boolean bCreate,
                         VETMesh.EdgeAttribute att)
Overrides:
onEdgeInsert in class VETMesh

onEdgeRemove

public void onEdgeRemove(VETMesh.Edge rkE,
                         boolean bDestroy,
                         VETMesh.EdgeAttribute att)
Overrides:
onEdgeRemove in class VETMesh

onTriangleInsert

public void onTriangleInsert(VETMesh.Triangle tri,
                             boolean bCreate,
                             VETMesh.TriangleAttribute att)
Overrides:
onTriangleInsert in class VETMesh

onTriangleRemove

public void onTriangleRemove(VETMesh.Triangle tri,
                             boolean bDestroy,
                             VETMesh.TriangleAttribute att)
Overrides:
onTriangleRemove in class VETMesh