📄 compressedgeometrydata.java
字号:
// // Using TriangleArray output is currently the fastest, given the // strip sizes observed from various compressed geometry objects, but // produces about twice as many vertices. TriangleStripArray produces // the same number of Shape3D objects as TriangleArray using 1/2 // to 2/3 of the vertices, with only a marginal performance penalty. // return decompressor.toTriangleStripArrays(cgr); } /** * Retrieves the data access mode for this CompressedGeometryData object. * * @return <code>true</code> if the data access mode for this * CompressedGeometryData object is by-reference; * <code>false</code> if the data access mode is by-copying. */ public boolean isByReference() { return this.retained.isByReference(); } /** * Gets the compressed geometry data reference. * * @return the current compressed geometry data reference. * * @exception IllegalStateException if the data access mode for this * object is not by-reference. */ public byte[] getCompressedGeometryRef() { if (!isByReference()) { throw new IllegalStateException( J3dUtilsI18N.getString("CompressedGeometry8")); } return this.retained.getReference(); } /** * Gets the compressed geometry data buffer reference, which is * always null since NIO buffers are not supported for * CompressedGeometryData objects. * * @return null */ public J3DBuffer getCompressedGeometryBuffer() { return null; } /** * The Header class is a data container for the header information, * used in conjunction with a CompressedGeometryData object. * This information is used to aid the decompression of the compressed geometry. * * <p> * All instance data is declared public and no get or set methods are * provided. * * @since Java 3D 1.5 */ public static class Header extends Object { /** * bufferType: compressed geometry is made up of individual points. */ public static final int POINT_BUFFER = 0; /** * bufferType: compressed geometry is made up of line segments. */ public static final int LINE_BUFFER = 1; /** * bufferType: compressed geometry is made up of triangles. */ public static final int TRIANGLE_BUFFER = 2; // Valid values for the bufferDataPresent field. /** * bufferDataPresent: bit indicating that normal information is * bundled with the vertices in the compressed geometry buffer. */ public static final int NORMAL_IN_BUFFER = 1; /** * bufferDataPresent: bit indicating that RGB color information is * bundled with the vertices in the compressed geometry buffer. */ public static final int COLOR_IN_BUFFER = 2; /** * bufferDataPresent: bit indicating that alpha information is * bundled with the vertices in the compressed geometry buffer. */ public static final int ALPHA_IN_BUFFER = 4; /** * The major version number for the compressed geometry format that * was used to compress the geometry. * If the version number of compressed geometry is incompatible * with the supported version of compressed geometry in the * current version of Java 3D, the compressed geometry obejct will * not be rendered. * * @see Canvas3D#queryProperties */ public int majorVersionNumber; /** * The minor version number for the compressed geometry format that * was used to compress the geometry. * If the version number of compressed geometry is incompatible * with the supported version of compressed geometry in the * current version of Java 3D, the compressed geometry obejct will * not be rendered. * * @see Canvas3D#queryProperties */ public int minorVersionNumber; /** * The minor-minor version number for the compressed geometry format * that was used to compress the geometry. * If the version number of compressed geometry is incompatible * with the supported version of compressed geometry in the * current version of Java 3D, the compressed geometry obejct will * not be rendered. * * @see Canvas3D#queryProperties */ public int minorMinorVersionNumber; /** * Describes the type of data in the compressed geometry buffer. * Only one type may be present in any given compressed geometry * buffer. */ public int bufferType; /** * Contains bits indicating what data is bundled with the vertices in the * compressed geometry buffer. If this data is not present (e.g. color) * then this info will be inherited from the Appearance node. */ public int bufferDataPresent; /** * Size of the compressed geometry in bytes. */ public int size; /** * Offset in bytes of the start of the compressed geometry from the * beginning of the compressed geometry byte array passed to the * CompressedGeometryData constructor. <p> * * If the CompressedGeometryData is created with reference access semantics, * then this allow external compressors or file readers to embed several * blocks of compressed geometry in a single large byte array, possibly * interspersed with metadata that is not specific to Java 3D, without * having to copy each block to a separate byte array. <p> * * If the CompressedGeometryData is created with copy access semantics, then * <code>size</code> bytes of compressed geometry data are copied from the * offset indicated by <code>start</code> instead of copying the entire * byte array. The getCompressedGeometry() method will return only the * bytes used to construct the object, and the getCompressedGeometryHeader() * method will return a header with the <code>start</code> field set to 0. */ public int start; /** * A point that defines the lower bound of the <i>x</i>, * <i>y</i>, and <i>z</i> components for all positions in the * compressed geometry buffer. If null, a lower bound of * (-1,-1,-1) is assumed. Java 3D will use this information to * construct a bounding box around compressed geometry objects * that are used in nodes for which the auto compute bounds flag * is true. The default value for this point is null. */ public Point3d lowerBound = null; /** * A point that defines the upper bound of the <i>x</i>, * <i>y</i>, and <i>z</i> components for all positions in the * compressed geometry buffer. If null, an upper bound of (1,1,1) * is assumed. Java 3D will use this information to construct a * bounding box around compressed geometry objects that are used * in nodes for which the auto compute bounds flag is true. The * default value for this point is null. */ public Point3d upperBound = null; /** * Creates a new Header object used for the * creation of a CompressedGeometryData object. * All instance data is declared public and no get or set methods are * provided. All values are set to 0 by default and must be filled * in by the application. * * @see CompressedGeometryData */ public Header() { } /** * Package-scoped method to copy current Header object * to the passed-in Header object. * * @param hdr the Header object into which to copy the * current Header. */ void copy(Header hdr) { hdr.majorVersionNumber = this.majorVersionNumber; hdr.minorVersionNumber = this.minorVersionNumber; hdr.minorMinorVersionNumber = this.minorMinorVersionNumber; hdr.bufferType = this.bufferType; hdr.bufferDataPresent = this.bufferDataPresent; hdr.size = this.size; hdr.start = this.start; hdr.lowerBound = this.lowerBound; hdr.upperBound = this.upperBound; } /** * Returns a String describing the contents of the * Header object. * * @return a String describing contents of the compressed geometry header */ public String toString() { String type = "UNKNOWN"; switch (bufferType) { case POINT_BUFFER: type = "POINT_BUFFER"; break; case LINE_BUFFER: type = "LINE_BUFFER"; break; case TRIANGLE_BUFFER: type = "TRIANGLE_BUFFER"; break; } String data = ""; if ((bufferDataPresent & NORMAL_IN_BUFFER) != 0) data = data + "NORMALS "; if ((bufferDataPresent & COLOR_IN_BUFFER) != 0) data = data + "COLORS "; if ((bufferDataPresent & ALPHA_IN_BUFFER) != 0) data = data + "ALPHA "; String lbound = "null"; if (lowerBound != null) lbound = lowerBound.toString(); String ubound = "null"; if (upperBound != null) ubound = upperBound.toString(); return "majorVersionNumber: " + majorVersionNumber + " " + "minorVersionNumber: " + minorVersionNumber + " " + "minorMinorVersionNumber: " + minorMinorVersionNumber + "\n" + "bufferType: " + type + " " + "bufferDataPresent: " + data + "\n" + "size: " + size + " " + "start: " + start + "\n" + "lower bound: " + lbound + "\n" + "upper bound: " + ubound + " "; } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -