|
IsoSurface Rendering of an AR Representation | |||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--rlaramee.IsoSurfaceAdaptive
Description: The adapative isosurface consists of all coarser octree nodes and their cubes that share vertices either on their (own) edges or faces with finer resolution neighbors. The IsoSurface object contains and IsoSurfaceAdaptive which it does not need to use in an MR octree representation -only the different AR representations.
start date Mon 26 Mar 01
IsoSurface.java
Field Summary | |
private int |
num3rdPassNodes
the number of nodes added to the 2nd pass list while processing the 2nd pass list (not on the first pass) |
private int[] |
numPolygonsRemoved
counts how many polygons have been removed from the surface |
private int |
NUMRESOLUTIONS
|
private java.util.ArrayList |
res128nodes
These are all AR nodes in the AR isosurface. |
private java.util.ArrayList |
res16nodes
|
private java.util.ArrayList |
res2nodes
|
private java.util.ArrayList |
res32nodes
|
private java.util.ArrayList |
res4nodes
|
private java.util.ArrayList |
res64nodes
|
private java.util.ArrayList |
res8nodes
|
private IsoSurface |
surface
The IsoSurface object represents the uniform resolution portion of the isoSurface |
private int[] |
totalNumEdgeVertices
statistics. |
private int[] |
totalNumFacialVertices
|
private int[] |
totalNumIncompleteARs
good error checking idea |
private int[] |
totalNumMissingVertexCases
|
private int[] |
totalNumSubdivides
|
private int[] |
totalNumTrianglesDeleted
|
Constructor Summary | |
IsoSurfaceAdaptive(IsoSurface isoSurface)
constructor |
Method Summary | |
boolean |
addAdaptiveNode(OctreeNode coarseNode,
boolean firstPass)
|
private java.util.ArrayList |
getAdaptiveNodes(short resolution)
|
private int |
getNum3rdPassNodes()
For now this is for keeping statistics |
private IsoSurface |
getSurface()
|
private int |
getTotalNumEdgeVertices(short resolution)
|
private int |
getTotalNumFacialVertices(short resolution)
|
private int |
getTotalNumIncompleteARs(short resolution)
|
private int |
getTotalNumMissingVertexCases(short resolution)
|
private int |
getTotalNumSubdivides(short resolution)
|
private int |
getTotalNumTrianglesDeleted(short resolution)
|
private boolean |
mc8children(OctreeNode parentNode)
This method is called from MarchingCubes.processSubdivide() |
private void |
printDebuggingMessage(OctreeNode coarseNode)
|
void |
printStatistics()
Print some information about the AR isosurface. |
private boolean |
process2ndPass()
|
boolean |
processAdaptiveSurface()
We have access to the marching cubes object needed to generate triangles and the isovalue through the IsoSurface object |
private boolean |
processEdgeList(OctreeNode coarseNode)
|
private boolean |
processResolution(short resolution)
This is a new part of the MC algorithm. |
private boolean |
processSubdivide(OctreeNode coarseNode,
byte coarseToFineDir)
Part of the subdivision process is to delete the previously generated coarser resolution triangles from the isosurface. |
private void |
recordResolutionStats(OctreeNode node)
Keep statistics about The total number of facial vertices The total number of edge vertices The number of missing vertex cases |
private void |
setNum3rdPassNodes()
This counts the number of nodes that were added to the second pass list while processing the second pass list |
private void |
setSurface(IsoSurface isoSurface)
|
private void |
setTotalNumEdgeVertices(short resolution,
int newVertices)
|
private void |
setTotalNumFacialVertices(short resolution,
int newVertices)
|
private void |
setTotalNumIncompleteARs(short resolution)
|
private void |
setTotalNumMissingVertexCases(short resolution)
|
private void |
setTotalNumSubdivides(short resolution)
|
private void |
setTotalNumTrianglesDeleted(byte n,
short resolution)
|
Methods inherited from class java.lang.Object |
|
Field Detail |
private IsoSurface surface
private java.util.ArrayList res128nodes
private java.util.ArrayList res64nodes
private java.util.ArrayList res32nodes
private java.util.ArrayList res16nodes
private java.util.ArrayList res8nodes
private java.util.ArrayList res4nodes
private java.util.ArrayList res2nodes
private final int NUMRESOLUTIONS
private int[] totalNumEdgeVertices
private int[] totalNumFacialVertices
private int[] totalNumSubdivides
private int[] totalNumMissingVertexCases
private int[] totalNumTrianglesDeleted
private int[] totalNumIncompleteARs
private int[] numPolygonsRemoved
private int num3rdPassNodes
Constructor Detail |
public IsoSurfaceAdaptive(IsoSurface isoSurface)
the
- isosurface of which this adaptive portion is a part ofMethod Detail |
private IsoSurface getSurface()
private void setSurface(IsoSurface isoSurface)
the
- isosurface of which this adaptive object is a portion ofprivate java.util.ArrayList getAdaptiveNodes(short resolution)
resolution
- the resolution of adaptive nodes to returnprivate int getTotalNumEdgeVertices(short resolution)
private void setTotalNumEdgeVertices(short resolution, int newVertices)
resolution
- the resolution of nodes we're adding the new
vertices toonewVertices
- the total number of triangle edge vertices at the
given resolutionprivate int getTotalNumFacialVertices(short resolution)
private void setTotalNumFacialVertices(short resolution, int newVertices)
resolution
- the resolution we're adding the total tonewVertices
- the total number of new triangle edge vertices
at the given resolutionprivate int getTotalNumSubdivides(short resolution)
private void setTotalNumSubdivides(short resolution)
the
- total number of subdivided nodes at the given resolutionprivate int getTotalNumMissingVertexCases(short resolution)
private void setTotalNumMissingVertexCases(short resolution)
the
- total number of missing vertex cases at the given resolutionprivate int getTotalNumIncompleteARs(short resolution)
private void setTotalNumIncompleteARs(short resolution)
the
- total number of incomplete AR cases at the given resolutionprivate int getTotalNumTrianglesDeleted(short resolution)
private void setTotalNumTrianglesDeleted(byte n, short resolution)
n
- the number, n, of triangles that have just been deletedthe
- total number of incomplete AR cases at the given resolutionprivate int getNum3rdPassNodes()
private void setNum3rdPassNodes()
public boolean addAdaptiveNode(OctreeNode coarseNode, boolean firstPass)
coarseNode
- an octree node to add to the AR surfacefirstPass
- is TRUE if we are performing MC on the first pass
through the octreepublic boolean processAdaptiveSurface()
private boolean process2ndPass()
private boolean processResolution(short resolution)
The first version of the algorithm is:
Count the number of chains on each face of the AR octree node IF there are 2 or more chains on the same face THEN subdivide ELSE FOR EACH CHAIN Match a chain with a native triangle vertex out put a fan of trianglesThis is something we may want to include too:
IF there are any facial vertices THEN grab the first one and subdivide.
We also have to decide when to apply inconsistent interpolation updates
resolution
- the resolution of AR nodes to processprivate boolean processSubdivide(OctreeNode coarseNode, byte coarseToFineDir)
coarseNode
- the octree node with the 8 new children as a result
of subdividing.coarseToFineDir
- the direction from the coarse node to the
fine adjacent node (causing the subdivide)private boolean mc8children(OctreeNode parentNode)
It performs the MC algorithm on 8 child nodes.
parentNode
- the octree node with the 8 new children as a result
of subdividing.private boolean processEdgeList(OctreeNode coarseNode)
coarseNode
- the octree node whose edges need inspectingpublic void printStatistics()
private void recordResolutionStats(OctreeNode node)
private void printDebuggingMessage(OctreeNode coarseNode)
coarseNode
- the node we are printing
|
IsoSurface Rendering of an AR Representation | |||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |