|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectde.jreality.geometry.IndexedFaceSetUtility
public class IndexedFaceSetUtility
Static methods for editing and processing instances of IndexedFaceSet.
| Method Summary | |
|---|---|
static void |
assignSmoothVertexNormals(IndexedFaceSet ifs,
double maxAngle,
int digits)
Averages the vertex normals for duplicate coordinates. |
static void |
assignSmoothVertexNormals(IndexedFaceSet ifs,
int digits)
Averages the vertex normals for duplicate coordinates. |
static void |
assignVertexTangents(IndexedFaceSet ifs)
|
static IndexedFaceSet |
binaryRefine(IndexedFaceSet ifs)
Only applicable for ifs all of whose faces are triangles; then each triangle is broken into four smaller triangles by bisecting the edges. |
static void |
calculateAndSetEdgesFromFaces(IndexedFaceSet ifs)
|
static void |
calculateAndSetFaceNormals(IndexedFaceSet ifs)
|
static void |
calculateAndSetFaceNormals(IndexedFaceSet ifs,
int metric)
|
static void |
calculateAndSetNormals(IndexedFaceSet ifs)
|
static void |
calculateAndSetVertexNormals(IndexedFaceSet ifs)
|
static double[][] |
calculateFaceNormals(IndexedFaceSet ifs)
|
static double[][] |
calculateFaceNormals(IndexedFaceSet ifs,
int metric)
|
static double[][] |
calculateFaceNormals(int[][] indices,
double[][] verts,
int metric)
Calculate face normals for the faces defined by the index list indices and the vertex list verts, with respect to the given metric. |
static void |
calculateFaceNormals(SceneGraphComponent c)
Traverse a scene graph, calculating (and setting) face normals for all instances of IndexedFaceSet. |
static double[][] |
calculateVertexNormals(IndexedFaceSet ifs)
|
static double[][] |
calculateVertexNormals(IndexedFaceSet ifs,
int metric)
|
static double[][] |
calculateVertexNormals(int[][] indices,
double[][] vertsAs2D,
double[][] fn,
int metric)
Calculate the vertex normals of the vertices by averaging the face normals of all faces to which the vertex belongs. |
static void |
calculateVertexNormals(SceneGraphComponent c)
Traverse a scene graph, calculating (and setting) vertex normals for all instances of IndexedFaceSet. |
static double[][] |
calculateVertexTangents(DoubleArrayArray texCoords,
DoubleArrayArray vertexCoordinates,
DoubleArrayArray vertexNormals,
IntArrayArray faceIndices)
calculates face tangents, converted from http://www.terathon.com/code/tangent.php |
static IndexedFaceSet |
constructPolygon(double[][] points)
A simple constructor for an IndexedFaceSet with a single face. |
static IndexedFaceSet |
constructPolygon(IndexedFaceSet ifs,
double[][] points)
A simple constructor for an IndexedFaceSet with a single face. |
static IndexedFaceSet |
constructPolygon(IndexedFaceSet ifs,
double[][] points,
int sig)
|
static IndexedFaceSetFactory |
constructPolygonFactory(IndexedFaceSet ifs,
double[][] points,
int sig)
|
static SceneGraphComponent |
displayFaceNormals(IndexedFaceSet ifs,
double scale,
int metric)
Generates an instance of IndexedLineSet which contains one line segment for each face normal of the
input ifs. |
static IntArrayArray |
edgesFromFaces(int[][] faces)
|
static IntArrayArray |
edgesFromFaces(IntArrayArray faces)
TODO optimize in case its a QuadMesh (u+v curves instead of u*v segments) |
static double[][] |
extractEdge(double[][] curve,
IndexedFaceSet ifs,
int which)
Deprecated. Use IndexedLineSetUtility.extractCurve(double[][], IndexedLineSet, int). |
static IndexedFaceSet |
extractFace(IndexedFaceSet ifs,
int which)
|
static IndexedFaceSet |
implode(IndexedFaceSet ifs,
double factor)
For each face of ifs, replace it with a face gotten by: if factor > 0: a shrunken version of the face (factor == 1 gives original face), or if factor < 0: a hole is cut out of the face, corresponding to the shrunken version with the same absolute value. |
static boolean |
makeConsistentOrientation(IndexedFaceSet ifs)
makes a consistent orientated version of the "face Indices" if possible. |
static IndexedFaceSet |
removeTextureCoordinateJumps(IndexedFaceSet src,
double jumpSize)
A special purpose code for the Buddy-Baer project which might be useful for other situations where texture coordinates wrap around. |
static IndexedFaceSet |
representAsSceneGraph(IndexedFaceSet exists,
Rectangle3D box)
Update the vertices of an existing IFS to match the state of box. |
static IndexedFaceSet |
representAsSceneGraph(Rectangle3D box)
Represent an instance of Rectangle3D as an instance of IndexedFaceSet. |
static void |
simpleTriangulate(IndexedFaceSet ifs)
Do a simple (dumb) triangulation of the indexed face set Edit the input IFS; if you want a copy, make it before calling this method. |
static IndexedFaceSet[] |
splitIfsToPrimitiveFaces(IndexedFaceSet ifs)
|
static IndexedFaceSet |
triangulate(IndexedFaceSet fs)
Deprecated. This mehtod may lead to an infinite loop. Use with care, or use the simpler method simpleTriangulate(IndexedFaceSet). |
static void |
triangulateBarycentric(IndexedFaceSet ifs)
|
static IndexedFaceSet |
triangulateRectangularPatch(double[][][] levels)
Generates a triangulated sphere from a given set of equally spaced longitude (theta) circles. |
static IndexedFaceSet |
truncate(IndexedFaceSet ifs)
Truncate the corners of each face of ifs. |
| Methods inherited from class java.lang.Object |
|---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Method Detail |
|---|
public static IndexedFaceSet binaryRefine(IndexedFaceSet ifs)
ifs -
public static void calculateAndSetEdgesFromFaces(IndexedFaceSet ifs)
public static IndexedFaceSet constructPolygon(double[][] points)
points -
public static IndexedFaceSet constructPolygon(IndexedFaceSet ifs,
double[][] points)
ifs - points -
public static IndexedFaceSet constructPolygon(IndexedFaceSet ifs,
double[][] points,
int sig)
public static IndexedFaceSetFactory constructPolygonFactory(IndexedFaceSet ifs,
double[][] points,
int sig)
public static IntArrayArray edgesFromFaces(int[][] faces)
public static IntArrayArray edgesFromFaces(IntArrayArray faces)
faces -
public static double[][] extractEdge(double[][] curve,
IndexedFaceSet ifs,
int which)
IndexedLineSetUtility.extractCurve(double[][], IndexedLineSet, int).
GeometryUtility.QUAD_MESH_SHAPE), then this will
correspond to a u- or v- parameter curve.
curve - ifs - which -
public static IndexedFaceSet extractFace(IndexedFaceSet ifs,
int which)
public static IndexedFaceSet implode(IndexedFaceSet ifs,
double factor)
ifs - factor -
public static IndexedFaceSet removeTextureCoordinateJumps(IndexedFaceSet src,
double jumpSize)
src - jumpSize -
public static IndexedFaceSet representAsSceneGraph(IndexedFaceSet exists,
Rectangle3D box)
exists - box -
public static IndexedFaceSet representAsSceneGraph(Rectangle3D box)
Rectangle3D as an instance of IndexedFaceSet.
box -
public static IndexedFaceSet[] splitIfsToPrimitiveFaces(IndexedFaceSet ifs)
ifs -
@Deprecated public static IndexedFaceSet triangulate(IndexedFaceSet fs)
simpleTriangulate(IndexedFaceSet).
fs -
public static void simpleTriangulate(IndexedFaceSet ifs)
ifs - public static IndexedFaceSet truncate(IndexedFaceSet ifs)
ifs -
public static void assignVertexTangents(IndexedFaceSet ifs)
public static double[][] calculateVertexTangents(DoubleArrayArray texCoords,
DoubleArrayArray vertexCoordinates,
DoubleArrayArray vertexNormals,
IntArrayArray faceIndices)
texCoords - vertexCoordinates - vertexNormals - faceIndices -
public static void assignSmoothVertexNormals(IndexedFaceSet ifs,
double maxAngle,
int digits)
ifs - the IndexedFaceSet to changemaxAngle - the maximum angle in degrees between two normals for being flippeddigits - the number of digits to respect for comparing coordinates
public static void assignSmoothVertexNormals(IndexedFaceSet ifs,
int digits)
ifs - digits - public static void triangulateBarycentric(IndexedFaceSet ifs)
public static IndexedFaceSet triangulateRectangularPatch(double[][][] levels)
public static boolean makeConsistentOrientation(IndexedFaceSet ifs)
numVertices - faces -
Exception
public static SceneGraphComponent displayFaceNormals(IndexedFaceSet ifs,
double scale,
int metric)
IndexedLineSet which contains one line segment for each face normal of the
input ifs. This IndexedLineSet is then stuffed into a SceneGraphComponent whose appearance
is set with tube drawing disabled, which is then returned. If normals are not provided in ifs,
the metric (see Pn) metric is respected
in the calculation of the normals.
ifs - scale - metric -
public static void calculateAndSetFaceNormals(IndexedFaceSet ifs)
public static void calculateAndSetFaceNormals(IndexedFaceSet ifs,
int metric)
public static void calculateAndSetNormals(IndexedFaceSet ifs)
public static void calculateAndSetVertexNormals(IndexedFaceSet ifs)
public static double[][] calculateFaceNormals(IndexedFaceSet ifs)
public static double[][] calculateFaceNormals(IndexedFaceSet ifs,
int metric)
public static double[][] calculateFaceNormals(int[][] indices,
double[][] verts,
int metric)
indices - verts - metric -
public static void calculateFaceNormals(SceneGraphComponent c)
IndexedFaceSet. If face normals are already
present, they are not calculated again. The setting has to take place
after the traversal due to locking considerations.
c - public static double[][] calculateVertexNormals(IndexedFaceSet ifs)
public static double[][] calculateVertexNormals(IndexedFaceSet ifs,
int metric)
public static double[][] calculateVertexNormals(int[][] indices,
double[][] vertsAs2D,
double[][] fn,
int metric)
Note: This method currently does not
correctly average vertices lying on the boundary of a closed quad mesh.
indices - vertsAs2D - fn - metric -
public static void calculateVertexNormals(SceneGraphComponent c)
IndexedFaceSet. If vertex normals are already
present, they are not calculated again. The setting has to take place
after the traversal due to locking considerations.
c -
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||