|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.jmol.export.___Exporter
org.jmol.export.__CartesianExporter
org.jmol.export._ObjExporter
public class _ObjExporter
Class to export Wavefront OBJ files. The format is described at
http://en.wikipedia.org/wiki/Wavefront_.obj_file
and
http://www.martinreddy.net/gfx/3d/OBJ.spec
At least two files are produced: the object in the .obj file and the
materials in the .mtl file. An additional image file is produced for each
surface. All should be kept in the same directory.
The exporter has been tested for ball and stick models, but not for:
Field Summary | |
---|---|
private int |
circleNum
Number for the next mesh of this type. |
private int |
coneNum
Number for the next mesh of this type. |
private int |
currentNormalOrigin
Wavefront OBJ refers to vertices and normals and textures by their location in the file. |
private int |
currentTextureOrigin
Wavefront OBJ refers to vertices and normals and textures by their location in the file. |
private int |
currentVertexOrigin
Wavefront OBJ refers to vertices and normals and textures by their location in the file. |
private int |
cylinderNum
Number for the next mesh of this type. |
private static boolean |
debug
Flag to cause debugging output to stdout. |
private int |
ellipseNum
Number for the next mesh of this type. |
private int |
ellipsoidNum
Number for the next mesh of this type. |
private java.io.BufferedWriter |
mtlbw
BufferedWriter for the .mtl file. |
(package private) java.io.File |
mtlFile
File for the .mtl file. |
private java.io.FileOutputStream |
mtlos
FileOutputStream for the .mtl file. |
private int |
nMtlBytes
Bytes written to the .mtl file. |
private boolean |
normalizeUV
Whether to normalize UV texture coordinates. |
(package private) java.lang.String |
objFileRootName
Path of the OBJ file without the extension. |
private float |
pixelSize
The size of a pixel based on some assumptions about screen size |
private javax.vecmath.Point3f |
ptTemp
|
private int |
sphereNum
Number for the next mesh of this type. |
private int |
surfaceNum
Number for the next mesh of this type. |
private boolean |
surfacesOnly
Flag to cause only surfaces to be output. |
(package private) java.util.List<java.lang.String> |
textureFiles
List of texture files created. |
(package private) java.util.Set<java.lang.Short> |
textures
HashSet for textures. |
private int |
triangleNum
Number for the next mesh of this type. |
Fields inherited from class org.jmol.export.__CartesianExporter |
---|
sphereMatrix, viewpoint |
Fields inherited from class org.jmol.export.___Exporter |
---|
aperatureAngle, backgroundColix, bw, cameraDistance, cameraPosition, center, commandLineOptions, commentChar, degreesPerRadian, depthZ, exportType, fileName, fixedRotationCenter, g3d, isToFile, jmolRenderer, lightSource, lineWidthMad, nBytes, output, privateKey, referenceCenter, scalePixelsPerAngstrom, screenHeight, screenWidth, slabZ, tempA, tempP1, tempP2, tempP3, tempV1, tempV2, tempV3, viewer |
Constructor Summary | |
---|---|
_ObjExporter()
|
Method Summary | |
---|---|
private void |
addMesh(java.lang.String name,
MeshSurface data,
javax.vecmath.Matrix4f matrix,
javax.vecmath.Matrix4f matrix1,
short colix,
java.awt.Point dim,
java.util.BitSet bsValid)
Adds a new mesh using the given data (faces, vertices, and normals) and colix after transforming it via the given affine transform matrix. |
private void |
addTexture(short colix,
java.lang.String name)
Adds a texture to the .mtl file if it is a new texture. |
private java.lang.Object |
createImage(java.lang.String fileName,
java.lang.String type,
java.lang.Object image,
int width,
int height)
|
private java.io.File |
createTextureFile(java.lang.String name,
MeshSurface data,
java.awt.Point dim)
Writes a texture file with the colors in the colixes array in a way that it can be mapped by the texture coordinates vt. |
protected void |
debugPrint(java.lang.String string)
Debug print utility. |
protected void |
drawSurface(MeshSurface meshSurface,
short colix)
|
(package private) java.lang.String |
finalizeOutput()
|
private java.lang.String |
getTextureName(short colix)
Returns the name to be used for the texture associated with the given colix. |
(package private) boolean |
initializeOutput(Viewer viewer,
double privateKey,
Graphics3D g3d,
java.lang.Object output)
|
protected void |
output(javax.vecmath.Tuple3f pt)
|
protected void |
outputCircle(javax.vecmath.Point3f pt1,
javax.vecmath.Point3f pt2,
float radius,
short colix,
boolean doFill)
|
private void |
outputCircle1(javax.vecmath.Point3f ptCenter,
javax.vecmath.Point3f ptPerp,
short colix,
float radius)
Local implementation of outputCircle. |
protected void |
outputCone(javax.vecmath.Point3f ptBase,
javax.vecmath.Point3f ptTip,
float radius,
short colix)
|
private void |
outputCone1(javax.vecmath.Point3f ptBase,
javax.vecmath.Point3f ptTip,
float radius,
short colix)
Local implementation of outputCone. |
protected boolean |
outputCylinder(javax.vecmath.Point3f ptCenter,
javax.vecmath.Point3f pt1,
javax.vecmath.Point3f pt2,
short colix,
byte endcaps,
float radius,
javax.vecmath.Point3f ptX,
javax.vecmath.Point3f ptY)
|
private void |
outputCylinder1(javax.vecmath.Point3f ptCenter,
javax.vecmath.Point3f pt1,
javax.vecmath.Point3f pt2,
short colix,
byte endcaps,
float radius,
javax.vecmath.Point3f ptX,
javax.vecmath.Point3f ptY)
Local implementation of outputCylinder. |
private boolean |
outputEllipse1(javax.vecmath.Point3f ptCenter,
javax.vecmath.Point3f ptZ,
javax.vecmath.Point3f ptX,
javax.vecmath.Point3f ptY,
short colix)
Local implementation of outputEllipse. |
protected void |
outputEllipsoid(javax.vecmath.Point3f center,
javax.vecmath.Point3f[] points,
short colix)
|
private void |
outputEllipsoid1(javax.vecmath.Point3f center,
float rx,
float ry,
float rz,
javax.vecmath.AxisAngle4f a,
short colix)
Local implementation of outputEllipsoid. |
protected void |
outputFace(int[] face,
int[] map,
int faceVertexMax)
|
private void |
outputFace1(int[] face,
int[] map,
int[] map2)
Local implementation of outputFace used for no texture coordinates. |
private void |
outputFace2(int[] face,
int vt,
int[] map,
int[] map2)
Local implementation of outputFace used with texture coordinates. |
protected void |
outputHeader()
|
private void |
outputList(javax.vecmath.Tuple3f[] pts,
int nPts,
javax.vecmath.Matrix4f m,
java.lang.String prefix,
java.util.BitSet bsValid)
create the v or vn list |
private void |
outputMtl(java.lang.String data)
Write to the .mtl file and keep track of the bytes written. |
protected void |
outputSphere(javax.vecmath.Point3f center,
float radius,
short colix)
|
protected void |
outputTextPixel(javax.vecmath.Point3f pt,
int argb)
|
protected void |
outputTriangle(javax.vecmath.Point3f pt1,
javax.vecmath.Point3f pt2,
javax.vecmath.Point3f pt3,
short colix)
|
private void |
outputTriangle1(javax.vecmath.Point3f pt1,
javax.vecmath.Point3f pt2,
javax.vecmath.Point3f pt3,
short colix)
Local implementation of outputCylinder. |
Methods inherited from class org.jmol.export.__CartesianExporter |
---|
drawAtom, drawCircle, drawCylinder, drawEllipse, drawPixel, drawTextPixel, fillConeScreen, fillCylinderScreen, fillCylinderScreenMad, fillEllipsoid, fillSphere, fillTriangle, getCameraPosition, getCoordinateMap, getModelCenter, getNormalMap, outputIndices, plotImage, plotText, setSphereMatrix |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
private static final boolean debug
private boolean surfacesOnly
private boolean normalizeUV
private java.io.BufferedWriter mtlbw
private java.io.FileOutputStream mtlos
java.lang.String objFileRootName
java.io.File mtlFile
private int nMtlBytes
java.util.Set<java.lang.Short> textures
java.util.List<java.lang.String> textureFiles
private int sphereNum
private int cylinderNum
private int ellipseNum
private int circleNum
private int ellipsoidNum
private int coneNum
private int triangleNum
private int surfaceNum
private int currentVertexOrigin
private int currentNormalOrigin
private int currentTextureOrigin
private float pixelSize
private final javax.vecmath.Point3f ptTemp
Constructor Detail |
---|
public _ObjExporter()
Method Detail |
---|
protected void debugPrint(java.lang.String string)
string
- protected void outputFace(int[] face, int[] map, int faceVertexMax)
outputFace
in class __CartesianExporter
protected void outputCircle(javax.vecmath.Point3f pt1, javax.vecmath.Point3f pt2, float radius, short colix, boolean doFill)
outputCircle
in class __CartesianExporter
protected void outputCone(javax.vecmath.Point3f ptBase, javax.vecmath.Point3f ptTip, float radius, short colix)
outputCone
in class __CartesianExporter
protected boolean outputCylinder(javax.vecmath.Point3f ptCenter, javax.vecmath.Point3f pt1, javax.vecmath.Point3f pt2, short colix, byte endcaps, float radius, javax.vecmath.Point3f ptX, javax.vecmath.Point3f ptY)
outputCylinder
in class __CartesianExporter
protected void outputEllipsoid(javax.vecmath.Point3f center, javax.vecmath.Point3f[] points, short colix)
outputEllipsoid
in class __CartesianExporter
protected void outputSphere(javax.vecmath.Point3f center, float radius, short colix)
outputSphere
in class __CartesianExporter
protected void outputTextPixel(javax.vecmath.Point3f pt, int argb)
outputTextPixel
in class __CartesianExporter
protected void outputTriangle(javax.vecmath.Point3f pt1, javax.vecmath.Point3f pt2, javax.vecmath.Point3f pt3, short colix)
outputTriangle
in class __CartesianExporter
protected void outputHeader()
outputHeader
in class ___Exporter
protected void output(javax.vecmath.Tuple3f pt)
output
in class ___Exporter
protected void drawSurface(MeshSurface meshSurface, short colix)
drawSurface
in class ___Exporter
boolean initializeOutput(Viewer viewer, double privateKey, Graphics3D g3d, java.lang.Object output)
initializeOutput
in class ___Exporter
java.lang.String finalizeOutput()
finalizeOutput
in class ___Exporter
private void outputMtl(java.lang.String data)
data
- private java.lang.String getTextureName(short colix)
colix
- The value of colix.
private void outputCircle1(javax.vecmath.Point3f ptCenter, javax.vecmath.Point3f ptPerp, short colix, float radius)
ptCenter
- ptPerp
- colix
- radius
- private void outputCone1(javax.vecmath.Point3f ptBase, javax.vecmath.Point3f ptTip, float radius, short colix)
ptBase
- ptTip
- radius
- colix
- private boolean outputEllipse1(javax.vecmath.Point3f ptCenter, javax.vecmath.Point3f ptZ, javax.vecmath.Point3f ptX, javax.vecmath.Point3f ptY, short colix)
ptCenter
- ptZ
- ptX
- ptY
- colix
-
private java.io.File createTextureFile(java.lang.String name, MeshSurface data, java.awt.Point dim)
name
- The name of the file without the path or ext. This will be added
to the root name of the OBJ file along with the image suffix. The
value should be the name given to the surface.data
- dim
- A Point representing the width, height of the image.
private java.lang.Object createImage(java.lang.String fileName, java.lang.String type, java.lang.Object image, int width, int height) throws java.lang.Exception
fileName
- type
- image
- width
- height
-
java.lang.Exception
private void outputEllipsoid1(javax.vecmath.Point3f center, float rx, float ry, float rz, javax.vecmath.AxisAngle4f a, short colix)
center
- rx
- ry
- rz
- a
- colix
- private void outputCylinder1(javax.vecmath.Point3f ptCenter, javax.vecmath.Point3f pt1, javax.vecmath.Point3f pt2, short colix, byte endcaps, float radius, javax.vecmath.Point3f ptX, javax.vecmath.Point3f ptY)
ptCenter
- pt1
- pt2
- colix
- endcaps
- radius
- ptX
- ptY
- private void outputTriangle1(javax.vecmath.Point3f pt1, javax.vecmath.Point3f pt2, javax.vecmath.Point3f pt3, short colix)
pt1
- Vertex 1.pt2
- Vertex 2.pt3
- Vertex 3.colix
- The colix.private void addTexture(short colix, java.lang.String name)
colix
- name
- TODOprivate void addMesh(java.lang.String name, MeshSurface data, javax.vecmath.Matrix4f matrix, javax.vecmath.Matrix4f matrix1, short colix, java.awt.Point dim, java.util.BitSet bsValid)
name
- The name to be used for the mesh.data
- Where the data are located.matrix
- Transformation to transform the base mesh.matrix1
- Transformation for normalscolix
- Colix associated with the mesh.dim
- The width, height of the associated image for UV texture
coordinates. If null no UV coordinates are used.bsValid
- TODOprivate void outputList(javax.vecmath.Tuple3f[] pts, int nPts, javax.vecmath.Matrix4f m, java.lang.String prefix, java.util.BitSet bsValid)
pts
- nPts
- m
- prefix
- bsValid
- TODOprivate void outputFace1(int[] face, int[] map, int[] map2)
face
- map
- Map of data vertex indexes to output indexesmap2
- Map of data normal indexes to output indexesprivate void outputFace2(int[] face, int vt, int[] map, int[] map2)
face
- Array of vertices for the face.vt
- Number of the vt texture coordinate.map
- Map of data vertex indexes to output indexesmap2
- Map of data normal indexes to output indexes
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |