diff --git a/port/jAssimp/src/assimp/Animation.java b/port/jAssimp/src/assimp/Animation.java deleted file mode 100644 index b57182ebf..000000000 --- a/port/jAssimp/src/assimp/Animation.java +++ /dev/null @@ -1,134 +0,0 @@ -/* ---------------------------------------------------------------------------- -Open Asset Import Library (ASSIMP) ---------------------------------------------------------------------------- - -Copyright (c) 2006-2008, ASSIMP Development Team - -All rights reserved. - -Redistribution and use of this software in source and binary forms, -with or without modification, are permitted provided that the following -conditions are met: - -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. - -* Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the - following disclaimer in the documentation and/or other - materials provided with the distribution. - -* Neither the name of the ASSIMP team, nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior - written permission of the ASSIMP Development Team. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------------- -*/ - - -package assimp; - - -/** - * An animation consists of keyframe data for a number of bones. For each - * bone affected by the animation a separate series of data is given. - * - * @author Aramis (Alexander Gessler) - * @version 1.0 - */ -public class Animation { - - /** - * The name of the animation. - */ - private String name = ""; - - /** - * Duration of the animation in ticks. - */ - private double mDuration = 0.0; - - /** - * Ticks per second. 0 if not specified in the imported file - */ - private double mTicksPerSecond = 0.0; - - /** - * Bone animation channels - */ - private BoneAnim[] boneAnims = null; - - - /** - * Returns the name of the animation channel - * - * @return If the modelling package this data was exported from does support - * only a single animation channel, this name is usually "" - */ - public final String getName() { - return name; - } - - /** - * Returns the total duration of the animation, in ticks - * - * @return Total duration - */ - public final double getDuration() { - return mDuration; - } - - /** - * Returns the ticks per second count. - * - * @return 0 if not specified in the imported file - */ - public final double getTicksPerSecond() { - return mTicksPerSecond; - } - - - /** - * Returns the number of bone animation channels - * @return This value is never 0 - */ - public final int getNumBoneAnimChannels() { - assert(null != boneAnims); - return boneAnims.length; - } - - /** - * Returns the list of all bone animation channels - * @return This value is never null - */ - public final BoneAnim[] getBoneAnimChannels() { - assert(null != boneAnims); - return boneAnims; - } - - - /** - * Returns a specific bone animation channel - * @param i Index of the animation channel. Must be between - * 0 and the value returned by getNumBoneAnimChannels - * @return This value is never null - */ - public final BoneAnim getBoneAnimChannel(int i) { - assert(null != boneAnims && i < boneAnims.length); - return boneAnims[i]; - } -} diff --git a/port/jAssimp/src/assimp/Bone.java b/port/jAssimp/src/assimp/Bone.java deleted file mode 100644 index 00c66c208..000000000 --- a/port/jAssimp/src/assimp/Bone.java +++ /dev/null @@ -1,133 +0,0 @@ -/* ---------------------------------------------------------------------------- -Open Asset Import Library (ASSIMP) ---------------------------------------------------------------------------- - -Copyright (c) 2006-2008, ASSIMP Development Team - -All rights reserved. - -Redistribution and use of this software in source and binary forms, -with or without modification, are permitted provided that the following -conditions are met: - -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. - -* Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the - following disclaimer in the documentation and/or other - materials provided with the distribution. - -* Neither the name of the ASSIMP team, nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior - written permission of the ASSIMP Development Team. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------------- -*/ - - -package assimp; - - -/** - * A bone belongs to a mesh stores a list of vertex weights. - * It represents a joint of the skeleton. The bone hierarchy - * is contained in the node graph. - * - * @author Aramis (Alexander Gessler) - * @version 1.0 - */ -public class Bone { - - - /** - * Represents a single vertex weight - */ - public class Weight { - - - public Weight() { - index = 0; - weight = 1.0f; - } - - /** - * Index of the vertex in the corresponding Mesh - */ - public int index; - - - /** - * Weight of the vertex. All weights for a vertex sum up to - * 1.0 - */ - public float weight; - } - - /** - * Name of the bone - */ - private String name = ""; - - - /** - * List of vertex weights for the bone - */ - private Weight[] weights = null; - - - /** - * Retrieves the name of the node - * @return Normally bones are never unnamed - */ - public final String getName() { - return this.name; - } - - - /** - * Returns a reference to the array of weights - * @return Weight array - */ - public final Weight[] getWeightsArray() { - assert(null != weights); - return weights; - } - - - /** - * Returns the number of bone weights. - * @return There should at least be one vertex weights (the - * validation step would complain otherwise) - */ - public final int getNumWeights() { - assert(null != weights); - return weights.length; - } - - - /** - * Returns one specific vertex weights - * @param weight Index of the vertex weights. Must be between - * 0 and getNumWeights()-1 - * @return Vertex weight - */ - public final Weight getWeight(int weight) { - assert(null != weights && weight < this.weights.length); - return this.weights[weight]; - } -} diff --git a/port/jAssimp/src/assimp/BoneAnim.java b/port/jAssimp/src/assimp/BoneAnim.java deleted file mode 100644 index 5316c77a0..000000000 --- a/port/jAssimp/src/assimp/BoneAnim.java +++ /dev/null @@ -1,149 +0,0 @@ -/* ---------------------------------------------------------------------------- -Open Asset Import Library (ASSIMP) ---------------------------------------------------------------------------- - -Copyright (c) 2006-2008, ASSIMP Development Team - -All rights reserved. - -Redistribution and use of this software in source and binary forms, -with or without modification, are permitted provided that the following -conditions are met: - -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. - -* Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the - following disclaimer in the documentation and/or other - materials provided with the distribution. - -* Neither the name of the ASSIMP team, nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior - written permission of the ASSIMP Development Team. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------------- -*/ - - -package assimp; - - -/** - * A bone animation channel defines the animation keyframes for - * a single bone in the mesh hierarchy. - * - * @author Aramis (Alexander Gessler) - * @version 1.0 - */ -public class BoneAnim { - - /** - * Describes a keyframe - */ - public class KeyFrame { - - /** - * Time line position of *this* keyframe, in "ticks" - */ - public double time; - - /** - * Current value of the property being animated - */ - public Type value; - } - - /** - * Rotation keyframes - */ - private KeyFrame[] mQuatKeys = null; - - /** - * Position keyframes. Component order is x,y,z - */ - private KeyFrame[] mPosKeys = null; - - /** - * scaling keyframes. Component order is x,y,z - */ - private KeyFrame[] mScalingKeys = null; - - - /** - * Name of the bone affected by this animation channel - */ - private String mName; - - - /** - * Returns the name of the bone affected by this animation channel - * @return Bone name - */ - public final String getName() { - return mName; - } - - /** - * Returns the number of rotation keyframes - * @return This can be 0. - */ - public final int getNumQuatKeys() { - return null == mQuatKeys ? 0 : mQuatKeys.length; - } - - /** - * Returns the number of position keyframes - * @return This can be 0. - */ - public final int getNumPosKeys() { - return null == mPosKeys ? 0 : mPosKeys.length; - } - - /** - * Returns the number of scaling keyframes - * @return This can be 0. - */ - public final int getNumScalingKeys() { - return null == mScalingKeys ? 0 : mScalingKeys.length; - } - - /** - * Get a reference to the list of all rotation keyframes - * @return Could be null if there are no rotation keys - */ - public final KeyFrame[] getQuatKeys() { - return mQuatKeys; - } - - /** - * Get a reference to the list of all position keyframes - * @return Could be null if there are no position keys - */ - public final KeyFrame[] getPosKeys() { - return mPosKeys; - } - - /** - * Get a reference to the list of all scaling keyframes - * @return Could be null if there are no scaling keys - */ - public final KeyFrame[] getScalingKeys() { - return mScalingKeys; - } - -} diff --git a/port/jAssimp/src/assimp/Camera.java b/port/jAssimp/src/assimp/Camera.java deleted file mode 100644 index f6cd5717e..000000000 --- a/port/jAssimp/src/assimp/Camera.java +++ /dev/null @@ -1,182 +0,0 @@ -/* ---------------------------------------------------------------------------- -Open Asset Import Library (ASSIMP) ---------------------------------------------------------------------------- - -Copyright (c) 2006-2008, ASSIMP Development Team - -All rights reserved. - -Redistribution and use of this software in source and binary forms, -with or without modification, are permitted provided that the following -conditions are met: - -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. - -* Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the - following disclaimer in the documentation and/or other - materials provided with the distribution. - -* Neither the name of the ASSIMP team, nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior - written permission of the ASSIMP Development Team. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------------- -*/ - - -package assimp; - - -/** Describes a virtual camera in the scene - * - * Cameras have a representation in the node graph and can be animated - * - * @author Aramis (Alexander Gessler) - * @version 1.0 - */ -public class Camera -{ - /** The name of the camera. - */ - private String mName; - - /** Position of the camera - */ - private float[] mPosition; - - /** 'Up' - vector of the camera coordinate system - */ - private float[] mUp; - - /** 'LookAt' - vector of the camera coordinate system relative to - */ - private float[] mLookAt; - - /** Half horizontal field of view angle, in radians. - */ - private float mHorizontalFOV; - - /** Distance of the near clipping plane from the camera. - */ - private float mClipPlaneNear; - - /** Distance of the far clipping plane from the camera. - */ - private float mClipPlaneFar; - - /** Screen aspect ratio. - */ - private float mAspect; - - - /** Get the screen aspect ratio of the camera - * - * This is the ration between the width and the height of the - * screen. Typical values are 4/3, 1/2 or 1/1. This value is - * 0 if the aspect ratio is not defined in the source file. - * 0 is also the default value. - */ - public final float GetAspect() - { - return mAspect; - } - - /** Get the distance of the far clipping plane from the camera. - * - * The far clipping plane must, of course, be farer away than the - * near clipping plane. The default value is 1000.f. The radio - * between the near and the far plane should not be too - * large (between 1000-10000 should be ok) to avoid floating-point - * inaccuracies which could lead to z-fighting. - */ - public final float GetFarClipPlane() - { - return mClipPlaneFar; - } - - /** Get the distance of the near clipping plane from the camera. - * - * The value may not be 0.f (for arithmetic reasons to prevent - * a division through zero). The default value is 0.1f. - */ - public final float GetNearClipPlane() - { - return mClipPlaneNear; - } - - /** Half horizontal field of view angle, in radians. - * - * The field of view angle is the angle between the center - * line of the screen and the left or right border. - * The default value is 1/4PI. - */ - public final float GetHorizontalFOV() - { - return mHorizontalFOV; - } - - /** Returns the 'LookAt' - vector of the camera coordinate system - * relative to the coordinate space defined by the corresponding node. - * - * This is the viewing direction of the user. - * The default value is 0|0|1. The vector may be normalized, but it - * needn't. - * @return component order: x,y,z - */ - public final float[] GetLookAt() - { - return mLookAt; - } - - /** Get the 'Up' - vector of the camera coordinate system relative - * to the coordinate space defined by the corresponding node. - * - * The 'right' vector of the camera coordinate system is - * the cross product of the up and lookAt vectors. - * The default value is 0|1|0. The vector - * may be normalized, but it needn't. - * @return component order: x,y,z - */ - public final float[] GetUp() - { - return mUp; - } - - /** Get the position of the camera relative to the coordinate space - * defined by the corresponding node. - * - * The default value is 0|0|0. - * @return component order: x,y,z - */ - public final float[] GetPosition() - { - return mPosition; - } - - /** Returns the name of the camera. - * - * There must be a node in the scenegraph with the same name. - * This node specifies the position of the camera in the scene - * hierarchy and can be animated. - */ - public final String GetName() - { - return mName; - } -}; \ No newline at end of file diff --git a/port/jAssimp/src/assimp/Component.java b/port/jAssimp/src/assimp/Component.java deleted file mode 100644 index 2bd17b9e4..000000000 --- a/port/jAssimp/src/assimp/Component.java +++ /dev/null @@ -1,125 +0,0 @@ -/* ---------------------------------------------------------------------------- -Open Asset Import Library (ASSIMP) ---------------------------------------------------------------------------- - -Copyright (c) 2006-2008, ASSIMP Development Team - -All rights reserved. - -Redistribution and use of this software in source and binary forms, -with or without modification, are permitted provided that the following -conditions are met: - -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. - -* Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the - following disclaimer in the documentation and/or other - materials provided with the distribution. - -* Neither the name of the ASSIMP team, nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior - written permission of the ASSIMP Development Team. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------------- -*/ - -package assimp; - -// --------------------------------------------------------------------------- -/** Enumerates components of the Scene and Mesh - * classes that can be excluded from the import with the RemoveComponent step. - * - * See the documentation for the postprocessing step for more details. - * @author Aramis (Alexander Gessler) - * @version 1.0 - */ -public class Component -{ - /** Normal vectors are removed from all meshes - */ - public static final int NORMALS = 0x2; - - /** Tangents an bitangents are removed from all meshes - * - * Tangents and bitangents below together in every case. - */ - public static final int TANGENTS_AND_BITANGENTS = 0x4; - - /** All vertex color sets are removed - * - * Use COLORn(N) to specifiy the N'th set - */ - public static final int COLORS = 0x8; - - /** All texture UV sets are removed - * - * Use TEXCOORDn(N) to specifiy the N'th set - */ - public static final int TEXCOORDS = 0x10; - - /** Removes all bone weights from all meshes. - * - * The scenegraph nodes corresponding to the - * bones are removed - */ - public static final int BONEWEIGHTS = 0x20; - - /** Removes all bone animations - */ - public static final int ANIMATIONS = 0x40; - - /** Removes all embedded textures - */ - public static final int TEXTURES = 0x80; - - /** Removes all light sources - * - * The scenegraph nodes corresponding to the - * light sources are removed. - */ - public static final int LIGHTS = 0x100; - - /** Removes all light sources - * - * The scenegraph nodes corresponding to the - * cameras are removed. - */ - public static final int CAMERAS = 0x200; - - /** Removes all meshes (aiScene::mMeshes). - */ - public static final int MESHES = 0x400; - - /** Removes all materials. One default material will - * be generated, so aiScene::mNumMaterials will be 1. - * This makes no real sense without the TEXTURES flag. - * */ - public static final int MATERIALS = 0x800; - - - public static final int COLORSn(int n) - { - return (1 << (n + 20)); - } - - public static final int TEXCOORDSn(int n) - { - return (1 << (n + 25)); - } -}; diff --git a/port/jAssimp/src/assimp/CompressedTexture.java b/port/jAssimp/src/assimp/CompressedTexture.java deleted file mode 100644 index d29f2984d..000000000 --- a/port/jAssimp/src/assimp/CompressedTexture.java +++ /dev/null @@ -1,184 +0,0 @@ -/* ---------------------------------------------------------------------------- -Open Asset Import Library (ASSIMP) ---------------------------------------------------------------------------- - -Copyright (c) 2006-2008, ASSIMP Development Team - -All rights reserved. - -Redistribution and use of this software in source and binary forms, -with or without modification, are permitted provided that the following -conditions are met: - -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. - -* Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the - following disclaimer in the documentation and/or other - materials provided with the distribution. - -* Neither the name of the ASSIMP team, nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior - written permission of the ASSIMP Development Team. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------------- -*/ - - -package assimp; - -import javax.imageio.ImageIO; -import javax.imageio.stream.ImageInputStream; -import java.awt.*; -import java.awt.image.BufferedImage; -import java.io.IOException; -import java.io.ByteArrayInputStream; - -/** - * Represents an embedded compressed texture that is stored in a format - * like JPEG or PNG. See the documentation of Texture - * for more details on this class. Use instanceof to - * determine whether a particular Texture in the list - * returned by Scene.getTextures() is a compressed texture. - *

- * - * @author Aramis (Alexander Gessler) - * @version 1.0 - */ -public class CompressedTexture extends Texture { - - private String m_format = ""; - - /** - * Retrieves the format of the texture data. This is - * the most common file extension of the format (without a - * dot at the beginning). Examples include dds, png, jpg ... - * - * @return Extension string or null if the format of the texture - * data is not known to ASSIMP. - */ - public final String getFormat() { - return m_format; - } - - /** - * Get a pointer to the data of the compressed texture - * - * @return Data poiner - */ - public final byte[] getData() { - return (byte[]) data; - } - - /** - * Get the length of the data of the compressed texture - * - * @return Data poiner - */ - public final int getLength() { - return width; - } - - /** - * Returns 0 for compressed textures - * - * @return n/a - */ - @Override - public final int getHeight() { - return 0; - } - - /** - * Returns 0 for compressed textures - * - * @return n/a - */ - @Override - public final int getWidth() { - return 0; - } - - /** - * Returns null for compressed textures - * - * @return n/a - */ - @Override - public Color getPixel(int x, int y) { - return null; - } - - /** - * Returns null for compressed textures - * - * @return n/a - */ - @Override - public final Color[] getColorArray() { - return null; - } - - - /** - * @return The return value is true of the - * file format can't be recognized. - * @see Texture.hasAlphaChannel() - */ - public boolean hasAlphaChannel() { - - // try to determine it from the file format sequence - if (m_format.equals("bmp") || m_format.equals("dib")) return false; - if (m_format.equals("tif") || m_format.equals("tiff")) return false; - if (m_format.equals("jpg") || m_format.equals("jpeg")) return false; - - // todo: add more - - return true; - } - - - /** - * Convert the texture into a java.awt.BufferedImage - * - * @return java.awt.BufferedImage object containing - * a copy of the texture image. The return value is null - * if the file format is not known. - */ - public BufferedImage convertToImage() { - - BufferedImage img = null; - try { - - // create an input stream and attach it to an image input stream - ImageInputStream stream = ImageIO.createImageInputStream( - new ByteArrayInputStream((byte[])data)); - - // and use the stream to decode the file - img = ImageIO.read(stream); - - } catch (IOException e) { - - DefaultLogger.get().error("Unable to decode compressed embedded texture +" + - "(Format hint: " + m_format + ")" ); - - } - // return the created image to the caller - return img; - } -} diff --git a/port/jAssimp/src/assimp/ConfigProperty.java b/port/jAssimp/src/assimp/ConfigProperty.java deleted file mode 100644 index 7c7f005dd..000000000 --- a/port/jAssimp/src/assimp/ConfigProperty.java +++ /dev/null @@ -1,204 +0,0 @@ -/* ---------------------------------------------------------------------------- -Open Asset Import Library (ASSIMP) ---------------------------------------------------------------------------- - -Copyright (c) 2006-2008, ASSIMP Development Team - -All rights reserved. - -Redistribution and use of this software in source and binary forms, -with or without modification, are permitted provided that the following -conditions are met: - -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. - -* Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the - following disclaimer in the documentation and/or other - materials provided with the distribution. - -* Neither the name of the ASSIMP team, nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior - written permission of the ASSIMP Development Team. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------------- -*/ - -package assimp; - - -/** - * Defines configuration properties. - *

- * Static helper class, can't be instanced. It defines configuration - * property keys to be used with Importer.setPropertyInt - * - * @author Aramis (Alexander Gessler) - * @version 1.0 - */ -public class ConfigProperty { - - private ConfigProperty() { - } - - - /** - * Default value for the CONFIG_PP_SLM_TRIANGLE_LIMIT - * configuration property. - */ - public static final int DEFAULT_SLM_MAX_TRIANGLES = 1000000; - - - /** - * Default value for the CONFIG_PP_SLM_VERTEX_LIMIT - * configuration property. - */ - public static final int DEFAULT_SLM_MAX_VERTICES = 1000000; - - - /** - * Default value for the CONFIG_PP_LBW_MAX_WEIGHTS - * configuration property. - */ - public static final int DEFAULT_LBW_MAX_WEIGHTS = 4; - - - /** - * Set the maximum number of vertices in a mesh. - *

- * This is used by the "SplitLargeMeshes" PostProcess-Step to determine - * whether a mesh must be splitted or not. - * note: The default value is DEFAULT_SLM_MAX_TRIANGLES. - * The type of the property is int. - */ - public static final String CONFIG_PP_SLM_TRIANGLE_LIMIT - = "pp.slm.triangle_limit"; - - - /** - * Set the maximum number of triangles in a mesh. - *

- * This is used by the "SplitLargeMeshes" PostProcess-Step to determine - * whether a mesh must be splitted or not. - * note: The default value is DEFAULT_SLM_MAX_VERTICES. - * The type of the property is int. - */ - public static final String CONFIG_PP_SLM_VERTEX_LIMIT - = "pp.slm.vertex_limit"; - - - /** - * Set the maximum number of bones affecting a single vertex - *

- * This is used by the aiProcess_LimitBoneWeights PostProcess-Step. - * note :The default value is DEFAULT_LBW_MAX_WEIGHTS. - * The type of the property is int. - */ - public static final String CONFIG_PP_LBW_MAX_WEIGHTS - = "pp.lbw.weights_limit"; - - - /** - * Set the vertex animation keyframe to be imported - *

- * ASSIMP does not support vertex keyframes (only bone animation is - * supported). The library reads only one frame of models with vertex - * animations. By default this is the first frame. - * \note The default value is 0. This option applies to all importers. - * However, it is also possible to override the global setting - * for a specific loader. You can use the - * CONFIG_IMPORT_XXX_KEYFRAME options (where XXX is a - * placeholder for the file format for which you want to override the - * global setting). - * The type of the property is int. - */ - public static final String CONFIG_IMPORT_GLOBAL_KEYFRAME - = "imp.global.kf"; - - public static final String CONFIG_IMPORT_MD3_KEYFRAME = "imp.md3.kf"; - public static final String CONFIG_IMPORT_MD2_KEYFRAME = "imp.md2.kf"; - public static final String CONFIG_IMPORT_MDL_KEYFRAME = "imp.mdl.kf"; - public static final String CONFIG_IMPORT_MDC_KEYFRAME = "imp.mdc.kf"; - public static final String CONFIG_IMPORT_MDR_KEYFRAME = "imp.mdr.kf"; - public static final String CONFIG_IMPORT_SMD_KEYFRAME = "imp.smd.kf"; - - - /** - * Causes the 3DS loader to ignore pivot points in the file - *

- * There are some faulty 3DS files on the internet which look - * only correctly with pivot points disabled. By default, - * this option is disabled. - * note: This is a boolean property stored as an integer, 0 is false - */ - public static final String CONFIG_IMPORT_3DS_IGNORE_PIVOT - = "imp.3ds.nopivot"; - - - /** - * Specifies the maximum angle that may be between two vertex tangents - * that their tangents and bitangents are smoothed. - *

- * This applies to the CalcTangentSpace-Step. The angle is specified - * in degrees, so 180 is PI. The default value is - * 45 degrees. The maximum value is 180.f - * The type of the property is float. - */ - public static final String AI_CONFIG_PP_CT_MAX_SMOOTHING_ANGLE - = "pp.ct.max_smoothing"; - - - /** - * Specifies the maximum angle that may be between two face normals - * at the same vertex position that their are smoothed. - *

- * This applies to the GenSmoothNormals-Step. The angle is specified - * in degrees * 1000, so 180.f is PI. The default value is - * 180 degrees (all vertex normals are smoothed). The maximum value is 180.f - * The type of the property is float. - */ - public static final String AI_CONFIG_PP_GSN_MAX_SMOOTHING_ANGLE - = "pp.gsn.max_smoothing"; - - - /** Input parameter to the #aiProcess_RemoveComponent step: - * Specifies the parts of the data structure to be removed. - * - * See the documentation to this step for further details. The property - * is expected to be an integer, a bitwise combination of the - * flags defined in the Component class. The default - * value is 0. Important: if no valid mesh is remaining after the - * step has been executed (e.g you thought it was funny to specify ALL - * of the flags defined above) the import FAILS. Mainly because there is - * no data to work on anymore ... - */ - public static final String AI_CONFIG_PP_RVC_FLAGS - = "pp.rvc.flags"; - - - /** Causes assimp to favour speed against import quality. - * - * Enabling this option may result in faster loading, but it needn't. - * It represents just a hint to loaders and post-processing steps to use - * faster code paths, if possible. - * This property is expected to be an integer, != 0 stands for true. - * The default value is 0. - */ - public static final String AI_CONFIG_FAVOUR_SPEED - = "imp.speed_flag"; -}; diff --git a/port/jAssimp/src/assimp/DefaultLogger.java b/port/jAssimp/src/assimp/DefaultLogger.java deleted file mode 100644 index 1d2ab08d9..000000000 --- a/port/jAssimp/src/assimp/DefaultLogger.java +++ /dev/null @@ -1,406 +0,0 @@ -/* ---------------------------------------------------------------------------- -Open Asset Import Library (ASSIMP) ---------------------------------------------------------------------------- - -Copyright (c) 2006-2008, ASSIMP Development Team - -All rights reserved. - -Redistribution and use of this software in source and binary forms, -with or without modification, are permitted provided that the following -conditions are met: - -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. - -* Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the - following disclaimer in the documentation and/or other - materials provided with the distribution. - -* Neither the name of the ASSIMP team, nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior - written permission of the ASSIMP Development Team. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------------- -*/ - - -package assimp; - -import java.util.Vector; -import java.io.FileWriter; -import java.io.IOException; -import java.io.OutputStream; - -/** - * Default implementation of a logger. When writing to the log, - * jASSIMP uses the Logger instance returned by - * DefaultLogger.get() - * - * @author Aramis (Alexander Gessler) - * @version 1.0 - */ -public class DefaultLogger implements Logger { - - - /** - * Helper class to combine a logstream with an error severity - */ - private static class LogStreamInfo { - public LogStream stream; - public int severity; - - public LogStreamInfo(LogStream stream, int severity) { - this.stream = stream; - this.severity = severity; - } - } - - /** - * NULL logger class. Does nothing ... - */ - private static class NullLogger implements Logger { - - - public void debug(String message) { - } // nothing to do here ... - - - public void error(String message) { - } // nothing to do here ... - - - public void warn(String message) { - } // nothing to do here ... - - - public void info(String message) { - } // nothing to do here ... - - - public void attachStream(LogStream stream, int severity) { - } // nothing to do here ... - - - public void detachStream(LogStream stream, int severity) { - } // nothing to do here ... - } - - - /** - * Implementation of LogStream that can be used to use a - * java.io.OutputStream object directly as log stream. - */ - public static class StreamWrapper implements LogStream { - - private OutputStream stream; - - /** - * Construction from an existing java.io.OutputStream object - * - * @param stream May not be null - */ - public StreamWrapper(OutputStream stream) { - assert(null != stream); - this.stream = stream; - } - - public void write(String message) { - try { - stream.write(message.getBytes(), 0, message.length()); - } catch (IOException e) { - // .... should't care - } - } - - public OutputStream getStream() { - return stream; - } - } - - /** - * Implementation of LogStream that can be used to use a - * java.io.FileWriter object directly as log stream. - */ - public static class FileStreamWrapper implements LogStream { - - private FileWriter stream; - - /** - * Construction from an existing java.io.FileWriter object - * - * @param stream May not be null - */ - public FileStreamWrapper(FileWriter stream) { - assert(null != stream); - this.stream = stream; - } - - public void write(String message) { - try { - stream.write(message); - } catch (IOException e) { - // .... should't care - } - } - - public FileWriter getStream() { - return stream; - } - } - - - /** - * Normal granlality of logging - */ - public static final int LOGSEVERITY_NORMAL = 0x0; - - /** - * Debug infos will be logged, too - */ - public static final int LOGSEVERITY_VERBOSE = 0x1; - - /** - * Default logger. It does nothing and is used if the - * application hasn't allocated a default logger - */ - private static NullLogger s_nullLogger = new NullLogger(); - - /** - * The logger that is used by ASSIMP for logging - */ - private static Logger s_logger = s_nullLogger; - - /** - * List of logstreams to output to - */ - private Vector m_avStreams; - - /** - * One of the LOGSEVERITY_XXX constants. - */ - private int m_iLogSeverity = LOGSEVERITY_NORMAL; - - - private DefaultLogger() { - } - - - /** - * Create the default logger - * - * @param file Output log file. If != null this will - * automatically add a file log stream to the logger - * @param bErrOut If this is true an additional logstream which - * outputs all log messages via System.err.println() - * will be added to the logger. - */ - public static void create(String file, boolean bErrOut) throws IOException { - - s_logger = new DefaultLogger(); - - if (null != file) { - FileWriter stream = new FileWriter(file); - s_logger.attachStream(new FileStreamWrapper(stream), 0); - } - if (bErrOut) { - s_logger.attachStream(new StreamWrapper(System.err), 0); - } - } - - /** - * Create the default logger, no default log streams will be - * attached to it. - */ - public static void create() throws IOException { - create(null, false); - } - - /** - * Supply your own implementation of Logger to the - * logging system. Use this if you want to override the default - * formatting behaviour of DefaultLogger. You can - * access your logger as normal, via get(). - * - * @param logger - */ - public static void set(Logger logger) { - s_logger = logger; - } - - /** - * Kill the logger ... a null logger will be used instead - */ - public static void kill() { - s_logger = s_nullLogger; - } - - /** - * Get access to the Singleton instance of the logger. This will - * never be null. If no logger has been explicitly created via - * create() this is a NULLLogger instance. - * Use isNullLogger() to check whether the returned logger - * is a null logger. - * - * @return Never null ... - */ - public static Logger get() { - return s_logger; - } - - - /** - * Check whether the current logger is a null logger, which - * doesn't log anything. Use create() or set() - * to setup another logger. - * - * @return true if the curent logger is a null logger (true by default) - */ - public static boolean isNullLogger() { - return (s_logger instanceof NullLogger); - } - - - /** - * Write a debug message to the log - * - * @param message Message to be logged - */ - public void debug(String message) { - this.writeToStreams("Debug:" + message + "\n", ERRORSEVERITY_DEBUGGING); - } - - /** - * Write an error message to the log - * - * @param message Message to be logged - */ - public void error(String message) { - this.writeToStreams("Debug:" + message + "\n", ERRORSEVERITY_ERR); - } - - /** - * Write a warn message to the log - * - * @param message Message to be logged - */ - public void warn(String message) { - this.writeToStreams("Debug:" + message + "\n", ERRORSEVERITY_WARN); - } - - /** - * Write an info message to the log - * - * @param message Message to be logged - */ - public void info(String message) { - this.writeToStreams("Debug:" + message + "\n", ERRORSEVERITY_INFO); - } - - /** - * Attach a logstream to the logger - * - * @param stream Log stream instance - * @param severity Error severity. Bitwise combination of the - * ERRORSEVERITY_XXX constants. Specify 0 to attach the - * stream to all types of log messages. - */ - public void attachStream(LogStream stream, int severity) { - - if (0 == severity) { - severity = ERRORSEVERITY_DEBUGGING | ERRORSEVERITY_WARN | - ERRORSEVERITY_ERR | ERRORSEVERITY_INFO; - } - - for (LogStreamInfo info : this.m_avStreams) { - - if (info.stream != stream) continue; - info.severity |= severity; - severity = 0xcdcdcdcd; - } - if (0xcdcdcdcd != severity) - this.m_avStreams.add(new LogStreamInfo(stream, severity)); - } - - /** - * Detach a logstream from the logger - * - * @param stream Log stream instance - * @param severity Error severities to detach the stream from. - * Bitwise combination of the ERRORSEVERITY_XXX constants. - * Specify 0 to detach the stream from all types of log messages. - */ - public void detachStream(LogStream stream, int severity) { - - if (0 == severity) { - severity = ERRORSEVERITY_DEBUGGING | ERRORSEVERITY_WARN | - ERRORSEVERITY_ERR | ERRORSEVERITY_INFO; - } - - for (LogStreamInfo info : this.m_avStreams) { - - if (info.stream != stream) continue; - - if (0 != (severity & ERRORSEVERITY_DEBUGGING)) { - info.severity &= (~ERRORSEVERITY_DEBUGGING); - } - if (0 != (severity & ERRORSEVERITY_ERR)) { - info.severity &= (~ERRORSEVERITY_ERR); - } - if (0 != (severity & ERRORSEVERITY_INFO)) { - info.severity &= (~ERRORSEVERITY_INFO); - } - if (0 != (severity & ERRORSEVERITY_WARN)) { - info.severity &= (~ERRORSEVERITY_WARN); - } - if (0 == info.severity) { - this.m_avStreams.remove(info); - } - break; - } - } - - private void writeToStreams(String message, int severity) { - - for (LogStreamInfo info : this.m_avStreams) { - - if (0 == (info.severity & severity)) continue; - - info.stream.write(message); - } - } - - // Helpers to make the access to the logging system easier - // for native code - public static void _NativeCallWriteError(String message) { - DefaultLogger.get().error(message); - } - - public static void _NativeCallWriteWarn(String message) { - DefaultLogger.get().warn(message); - } - - public static void _NativeCallWriteInfo(String message) { - DefaultLogger.get().info(message); - } - - public static void _NativeCallWriteDebug(String message) { - DefaultLogger.get().debug(message); - } - -} diff --git a/port/jAssimp/src/assimp/IOStream.java b/port/jAssimp/src/assimp/IOStream.java deleted file mode 100644 index f5963153c..000000000 --- a/port/jAssimp/src/assimp/IOStream.java +++ /dev/null @@ -1,14 +0,0 @@ -package assimp; - -/** - * Created by IntelliJ IDEA. - * User: Alex - * Date: 15.06.2008 - * Time: 19:51:45 - * To change this template use File | Settings | File Templates. - */ -public interface IOStream { - - - -} diff --git a/port/jAssimp/src/assimp/IOSystem.java b/port/jAssimp/src/assimp/IOSystem.java deleted file mode 100644 index d602d2561..000000000 --- a/port/jAssimp/src/assimp/IOSystem.java +++ /dev/null @@ -1,72 +0,0 @@ -/* ---------------------------------------------------------------------------- -Open Asset Import Library (ASSIMP) ---------------------------------------------------------------------------- - -Copyright (c) 2006-2008, ASSIMP Development Team - -All rights reserved. - -Redistribution and use of this software in source and binary forms, -with or without modification, are permitted provided that the following -conditions are met: - -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. - -* Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the - following disclaimer in the documentation and/or other - materials provided with the distribution. - -* Neither the name of the ASSIMP team, nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior - written permission of the ASSIMP Development Team. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------------- -*/ - - -package assimp; - -import java.io.FileNotFoundException; - - -/** - * - */ -public interface IOSystem { - - /** - * Called to check whether a file is existing - * - * @param file Filename - * @return true if the file is existing and accessible - */ - boolean Exists(String file); - - - /** - * Open a file and return an IOStream interface - * to access it. - * - * @param file File name of the file to be opened - * @return A valid IOStream interface - * @throws FileNotFoundException if the file can't be accessed - */ - IOStream Open(String file) throws FileNotFoundException; - -} diff --git a/port/jAssimp/src/assimp/Importer.java b/port/jAssimp/src/assimp/Importer.java deleted file mode 100644 index dafcd4823..000000000 --- a/port/jAssimp/src/assimp/Importer.java +++ /dev/null @@ -1,631 +0,0 @@ -/* ---------------------------------------------------------------------------- -Open Asset Import Library (ASSIMP) ---------------------------------------------------------------------------- - -Copyright (c) 2006-2008, ASSIMP Development Team - -All rights reserved. - -Redistribution and use of this software in source and binary forms, -with or without modification, are permitted provided that the following -conditions are met: - -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. - -* Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the - following disclaimer in the documentation and/or other - materials provided with the distribution. - -* Neither the name of the ASSIMP team, nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior - written permission of the ASSIMP Development Team. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------------- -*/ - - -package assimp; - -import java.util.Vector; -import java.io.FileNotFoundException; -import java.io.FileReader; -import java.io.File; - -/** - * Main class of jAssimp. The class is a simple wrapper for the native - * Assimp::Importer and aiScene classes. - * If multiple threads are used to load assets, each thread should manage its - * own instance of this class to avoid threading issues. The class requires - * the native jAssimp library to work. It must be named "jassimpNN.EXT", where - * NN is the platform's default int size, e.g. 32 for the x86 architecture. - * EXT is the default extension for program libraries on the system, .DLL for - * Windows, .SO for Linux derivates. - * - * @author Aramis (Alexander Gessler) - * @version 1.0 - */ -public class Importer { - - - /** - * Represents a property (key-value) - */ - private class Property { - String key; - Type value; - } - - - /** - * Represents a property list - */ - private class PropertyList extends Vector> { - - public void setProperty(final String prop, final Type val) { - - for (Property i : this) { - if (i.key.equals(prop)) { - i.value = val; - return; - } - } - - Property propNew = new Property(); - propNew.key = prop; - propNew.value = val; - this.add(propNew); - } - - public Type getProperty(final String prop) { - - for (Property i : this) { - if (i.key.equals(prop)) { - return i.value; - } - } - return null; - } - } - - /** - * Default implementation of IOStream. - *
- * This might become a performance bottleneck: The application - * needs to map the data read by this interface into a C-style - * array. For every single read operation! Therefore it is a good - * optimization to use the default C IOStream handler if no custom - * java handler was specified. Assuming that the Java Runtime is using - * the fXXX-family of functions internally too, the result should be - * the same. The problem is: we can't be sure we'll be able to open - * the file for reading from both Java and native code. Therefore we - * need to close our Java FileReader handle before - * control is given to native code. - */ - private class DefaultIOStream implements IOStream { - - private FileReader reader = null; - - /** - * Construction with a given path - * - * @param file Path to the file to be opened - * @throws FileNotFoundException If the file isn't accessible at all - */ - public DefaultIOStream(final String file) throws FileNotFoundException { - reader = new FileReader(file); - } - - } - - /** - * Default implementation of IOSystem. - */ - private class DefaultIOSystem implements IOSystem { - - /** - * Called to check whether a file is existing - * - * @param file Filename - * @return true if the file is existing and accessible - */ - public boolean Exists(String file) { - File f = new File(file); - return f.exists(); - } - - /** - * Open a file and return an IOStream interface - * to access it. - * - * @param file File name of the file to be opened - * @return A valid IOStream interface - * @throws FileNotFoundException if the file can't be accessed - */ - public IOStream Open(String file) throws FileNotFoundException { - return new DefaultIOStream(file); - } - } - - - /** - * List of all postprocess steps to apply to the model - * Empty by default. - */ - private Vector m_vPPSteps = new Vector(); - - /** - * Unique number representing the address of the internal - * Assimp::Importer object. For 64 bit platforms it is something else .. - * at least it is guaranted to be unique ;-) - */ - private long m_iNativeHandle = 0xffffffffffffffffl; - - /** - * Loaded scene. It can't be used after the Importer class instance - * has been finalized! - */ - private Scene scene = null; - - /** - * Path to the scene loaded - */ - private String path = null; - - /** - * I/O system to be used - */ - private IOSystem ioSystem = new DefaultIOSystem(); - - /** - * List of config properties for all supported types: int, float and string - */ - private PropertyList properties = new PropertyList(); - private PropertyList propertiesFloat = new PropertyList(); - private PropertyList propertiesString = new PropertyList(); - - - /** - * Specifies whether the native jAssimp library is currently - * in a loaded state. - */ - private static boolean bLibInitialized = false; - - - private static final String JASSIMP_RUNTIME_NAME_X64 = "jAssimp64"; - private static final String JASSIMP_RUNTIME_NAME_X86 = "jAssimp32"; - - public static final int PROPERTY_WAS_NOT_EXISTING = 0xffffffff; - - /** - * Public constructor. Initialises the JNI bridge to the native - * ASSIMP library. A native Assimp::Importer object is constructed and - * initialized. The flag list is set to zero, a default I/O handler - * is initialized. - * - * @param iVersion Version of the JNI interface to be used. - * @throws NativeException Thrown if the jassimp library could not be loaded - * or if the entry point to the module wasn't found. if this exception - * is not thrown you can assume that jAssimp is fully available. - */ - public Importer(int iVersion) throws NativeException { - - if (!bLibInitialized) { - - /** try to load the jassimp library. First try to load the - * x64 version, in case of failure the x86 version - */ - try { - System.loadLibrary(JASSIMP_RUNTIME_NAME_X64); - } - catch (UnsatisfiedLinkError exc) { - try { - System.loadLibrary(JASSIMP_RUNTIME_NAME_X86); - } - catch (UnsatisfiedLinkError exc2) { - throw new NativeException("Unable to load the jAssimp library"); - } - } - bLibInitialized = true; - } - // now create the native Importer class and setup our internal - // data structures outside the VM. - try { - if (0xffffffffffffffffl == (this.m_iNativeHandle = _NativeInitContext(iVersion))) { - throw new NativeException( - "Unable to initialize the native library context." + - "The initialization routine has failed"); - } - } - catch (UnsatisfiedLinkError exc) { - throw new NativeException( - "Unable to initialize the native library context." + - "The initialization routine has not been found"); - } - } - - public Importer() throws NativeException { - this(0); - } - - /** - * Get the I/O system (IOSystem) to be used for loading - * assets. If no custom implementation was provided via setIoSystem() - * a default implementation will be used. Use isDefaultIoSystem() - * to check this. - * - * @return Always a valid IOSystem object, never null. - */ - public final IOSystem getIoSystem() { - return ioSystem; - } - - - /** - * Checks whether a default IO system is currently being used to load - * assets. Using the default IO system has many performance benefits, - * but it is possible to provide a custom IO system (setIoSystem()). - * This allows applications to add support for archives like ZIP. - * - * @return true if a default IOSystem is active, - */ - public final boolean isDefaultIoSystem() { - return ioSystem instanceof DefaultIOSystem; - } - - /** - * Add a postprocess step to the list of steps to be executed on - * the model. Postprocess steps are applied to the model after it - * has been loaded. They are implemented in C/C++, this is only a wrapper. - * - * @param p_Step Postprocess step to be added - * @return true if the step has been added successfully - * @see PostProcessStep - */ - public final boolean addPostProcessStep(PostProcessStep p_Step) { - - if (isPostProcessStepActive(p_Step)) return false; - this.m_vPPSteps.add(p_Step); - return true; - } - - - /** - * Check whether a given postprocess step is existing in the list - * of all steps to be executed on the model. Postprocess steps are - * applied to the model after it has been loaded. They are implemented - * in C/C++, this is only a wrapper. - * - * @param p_Step Postprocess step to be queried - * @return true if the step is active - * @see PostProcessStep - */ - public final boolean isPostProcessStepActive(PostProcessStep p_Step) { - - for (PostProcessStep step : m_vPPSteps) { - if (step.equals(p_Step)) return true; - } - return false; - } - - - /** - * Remove a postprocess step from the list of steps to be executed - * on the model. Postprocess steps are applied to the model after it - * has been loaded. They are implemented in C/C++, this is only a wrapper. - * - * @param p_Step Postprocess step to be removed - * @return true if the step has been removed successfully, false if - * it was not existing - * @see PostProcessStep - */ - public final boolean removePostProcessStep(PostProcessStep p_Step) { - - return this.m_vPPSteps.remove(p_Step); - } - - - /** - * Load a model from a file using the current list of postprocess steps - * and the current I/O handler. If no custom I/O handler was provided, - * a default implementation is used. This implementation uses fopen()/ - * fread()/fwrite()/fclose()/ftell()/fseek() and provides no support - * for archives like ZIP or PAK. - * - * @param path Path to the file to be read - * @return null if the import failed, otherwise a valid Scene instance - * @throws NativeException This exception is thrown when an unknown error - * occurs in the JNI bridge module. - */ - public final Scene readFile(String path) throws NativeException { - this.scene = new Scene(this); - this.path = path; - - // we need to build a path that is valid for the current OS - char sep = System.getProperty("file.separator").charAt(0); - if (sep != '\\') this.path = this.path.replace('\\', sep); - if (sep != '/') this.path = this.path.replace('/', sep); - - // need to build a list of postprocess step as bitflag combination - // Of course, this could have been implemented directly. However, - // I've used the PostProcessStep enumeration to make debugging easier. - int flags = 0x8; // always apply the triangulation step - - for (PostProcessStep step : m_vPPSteps) { - if (step.equals(PostProcessStep.CalcTangentSpace)) flags |= 0x1; - else if (step.equals(PostProcessStep.JoinIdenticalVertices)) flags |= 0x2; - else if (step.equals(PostProcessStep.ConvertToLeftHanded)) flags |= 0x4; - else if (step.equals(PostProcessStep.KillNormals)) flags |= 0x10; - else if (step.equals(PostProcessStep.GenFaceNormals)) flags |= 0x20; - else if (step.equals(PostProcessStep.GenSmoothNormals)) flags |= 0x40; - else if (step.equals(PostProcessStep.SplitLargeMeshes)) flags |= 0x80; - else if (step.equals(PostProcessStep.PreTransformVertices)) flags |= 0x100; - else if (step.equals(PostProcessStep.LimitBoneWeights)) flags |= 0x200; - else if (step.equals(PostProcessStep.ValidateDataStructure)) flags |= 0x400; - else if (step.equals(PostProcessStep.ImproveVertexLocality)) flags |= 0x800; - else if (step.equals(PostProcessStep.RemoveRedundantMaterials)) flags |= 0x1000; - else if (step.equals(PostProcessStep.FixInfacingNormals)) flags |= 0x2000; - else if (step.equals(PostProcessStep.OptimizeGraph)) flags |= 0x4000; - } - - // now load the mesh - if (0xffffffff == this._NativeLoad(this.path, flags, this.m_iNativeHandle)) { - this.scene = null; - this.path = null; - throw new NativeException("Failed to load the mesh"); - } - if (null == this.scene) { - throw new NativeException("Failed to copy the data to Java"); - } - return this.scene; - } - - - /** - * Get the current scene or null if none is loaded - * @return Hello Amanda, I want to play a game ... - */ - public final Scene getScene() { - return scene; - } - - - /** - * Get the source path of the current scene or null if none is loaded - * @return Game Over. - */ - public final String getScenePath() { - return path; - } - - - /** - * Implementation of java.lang.Object.equals() - * - * @param o Object to be compred with *this* - * @return true if *this* is equal to o - */ - public final boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - final Importer importer = (Importer) o; - - return m_iNativeHandle == importer.m_iNativeHandle; - - } - - /** - * Implementation of java.lang.Object.finalize() - * We override this to make sure that all native resources are - * deleted properly. This will free the native Assimp::Importer object - * and its associated aiScene instance. A NativeException is thrown - * if the destruction failed. This means that not all resources have - * been deallocated and memory leaks are remaining. - */ - @Override - protected void finalize() throws Throwable { - super.finalize(); - - // be sure that native resources are deallocated properly - if (0xffffffff == _NativeFreeContext(this.m_iNativeHandle)) { - throw new NativeException("Unable to destroy the native library context"); - } - } - - /** - * Implementation of java.lang.Object.hashCode() - *

- * The native handle obtained from the JNI bridge is used as hash code. - * It is assumed to be unique, in fact it is normally the address of - * the native Assimp::Importer object. - * - * @return An unique value representing the object - */ - @Override - public int hashCode() { - return (int) (m_iNativeHandle >> 32) ^ (int) (m_iNativeHandle); - } - - - /** - * Set an integer property. All supported config properties are - * defined as constants in the ConfigProperty class - * - * @param prop Name of the config property - * @param val New value for the config property - */ - public final void setPropertyInt(final String prop, int val) { - - this.properties.setProperty(prop, val); - this._NativeSetPropertyInt(prop, val, this.getContext()); - } - - - /** - * Set a floating-point property. All supported config properties are - * defined as constants in the ConfigProperty class - * - * @param prop Name of the config property - * @param val New value for the config property - */ - public final void setPropertyFloat(final String prop, float val) { - - this.propertiesFloat.setProperty(prop, val); - this._NativeSetPropertyFloat(prop, val, this.getContext()); - } - - - /** - * Set a string property. All supported config properties are - * defined as constants in the ConfigProperty class - * - * @param prop Name of the config property - * @param val New value for the config property - */ - public final void setPropertyString(final String prop, String val) { - - this.propertiesString.setProperty(prop, val); - this._NativeSetPropertyString(prop, val, this.getContext()); - } - - - /** - * Gets an integer config property that has been set using - * setPropertyInt. All supported config properties are - * defined as constants in the ConfigProperty class - * - * @param prop Name of the config property - * @param error_return Default return value if the property isn't there - * @return Current value of the config property or - * error_return if the property has not yet been set - */ - public final int getPropertyInt(final String prop, int error_return) { - - Integer i = this.properties.getProperty(prop); - return i != null ? i : error_return; - } - - - /** - * Gets a floating-point config property that has been set using - * setPropertyFloat. All supported config properties are - * defined as constants in the ConfigProperty class - * - * @see getPropertyInt - */ - public final float getPropertyFloat(final String prop, float error_return) { - - Float i = this.propertiesFloat.getProperty(prop); - return i != null ? i : error_return; - } - - - /** - * Gets a string config property that has been set using - * setPropertyString. All supported config properties are - * defined as constants in the ConfigProperty class - * - * @see getPropertyInt - */ - public final String getPropertyString(final String prop, String error_return) { - - String i = this.propertiesString.getProperty(prop); - return i != null ? i : error_return; - } - - /** - * Gets an integer config property that has been set using - * setPropertyInt. All supported config properties are - * defined as constants in the ConfigProperty class - * - * @param prop Name of the config property - * @return Current of the property or PROPERTY_WAS_NOT_EXISTING - * if the property has not yet been set. - */ - public final int getPropertyInt(final String prop) { - return getPropertyInt(prop, PROPERTY_WAS_NOT_EXISTING); - } - - /** - * Retrieves the native context of the class. This is normally the - * address of the native Importer object. - * - * @return Native context - */ - public final long getContext() { - return m_iNativeHandle; - } - - - // ********************************************************************************* - // JNI INTERNALS - // ********************************************************************************* - - /** - * JNI bridge call. For internal use only - * The method initializes the ASSIMP-JNI bridge for use. No native - * function call to assimp will be successful unless this function has - * been called. If the function is found by the Java VM (and no - * UnsatisfiedLinkError is thrown), jAssimp assumes that all other - * library functions are available, too. If they are not, an - * UnsatisfiedLinkError will be thrown during model loading. - * - * @param version Version of the JNI bridge requested - * @return Unique handle for the class or 0xffffffff if an error occured - */ - private native int _NativeInitContext(int version); - - /** - * JNI bridge call. For internal use only - * The method destroys the ASSIMP-JNI bridge. No native function call - * to assimp will be successful after this method has been called. - * - * @return 0xffffffff if an error occured - */ - private native int _NativeFreeContext(long iContext); - - /** - * JNI bridge call. For internal use only - * The method loads the model into memory, but does not map it into the VM - * - * @param path Path (valid separators for the OS) to the model to be loaded - * @param flags List of postprocess steps to be executed - * @return 0xffffffff if an error occured - */ - private native int _NativeLoad(String path, int flags, long iContext); - - /** - * JNI bridge call. For internal use only - * The method sets a property - * - * @param name Name of the property - * @param prop New value for the property - * @return 0xffffffff if an error occured - */ - private native int _NativeSetPropertyInt(String name, - int prop, long iContext); - - // float-version - private native int _NativeSetPropertyFloat(String name, - float prop, long iContext); - - // String-version - private native int _NativeSetPropertyString(String name, - String prop, long iContext); -} diff --git a/port/jAssimp/src/assimp/Light.java b/port/jAssimp/src/assimp/Light.java deleted file mode 100644 index d53e688b7..000000000 --- a/port/jAssimp/src/assimp/Light.java +++ /dev/null @@ -1,276 +0,0 @@ -/* ---------------------------------------------------------------------------- -Open Asset Import Library (ASSIMP) ---------------------------------------------------------------------------- - -Copyright (c) 2006-2008, ASSIMP Development Team - -All rights reserved. - -Redistribution and use of this software in source and binary forms, -with or without modification, are permitted provided that the following -conditions are met: - -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. - -* Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the - following disclaimer in the documentation and/or other - materials provided with the distribution. - -* Neither the name of the ASSIMP team, nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior - written permission of the ASSIMP Development Team. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------------- -*/ - - -package assimp; - - -/** Describes a virtual camera in the scene - * - * Cameras have a representation in the node graph and can be animated - * - * @author Aramis (Alexander Gessler) - * @version 1.0 - */ -public class Light -{ - - /** Enumerates all supported types of light sources - */ - public class Type - { - // public static final int UNDEFINED = 0x0; - - /** A directional light source has a well-defined direction - * but is infinitely far away. That's quite a good - * approximation for sun light. - * */ - public static final int DIRECTIONAL = 0x1; - - /** A point light source has a well-defined position - * in space but no direction - it emmits light in all - * directions. A normal bulb is a point light. - * */ - public static final int POINT = 0x2; - - /** A spot light source emmits light in a specific - * angle. It has a position and a direction it is pointing to. - * A good example for a spot light is a light spot in - * sport arenas. - * */ - public static final int SPOT = 0x3; - }; - - - /** The name of the light source. - */ - private String mName; - - /** The type of the light source. - */ - private Type mType; - - /** Position of the light source in space. - */ - private float[] mPosition; - - /** Direction of the light source in space. - */ - private float[] mDirection; - - /** Constant light attenuation factor. - */ - private float mAttenuationConstant; - - /** Linear light attenuation factor. - */ - private float mAttenuationLinear; - - /** Quadratic light attenuation factor. - */ - private float mAttenuationQuadratic; - - /** Diffuse color of the light source - */ - private float[] mColorDiffuse; - - /** Specular color of the light source - */ - private float[] mColorSpecular; - - /** Ambient color of the light source - */ - private float[] mColorAmbient; - - /** Inner angle of a spot light's light cone. - */ - private float mAngleInnerCone; - - /** Outer angle of a spot light's light cone. - */ - private float mAngleOuterCone; - - - - - /** Get the name of the light source. - * - * There must be a node in the scenegraph with the same name. - * This node specifies the position of the light in the scene - * hierarchy and can be animated. - */ - public final String GetName() - { - return mName; - } - - /** Get the type of the light source. - * - */ - public final Type GetType() - { - return mType; - } - - /** Get the position of the light source in space. Relative to the - * transformation of the node corresponding to the light. - * - * The position is undefined for directional lights. - * @return Component order: x,y,z - */ - public final float[] GetPosition() - { - return mPosition; - } - - /** Get the direction of the light source in space. Relative to the - * transformation of the node corresponding to the light. - * - * The direction is undefined for point lights. The vector - * may be normalized, but it needn't. - * @return Component order: x,y,z - */ - public final float[] GetDirection() - { - return mDirection; - } - - /** Get the constant light attenuation factor. - * - * The intensity of the light source at a given distance 'd' from - * the light's position is - * @code - * Atten = 1/( att0 + att1 * d + att2 * d*d) - * @endcode - * This member corresponds to the att0 variable in the equation. - */ - public final float GetAttenuationConstant() - { - return mAttenuationConstant; - } - - /** Get the linear light attenuation factor. - * - * The intensity of the light source at a given distance 'd' from - * the light's position is - * @code - * Atten = 1/( att0 + att1 * d + att2 * d*d) - * @endcode - * This member corresponds to the att1 variable in the equation. - */ - public final float GetAttenuationLinear() - { - return mAttenuationLinear; - } - - /** Get the quadratic light attenuation factor. - * - * The intensity of the light source at a given distance 'd' from - * the light's position is - * @code - * Atten = 1/( att0 + att1 * d + att2 * d*d) - * @endcode - * This member corresponds to the att2 variable in the equation. - */ - public final float GetAttenuationQuadratic() - { - return mAttenuationQuadratic; - } - - /** Get the diffuse color of the light source - * - * The diffuse light color is multiplied with the diffuse - * material color to obtain the final color that contributes - * to the diffuse shading term. - */ - public final float[] mColorDiffuse; - - /** Get the specular color of the light source - * - * The specular light color is multiplied with the specular - * material color to obtain the final color that contributes - * to the specular shading term. - */ - public final float[] GetColorSpecular() - { - return mColorSpecular; - } - - /** Get the ambient color of the light source - * - * The ambient light color is multiplied with the ambient - * material color to obtain the final color that contributes - * to the ambient shading term. Most renderers will ignore - * this value it, is just a remaining of the fixed-function pipeline - * that is still supported by quite many file formats. - */ - public final float[] GetColorAmbient() - { - return mColorAmbient; - } - - /** Get the inner angle of a spot light's light cone. - * - * The spot light has maximum influence on objects inside this - * angle. The angle is given in radians. It is 2PI for point - * lights and undefined for directional lights. - */ - public final float GetAngleInnerCone() - { - return mAngleInnerCone; - } - - - /** Get the outer angle of a spot light's light cone. - * - * The spot light does not affect objects outside this angle. - * The angle is given in radians. It is 2PI for point lights and - * undefined for directional lights. The outer angle must be - * greater than or equal to the inner angle. - * It is assumed that the application uses a smooth - * interpolation between the inner and the outer cone of the - * spot light. - */ - public final float GetAngleOuterCone() - { - return mAngleOuterCone; - } -}; \ No newline at end of file diff --git a/port/jAssimp/src/assimp/LogStream.java b/port/jAssimp/src/assimp/LogStream.java deleted file mode 100644 index e824834d3..000000000 --- a/port/jAssimp/src/assimp/LogStream.java +++ /dev/null @@ -1,63 +0,0 @@ -/* ---------------------------------------------------------------------------- -Open Asset Import Library (ASSIMP) ---------------------------------------------------------------------------- - -Copyright (c) 2006-2008, ASSIMP Development Team - -All rights reserved. - -Redistribution and use of this software in source and binary forms, -with or without modification, are permitted provided that the following -conditions are met: - -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. - -* Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the - following disclaimer in the documentation and/or other - materials provided with the distribution. - -* Neither the name of the ASSIMP team, nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior - written permission of the ASSIMP Development Team. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------------- -*/ - - -package assimp; - -/** - * Output stream for the logger. Directly corresponding with the native - * LoggStream interface - *
- * For direct output to a java.io.Stream you can use the - * DefaultLogStream class. - * - * @author Aramis (Alexander Gessler) - * @version 1.0 - */ -public interface LogStream { - - /** - * Override this for your own output implementations - * - * @param message Message to be written to the log stream - */ - public void write(String message); -} diff --git a/port/jAssimp/src/assimp/Logger.java b/port/jAssimp/src/assimp/Logger.java deleted file mode 100644 index 3c19d103a..000000000 --- a/port/jAssimp/src/assimp/Logger.java +++ /dev/null @@ -1,122 +0,0 @@ -/* ---------------------------------------------------------------------------- -Open Asset Import Library (ASSIMP) ---------------------------------------------------------------------------- - -Copyright (c) 2006-2008, ASSIMP Development Team - -All rights reserved. - -Redistribution and use of this software in source and binary forms, -with or without modification, are permitted provided that the following -conditions are met: - -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. - -* Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the - following disclaimer in the documentation and/or other - materials provided with the distribution. - -* Neither the name of the ASSIMP team, nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior - written permission of the ASSIMP Development Team. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------------- -*/ - - -package assimp; - -/** - * Base logging interface. Directly corresponding with the native - * Logger interface - * - * @author Aramis (Alexander Gessler) - * @version 1.0 - */ -public interface Logger { - - /** - * Debug log message - */ - public static final int ERRORSEVERITY_DEBUGGING = 0x1; - - /** - * Information log message - */ - public static final int ERRORSEVERITY_INFO = 0x2; - - /** - * Warn log message - */ - public static final int ERRORSEVERITY_WARN = 0x4; - - /** - * Error log message - */ - public static final int ERRORSEVERITY_ERR = 0x8; - - - /** - * Write a debug message to the log - * - * @param message Message to be logged - */ - public void debug(String message); - - /** - * Write an error message to the log - * - * @param message Message to be logged - */ - public void error(String message); - - /** - * Write a warn message to the log - * - * @param message Message to be logged - */ - public void warn(String message); - - /** - * Write an info message to the log - * - * @param message Message to be logged - */ - public void info(String message); - - /** - * Attach a logstream to the logger - * - * @param stream Log stream instance - * @param severity Error severity. Bitwise combination of the - * ERRORSEVERITY_XXX constants. Specify 0 to attach the - * stream to all types of log messages. - */ - public void attachStream(LogStream stream, int severity); - - /** - * Detach a logstream from the logger - * - * @param stream Log stream instance - * @param severity Error severities to detach the stream from. - * Bitwise combination of the ERRORSEVERITY_XXX constants. - * Specify 0 to detach the stream from all types of log messages. - */ - public void detachStream(LogStream stream, int severity); -} diff --git a/port/jAssimp/src/assimp/Material.java b/port/jAssimp/src/assimp/Material.java deleted file mode 100644 index a9163e969..000000000 --- a/port/jAssimp/src/assimp/Material.java +++ /dev/null @@ -1,610 +0,0 @@ -/* ---------------------------------------------------------------------------- -Open Asset Import Library (ASSIMP) ---------------------------------------------------------------------------- - -Copyright (c) 2006-2008, ASSIMP Development Team - -All rights reserved. - -Redistribution and use of this software in source and binary forms, -with or without modification, are permitted provided that the following -conditions are met: - -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. - -* Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the - following disclaimer in the documentation and/or other - materials provided with the distribution. - -* Neither the name of the ASSIMP team, nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior - written permission of the ASSIMP Development Team. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------------- -*/ - - -package assimp; - - -/** - * Class to wrap materials. Materials are represented in ASSIMP as a list of - * key/value pairs, the key being a String and the value being - * a binary buffer. The class provides several get methods to access - * material properties easily. - * - * @author Aramis (Alexander Gessler) - * @version 1.0 - */ -public class Material { - - - /** - * Internal representation of a material property - */ - private class Property { - String key; - Object value; - } - - /** - * List of all properties for this material - */ - private Property[] properties; - - - /** - * Special exception class which is thrown if a material property - * could not be found. - */ - public class PropertyNotFoundException extends Exception { - - public final String property_key; - - /** - * Constructs a new exception - * - * @param message Error message - * @param property_key Name of the property that wasn't found - */ - public PropertyNotFoundException(String message, String property_key) { - super(message); - this.property_key = property_key; - } - } - - - /** - * Get a property with a specific name as generic Object - * - * @param key MATKEY_XXX key constant - * @return null if the property wasn't there or hasn't - * the desired output type. The returned Object can be - * casted to the expected data type for the property. Primitive - * types are represented by their boxed variants. - */ - public Object getProperty(String key) throws PropertyNotFoundException { - - for (Property prop : properties) { - if (prop.key.equals(key)) { - return prop.value; - } - } - throw new PropertyNotFoundException("Unable to find material property: ", key); - } - - /** - * Get a material property as float array - * - * @param key MATKEY_XXX key constant - * @throws PropertyNotFoundException - if the property can't be found - * or if it has the wrong data type. - */ - public float[] getPropertyAsFloatArray(String key) throws PropertyNotFoundException { - - Object obj = getProperty(key); - if (obj instanceof float[]) { - return (float[]) obj; - } - String msg = "The data type requested (float[]) doesn't match the " + - "real data type of the material property"; - DefaultLogger.get().error(msg); - throw new PropertyNotFoundException(msg, key); - } - - - /** - * Get a floating-point material property - * - * @param key MATKEY_XXX key constant - * @return The value of the property. - * @throws PropertyNotFoundException - if the property can't be found - * or if it has the wrong data type. - */ - public float getPropertyAsFloat(String key) throws PropertyNotFoundException { - - Object obj = getProperty(key); - if (obj instanceof Float) { - return (Float) obj; - } - String msg = "The data type requested (Float) doesn't match the " + - "real data type of the material property"; - DefaultLogger.get().error(msg); - throw new PropertyNotFoundException(msg, key); - } - - - /** - * Get an integer material property - * - * @param key MATKEY_XXX key constant - * @return The value of the property. - * @throws PropertyNotFoundException - if the property can't be found - * or if it has the wrong data type. - */ - public int getPropertyAsInt(String key) throws PropertyNotFoundException { - - Object obj = getProperty(key); - if (obj instanceof Integer) { - return (Integer) obj; - } - String msg = "The data type requested (Integer) doesn't match the " + - "real data type of the material property"; - DefaultLogger.get().error(msg); - throw new PropertyNotFoundException(msg, key); - } - - - /** - * Get a material property string - * - * @param key MATKEY_XXX key constant - * @return The value of the property. - * @throws PropertyNotFoundException - if the property can't be found - * or if it has the wrong data type. - */ - public String getPropertyAsString(String key) throws PropertyNotFoundException { - - Object obj = getProperty(key); - if (obj instanceof String) { - return (String) obj; - } - String msg = "The data type requested (java.lang.String) doesn't match the " + - "real data type of the material property"; - DefaultLogger.get().error(msg); - throw new PropertyNotFoundException(msg, key); - } - - - /** - * Material key: defines the name of the material - * The type of this material property is String - */ - public static final String MATKEY_NAME = "$mat.name"; - - /** - * Material key: defines the diffuse base color of the material - * The type of this material property is float[]. - * The array has 4 or 3 components in RGB(A) order. - */ - public static final String MATKEY_COLOR_DIFFUSE = "$clr.diffuse"; - - /** - * Material key: defines the specular base color of the material - * The type of this material property is float[]. - * The array has 4 or 3 components in RGB(A) order. - */ - public static final String MATKEY_COLOR_SPECULAR = "$clr.specular"; - - /** - * Material key: defines the ambient base color of the material - * The type of this material property is float[]. - * The array has 4 or 3 components in RGB(A) order. - */ - public static final String MATKEY_COLOR_AMBIENT = "$clr.ambient"; - - /** - * Material key: defines the emissive base color of the material - * The type of this material property is float[]. - * The array has 4 or 3 components in RGB(A) order. - */ - public static final String MATKEY_COLOR_EMISSIVE = "$clr.emissive"; - - /** - * Specifies the blend operation to be used to combine the Nth - * diffuse texture with the (N-1)th diffuse texture (or the diffuse - * base color for the first diffuse texture) - *
- * Type: int (TextureOp)
- * Default value: 0
- * Requires: MATKEY_TEXTURE_DIFFUSE(N)
- * - * @param N Index of the texture - */ - public static String MATKEY_TEXOP_DIFFUSE(int N) { - return "$tex.op.diffuse[" + N + "]"; - } - - /** - * @see MATKEY_TEXOP_DIFFUSE - */ - public static String MATKEY_TEXOP_SPECULAR(int N) { - return "$tex.op.specular[" + N + "]"; - } - - /** - * @see MATKEY_TEXOP_DIFFUSE - */ - public static String MATKEY_TEXOP_AMBIENT(int N) { - return "$tex.op.ambient[" + N + "]"; - } - - /** - * @see MATKEY_TEXOP_DIFFUSE - */ - public static String MATKEY_TEXOP_EMISSIVE(int N) { - return "$tex.op.emissive[" + N + "]"; - } - - /** - * @see MATKEY_TEXOP_DIFFUSE - */ - public static String MATKEY_TEXOP_NORMALS(int N) { - return "$tex.op.normals[" + N + "]"; - } - - /** - * @see MATKEY_TEXOP_DIFFUSE - */ - public static String MATKEY_TEXOP_HEIGHT(int N) { - return "$tex.op.height[" + N + "]"; - } - - /** - * @see MATKEY_TEXOP_DIFFUSE - */ - public static String MATKEY_TEXOP_SHININESS(int N) { - return "$tex.op.shininess[" + N + "]"; - } - - /** - * @see MATKEY_TEXOP_DIFFUSE - */ - public static String MATKEY_TEXOP_OPACITY(int N) { - return "$tex.op.opacity[" + N + "]"; - } - - - /** - * Specifies the blend factor to be multiplied with the value of - * the n'th texture layer before it is combined with the previous - * layer using a specific blend operation. - *

- *
- * Type: float
- * Default value: 1.0f
- * Requires: MATKEY_TEXTURE_DIFFUSE(N)
- * - * @param N Index of the texture - */ - public static String MATKEY_TEXBLEND_DIFFUSE(int N) { - return "$tex.blend.diffuse[" + N + "]"; - } - - /** - * @see MATKEY_TEXBLEND_DIFFUSE - */ - public static String MATKEY_TEXBLEND_SPECULAR(int N) { - return "$tex.blend.specular[" + N + "]"; - } - - /** - * @see MATKEY_TEXBLEND_DIFFUSE - */ - public static String MATKEY_TEXBLEND_AMBIENT(int N) { - return "$tex.blend.ambient[" + N + "]"; - } - - /** - * @see MATKEY_TEXBLEND_DIFFUSE - */ - public static String MATKEY_TEXBLEND_EMISSIVE(int N) { - return "$tex.blend.emissive[" + N + "]"; - } - - /** - * @see MATKEY_TEXBLEND_DIFFUSE - */ - public static String MATKEY_TEXBLEND_SHININESS(int N) { - return "$tex.blend.shininess[" + N + "]"; - } - - /** - * @see MATKEY_TEXBLEND_DIFFUSE - */ - public static String MATKEY_TEXBLEND_OPACITY(int N) { - return "$tex.blend.opacity[" + N + "]"; - } - - /** - * @see MATKEY_TEXBLEND_DIFFUSE - */ - public static String MATKEY_TEXBLEND_HEIGHT(int N) { - return "$tex.blend.height[" + N + "]"; - } - - /** - * @see MATKEY_TEXBLEND_DIFFUSE - */ - public static String MATKEY_TEXBLEND_NORMALS(int N) { - return "$tex.blend.normals[" + N + "]"; - } - - - /** - * Specifies the index of the UV channel to be used for a texture - *
- * Type:int
- * Default value:0
- * Requires: MATKEY_TEXTURE_DIFFUSE(N)
- * - * @param N Index of the texture - */ - public static String MATKEY_UVWSRC_DIFFUSE(int N) { - return "$tex.uvw.diffuse[" + N + "]"; - } - - /** - * @see MATKEY_UVWSRC_DIFFUSE - */ - public static String MATKEY_UVWSRC_SPECULAR(int N) { - return "$tex.uvw.specular[" + N + "]"; - } - - /** - * @see MATKEY_UVWSRC_DIFFUSE - */ - public static String MATKEY_UVWSRC_AMBIENT(int N) { - return "$tex.uvw.ambient[" + N + "]"; - } - - /** - * @see MATKEY_UVWSRC_DIFFUSE - */ - public static String MATKEY_UVWSRC_EMISSIVE(int N) { - return "$tex.uvw.emissive[" + N + "]"; - } - - /** - * @see MATKEY_UVWSRC_DIFFUSE - */ - public static String MATKEY_UVWSRC_SHININESS(int N) { - return "$tex.uvw.shininess[" + N + "]"; - } - - /** - * @see MATKEY_UVWSRC_DIFFUSE - */ - public static String MATKEY_UVWSRC_OPACITY(int N) { - return "$tex.uvw.opacity[" + N + "]"; - } - - /** - * @see MATKEY_UVWSRC_DIFFUSE - */ - public static String MATKEY_UVWSRC_HEIGHT(int N) { - return "$tex.uvw.height[" + N + "]"; - } - - /** - * @see MATKEY_UVWSRC_DIFFUSE - */ - public static String MATKEY_UVWSRC_NORMALS(int N) { - return "$tex.uvw.normals[" + N + "]"; - } - - - /** - * Specifies the texture mapping mode in the v (y) direction. - *
- * Type:int
- * Default value:TextureMapMode.Wrap
- * Requires: MATKEY_TEXTURE_DIFFUSE(N)
- * - * @param N Index of the texture - */ - public static String MATKEY_MAPPINGMODE_U_DIFFUSE(int N) { - return "$tex.mapmodeu.diffuse[" + N + "]"; - } - - /** - * @see MATKEY_MAPPINGMODE_U_DIFFUSE - */ - public static String MATKEY_MAPPINGMODE_U_SPECULAR(int N) { - return "$tex.mapmodeu.specular[" + N + "]"; - } - - /** - * @see MATKEY_MAPPINGMODE_U_DIFFUSE - */ - public static String MATKEY_MAPPINGMODE_U_AMBIENT(int N) { - return "$tex.mapmodeu.ambient[" + N + "]"; - } - - /** - * @see MATKEY_MAPPINGMODE_U_DIFFUSE - */ - public static String MATKEY_MAPPINGMODE_U_EMISSIVE(int N) { - return "$tex.mapmodeu.emissive[" + N + "]"; - } - - /** - * @see MATKEY_MAPPINGMODE_U_DIFFUSE - */ - public static String MATKEY_MAPPINGMODE_U_SHININESS(int N) { - return "$tex.mapmodeu.shininess[" + N + "]"; - } - - /** - * @see MATKEY_MAPPINGMODE_U_DIFFUSE - */ - public static String MATKEY_MAPPINGMODE_U_OPACITY(int N) { - return "$tex.mapmodeu.opacity[" + N + "]"; - } - - /** - * @see MATKEY_MAPPINGMODE_U_DIFFUSE - */ - public static String MATKEY_MAPPINGMODE_U_HEIGHT(int N) { - return "$tex.mapmodeu.height[" + N + "]"; - } - - /** - * @see MATKEY_MAPPINGMODE_U_DIFFUSE - */ - public static String MATKEY_MAPPINGMODE_U_NORMALS(int N) { - return "$tex.mapmodeu.normals[" + N + "]"; - } - - - /** - * Specifies the texture mapping mode in the v (y) direction. - *
- * Type:int
- * Default value:TextureMapMode.Wrap
- * Requires: MATKEY_TEXTURE_DIFFUSE(N)
- * - * @param N Index of the texture - */ - public static String MATKEY_MAPPINGMODE_V_DIFFUSE(int N) { - return "$tex.mapmodev.diffuse[" + N + "]"; - } - - /** - * @see MATKEY_MAPPINGMODE_V_DIFFUSE - */ - public static String MATKEY_MAPPINGMODE_V_SPECULAR(int N) { - return "$tex.mapmodev.specular[" + N + "]"; - } - - /** - * @see MATKEY_MAPPINGMODE_V_DIFFUSE - */ - public static String MATKEY_MAPPINGMODE_V_AMBIENT(int N) { - return "$tex.mapmodev.ambient[" + N + "]"; - } - - /** - * @see MATKEY_MAPPINGMODE_V_DIFFUSE - */ - public static String MATKEY_MAPPINGMODE_V_EMISSIVE(int N) { - return "$tex.mapmodev.emissive[" + N + "]"; - } - - /** - * @see MATKEY_MAPPINGMODE_V_DIFFUSE - */ - public static String MATKEY_MAPPINGMODE_V_SHININESS(int N) { - return "$tex.mapmodev.shininess[" + N + "]"; - } - - /** - * @see MATKEY_MAPPINGMODE_V_DIFFUSE - */ - public static String MATKEY_MAPPINGMODE_V_OPACITY(int N) { - return "$tex.mapmodev.opacity[" + N + "]"; - } - - /** - * @see MATKEY_MAPPINGMODE_V_DIFFUSE - */ - public static String MATKEY_MAPPINGMODE_V_HEIGHT(int N) { - return "$tex.mapmodev.height[" + N + "]"; - } - - /** - * @see MATKEY_MAPPINGMODE_V_DIFFUSE - */ - public static String MATKEY_MAPPINGMODE_V_NORMALS(int N) { - return "$tex.mapmodev.normals[" + N + "]"; - } - - - /** - * Specifies the texture mapping mode in the w (z) direction. - *
- * Type:int
- * Default value:TextureMapMode.Wrap
- * Requires: MATKEY_TEXTURE_DIFFUSE(N)
- * - * @param N Index of the texture - */ - public static String MATKEY_MAPPINGMODE_W_DIFFUSE(int N) { - return "$tex.mapmodew.diffuse[" + N + "]"; - } - - /** - * @see MATKEY_MAPPINGMODE_V_DIFFUSE - */ - public static String MATKEY_MAPPINGMODE_W_SPECULAR(int N) { - return "$tex.mapmodew.specular[" + N + "]"; - } - - /** - * @see MATKEY_MAPPINGMODE_V_DIFFUSE - */ - public static String MATKEY_MAPPINGMODE_W_AMBIENT(int N) { - return "$tex.mapmodew.ambient[" + N + "]"; - } - - /** - * @see MATKEY_MAPPINGMODE_V_DIFFUSE - */ - public static String MATKEY_MAPPINGMODE_W_EMISSIVE(int N) { - return "$tex.mapmodew.emissive[" + N + "]"; - } - - /** - * @see MATKEY_MAPPINGMODE_V_DIFFUSE - */ - public static String MATKEY_MAPPINGMODE_W_SHININESS(int N) { - return "$tex.mapmodew.shininess[" + N + "]"; - } - - /** - * @see MATKEY_MAPPINGMODE_V_DIFFUSE - */ - public static String MATKEY_MAPPINGMODE_W_OPACITY(int N) { - return "$tex.mapmodew.opacity[" + N + "]"; - } - - /** - * @see MATKEY_MAPPINGMODE_V_DIFFUSE - */ - public static String MATKEY_MAPPINGMODE_W_HEIGHT(int N) { - return "$tex.mapmodew.height[" + N + "]"; - } - - /** - * @see MATKEY_MAPPINGMODE_V_DIFFUSE - */ - public static String MATKEY_MAPPINGMODE_W_NORMALS(int N) { - return "$tex.mapmodew.normals[" + N + "]"; - } -} diff --git a/port/jAssimp/src/assimp/Matrix3x3.java b/port/jAssimp/src/assimp/Matrix3x3.java deleted file mode 100644 index 98ecd7284..000000000 --- a/port/jAssimp/src/assimp/Matrix3x3.java +++ /dev/null @@ -1,149 +0,0 @@ -/* ---------------------------------------------------------------------------- -Open Asset Import Library (ASSIMP) ---------------------------------------------------------------------------- - -Copyright (c) 2006-2008, ASSIMP Development Team - -All rights reserved. - -Redistribution and use of this software in source and binary forms, -with or without modification, are permitted provided that the following -conditions are met: - -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. - -* Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the - following disclaimer in the documentation and/or other - materials provided with the distribution. - -* Neither the name of the ASSIMP team, nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior - written permission of the ASSIMP Development Team. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------------- -*/ - -package assimp; - -/** - * Represents a 3x3 row major matrix - * - * @author Aramis (Alexander Gessler) - * @version 1.0 - */ -public class Matrix3x3 { - - - /** - * Default constructor. Initializes the matrix with its identity - */ - public Matrix3x3() { - coeff[0] = coeff[4] = coeff[8] = 1.0f; - } - - /** - * Copy constructor - * @param other Matrix to be copied - */ - public Matrix3x3 ( Matrix3x3 other) { - System.arraycopy(other.coeff, 0, this.coeff, 0, 9); - } - - /** - * Construction from nine given coefficents - * @param a1 - * @param a2 - * @param a3 - * @param b1 - * @param b2 - * @param b3 - * @param c1 - * @param c2 - * @param c3 - */ - public Matrix3x3 (float a1, float a2, float a3, - float b1, float b2, float b3, - float c1, float c2, float c3) { - - coeff[0] = a1; - coeff[1] = a2; - coeff[2] = a3; - coeff[3] = b1; - coeff[4] = b2; - coeff[5] = b3; - coeff[6] = c1; - coeff[7] = c2; - coeff[8] = c3; - } - - - /** - * Copy constructor (construction from a 4x4 matrix) - * @param other Matrix to be copied - */ - public Matrix3x3 ( Matrix4x4 other) { - coeff[0] = other.coeff[0]; - coeff[1] = other.coeff[1]; - coeff[2] = other.coeff[2]; - coeff[3] = other.coeff[4]; - coeff[4] = other.coeff[5]; - coeff[5] = other.coeff[6]; - coeff[6] = other.coeff[8]; - coeff[7] = other.coeff[9]; - coeff[8] = other.coeff[10]; - } - - - /** - * The coefficients of the matrix - */ - public float[] coeff = new float[9]; - - - /** - * Returns a field in the matrix - * @param row Row index - * @param column Column index - * @return The corresponding field value - */ - public final float get(int row, int column) { - assert(row <= 2 && column <= 2); - return coeff[row*3+column]; - } - - - /** - * Multiplies *this* matrix with another matrix - * @param m Matrix to multiply with - * @return Output matrix - */ - public final Matrix3x3 Mul(Matrix3x3 m) { - - return new Matrix3x3( - m.coeff[0] * coeff[0] + m.coeff[3] * coeff[1] + m.coeff[6] * coeff[2], - m.coeff[1] * coeff[0] + m.coeff[4] * coeff[1] + m.coeff[7] * coeff[2], - m.coeff[2] * coeff[0] + m.coeff[5] * coeff[1] + m.coeff[8] * coeff[2], - m.coeff[0] * coeff[3] + m.coeff[3] * coeff[4] + m.coeff[6] * coeff[5], - m.coeff[1] * coeff[3] + m.coeff[4] * coeff[4] + m.coeff[7] * coeff[5], - m.coeff[2] * coeff[3] + m.coeff[5] * coeff[4] + m.coeff[8] * coeff[5], - m.coeff[0] * coeff[6] + m.coeff[3] * coeff[7] + m.coeff[6] * coeff[8], - m.coeff[1] * coeff[6] + m.coeff[4] * coeff[7] + m.coeff[7] * coeff[8], - m.coeff[2] * coeff[6] + m.coeff[5] * coeff[7] + m.coeff[8] * coeff[8]); - } -} diff --git a/port/jAssimp/src/assimp/Matrix4x4.java b/port/jAssimp/src/assimp/Matrix4x4.java deleted file mode 100644 index da32f7abb..000000000 --- a/port/jAssimp/src/assimp/Matrix4x4.java +++ /dev/null @@ -1,179 +0,0 @@ -/* ---------------------------------------------------------------------------- -Open Asset Import Library (ASSIMP) ---------------------------------------------------------------------------- - -Copyright (c) 2006-2008, ASSIMP Development Team - -All rights reserved. - -Redistribution and use of this software in source and binary forms, -with or without modification, are permitted provided that the following -conditions are met: - -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. - -* Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the - following disclaimer in the documentation and/or other - materials provided with the distribution. - -* Neither the name of the ASSIMP team, nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior - written permission of the ASSIMP Development Team. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------------- -*/ - -package assimp; - -/** - * Represents a 4x4 row major matrix - * - * @author Aramis (Alexander Gessler) - * @version 1.0 - */ -public class Matrix4x4 { - - - /** - * Default constructor. Initializes the matrix with its identity - */ - public Matrix4x4() { - coeff[0] = coeff[5] = coeff[10] = coeff[15] = 1.0f; - } - - /** - * Copy constructor - * @param other Matrix to be copied - */ - public Matrix4x4 ( Matrix4x4 other) { - System.arraycopy(other.coeff, 0, this.coeff, 0, 16); - } - - - /** - * Construction from 16 given coefficents - * @param a1 - * @param a2 - * @param a3 - * @param a4 - * @param b1 - * @param b2 - * @param b3 - * @param b4 - * @param c1 - * @param c2 - * @param c3 - * @param c4 - * @param d1 - * @param d2 - * @param d3 - * @param d4 - */ - public Matrix4x4 (float a1, float a2, float a3, float a4, - float b1, float b2, float b3, float b4, - float c1, float c2, float c3, float c4, - float d1, float d2, float d3, float d4) { - - coeff[0] = a1; - coeff[1] = a2; - coeff[2] = a3; - coeff[3] = a4; - coeff[4] = b1; - coeff[5] = b2; - coeff[6] = b3; - coeff[7] = b4; - coeff[8] = c1; - coeff[9] = c2; - coeff[10] = c3; - coeff[11] = c4; - coeff[12] = d1; - coeff[13] = d2; - coeff[14] = d3; - coeff[15] = d4; - } - - - /** - * Copy constructor (construction from a 4x4 matrix) - * @param other Matrix to be copied - */ - public Matrix4x4 ( Matrix3x3 other) { - coeff[0] = other.coeff[0]; - coeff[1] = other.coeff[1]; - coeff[2] = other.coeff[2]; - coeff[4] = other.coeff[3]; - coeff[5] = other.coeff[4]; - coeff[6] = other.coeff[5]; - coeff[8] = other.coeff[6]; - coeff[9] = other.coeff[7]; - coeff[10] = other.coeff[8]; - coeff[15] = 1.0f; - } - - - /** - * The coefficients of the matrix - */ - public float[] coeff = new float[16]; - - - /** - * Returns a field in the matrix - * @param row Row index - * @param column Column index - * @return The corresponding field value - */ - public final float get(int row, int column) { - assert(row <= 3 && column <= 3); - return coeff[row*4+column]; - } - - - /** - * Computes the transpose of the matrix. *this* matrix - * will be modified! - */ - public final Matrix4x4 transpose() { - - float fTemp = coeff[1*4 +0]; - coeff[1*4 +0] = coeff[0*4 +1]; - coeff[0*4 +1] = fTemp; - - fTemp = coeff[2*4 +0]; - coeff[2*4 +0] = coeff[0*4 +2]; - coeff[0*4 +2] = fTemp; - - fTemp = coeff[2*4 +1]; - coeff[2*4 +1] = coeff[1*4 +2]; - coeff[1*4 +2] = fTemp; - - fTemp = coeff[3*4 +0]; - coeff[3*4 +0] = coeff[0*4 +3]; - coeff[0*4 +3] = fTemp; - - fTemp = coeff[3*4 +1]; - coeff[3*4 +1] = coeff[1*4 +3]; - coeff[1*4 +3] = fTemp; - - fTemp = coeff[3*4 +2]; - coeff[3*4 +2] = coeff[2*4 +3]; - coeff[2*4 +3] = fTemp; - return this; - } -} diff --git a/port/jAssimp/src/assimp/Mesh.java b/port/jAssimp/src/assimp/Mesh.java deleted file mode 100644 index 60397b30f..000000000 --- a/port/jAssimp/src/assimp/Mesh.java +++ /dev/null @@ -1,622 +0,0 @@ -/* ---------------------------------------------------------------------------- -Open Asset Import Library (ASSIMP) ---------------------------------------------------------------------------- - -Copyright (c) 2006-2008, ASSIMP Development Team - -All rights reserved. - -Redistribution and use of this software in source and binary forms, -with or without modification, are permitted provided that the following -conditions are met: - -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. - -* Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the - following disclaimer in the documentation and/or other - materials provided with the distribution. - -* Neither the name of the ASSIMP team, nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior - written permission of the ASSIMP Development Team. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------------- -*/ - - -package assimp; - -import java.awt.*; - - -/** - * A mesh represents a geometry or model with a single material. - *

- * It usually consists of a number of vertices and a series of primitives/faces - * referencing the vertices. In addition there might be a series of bones, each - * of them addressing a number of vertices with a certain weight. Vertex data - * is presented in channels with each channel containing a single per-vertex - * information such as a set of texture coords or a normal vector. - *

- * Note that not all mesh data channels must be there. E.g. most models - * don't contain vertex colors, so this data channel is often not filled. - * - * @author Aramis (Alexander Gessler) - * @version 1.0 - */ -public class Mesh { - - /** - * Defines the maximum number of UV(W) channels that are available - * for a mesh. If a loader finds more channels in a file, some - * will be skipped - */ - public static final int MAX_NUMBER_OF_TEXTURECOORDS = 0x4; - - /** - * Defines the maximum number of vertex color channels that are - * available for a mesh. If a loader finds more channels in a file, - * some will be skipped - */ - public static final int MAX_NUMBER_OF_COLOR_SETS = 0x4; - - - /** - * Contains the vertices loaded from the model - */ - private float[] m_vVertices = null; - - /** - * Contains the normal vectors loaded from the model or - * computed by postprocess steps. Needn't be existing - */ - private float[] m_vNormals = null; - - /** - * Contains the tangent vectors computed by Assimp - * Needn't be existing - */ - private float[] m_vTangents = null; - - /** - * Contains the bitangent vectors computed by Assimp - * Needn't be existing - */ - private float[] m_vBitangents = null; - - /** - * Contains the texture coordinate sets that have been loaded - * Needn't be existing - */ - private float[][] m_avUVs = new float[MAX_NUMBER_OF_TEXTURECOORDS][]; - - /** - * Specifies how many texture coordinate components are valid - * in an UV channel. Normally this will be 2, but 3d texture - * coordinates for cubic or volumetric mapping are also supported. - */ - private int[] m_aiNumUVComponents = new int[MAX_NUMBER_OF_TEXTURECOORDS]; - - /** - * Contains the vertex color sets that have been loaded - * Needn't be existing - */ - private float[][] m_avColors = new float[MAX_NUMBER_OF_COLOR_SETS][]; - - /** - * Contains a list of all faces of the mesh. each face consists of - * three indices into the vertex buffer. - */ - private int[] m_vFaces = null; - - - /** - * Bones which are influencing the mesh - */ - private Bone[] m_vBones = null; - - /** - * Material index of the mesh - */ - private int m_iMaterialIndex = 0; - - - /** - * Check whether there are vertex positions in the model - * getPosition() will assert this. - * - * @return true if vertex positions are available. This is - * guaranteed to be always true, except for scenes which contain only - * animation skeletons. - */ - public final boolean hasPositions() { - return null != this.m_vVertices; - } - - /** - * Check whether there are normal vectors in the model - * getNormal() will assert this. - * - * @return true if vertex normals are available. - */ - public final boolean hasNormals() { - return null != this.m_vNormals; - } - - /** - * Check whether there are bones in the model - * getBone() will assert this. - * - * @return true if vertex normals are available. - */ - public final boolean hasBones() { - return null != this.m_vBones; - } - - /** - * Check whether there are tangents/bitangents in the model - * getTangent() and GetBitangent() will assert this. - * - * @return true if vertex tangents and bitangents are available. - */ - public final boolean hasTangentsAndBitangents() { - return null != this.m_vBitangents && null != this.m_vTangents; - } - - /** - * Check whether a given UV set is existing the model - * getUV() will assert this. - * - * @param n UV coordinate set index - * @return true the uv coordinate set is available. - */ - public final boolean hasUVCoords(int n) { - return n < this.m_avUVs.length && null != this.m_avUVs[n]; - } - - /** - * Check whether a given vertex color set is existing the model - * getColor() will assert this. - * - * @param n Vertex color set index - * @return true the vertex color set is available. - */ - public final boolean hasVertexColors(int n) { - return n < this.m_avColors.length && null != this.m_avColors[n]; - } - - - /** - * Get the number of vertices in the model - * - * @return Number of vertices in the model. This could be 0 in some - * extreme cases although loaders should filter such cases out - */ - public final int getNumVertices() { - return m_vVertices.length; - } - - - /** - * Get the number of faces in the model - * - * @return Number of faces in the model. This could be 0 in some - * extreme cases although loaders should filter such cases out - */ - public final int getNumFaces() { - return m_vFaces.length; - } - - /** - * Get the number of bones in the model - * - * @return Number of bones in the model. - */ - public final int getNumBones() { - return m_vBones.length; - } - - /** - * Get the material index of the mesh - * - * @return Zero-based material index - */ - public final int getMaterialIndex() { - return m_iMaterialIndex; - } - - /** - * Get a vertex position in the mesh - * - * @param iIndex Zero-based index of the vertex - * @param afOut Output array, size must at least be 3 - * Receives the vertex position components in x,y,z order - */ - public final void getPosition(int iIndex, float[] afOut) { - assert(hasPositions() && - afOut.length >= 3 && - iIndex < this.getNumVertices()); - - iIndex *= 3; - afOut[0] = this.m_vVertices[iIndex]; - afOut[1] = this.m_vVertices[iIndex + 1]; - afOut[2] = this.m_vVertices[iIndex + 2]; - } - - /** - * Get a vertex position in the mesh - * - * @param iIndex Zero-based index of the vertex - * @param afOut Output array, size must at least be 3 - * @param iOutBase Start index in the output array - * Receives the vertex position components in x,y,z order - */ - public final void getPosition(int iIndex, float[] afOut, int iOutBase) { - assert(hasPositions() && - iOutBase + 3 <= afOut.length && - iIndex < this.getNumVertices()); - - iIndex *= 3; - afOut[iOutBase] = this.m_vVertices[iIndex]; - afOut[iOutBase + 1] = this.m_vVertices[iIndex + 1]; - afOut[iOutBase + 2] = this.m_vVertices[iIndex + 2]; - } - - /** - * Provides direct access to the vertex position array of the mesh - * This is the recommended way of accessing the data. - * - * @return Array of floats, size is numverts * 3. Component ordering - * is xyz. - */ - public final float[] getPositionArray() { - return this.m_vVertices; - } - - /** - * Get a vertex normal in the mesh - * - * @param iIndex Zero-based index of the vertex - * @param afOut Output array, size must at least be 3 - * Receives the vertex normal components in x,y,z order - */ - public final void getNormal(int iIndex, float[] afOut) { - assert(hasNormals() && - afOut.length >= 3 && - iIndex < this.getNumVertices()); - - iIndex *= 3; - afOut[0] = this.m_vTangents[iIndex]; - afOut[1] = this.m_vTangents[iIndex + 1]; - afOut[2] = this.m_vTangents[iIndex + 2]; - } - - /** - * Get a vertex normal in the mesh - * - * @param iIndex Zero-based index of the vertex - * @param afOut Output array, size must at least be 3 - * @param iOutBase Start index in the output array - * Receives the vertex normal components in x,y,z order - */ - public final void getNormal(int iIndex, float[] afOut, int iOutBase) { - assert(hasNormals() && - iOutBase + 3 <= afOut.length && - iIndex < this.getNumVertices()); - - iIndex *= 3; - afOut[iOutBase] = this.m_vNormals[iIndex]; - afOut[iOutBase + 1] = this.m_vNormals[iIndex + 1]; - afOut[iOutBase + 2] = this.m_vNormals[iIndex + 2]; - } - - /** - * Provides direct access to the vertex normal array of the mesh - * This is the recommended way of accessing the data. - * - * @return Array of floats, size is numverts * 3. Component ordering - * is xyz. - */ - public final float[] getNormalArray() { - return this.m_vNormals; - } - - /** - * Get a vertex tangent in the mesh - * - * @param iIndex Zero-based index of the vertex - * @param afOut Output array, size must at least be 3 - * Receives the vertex tangent components in x,y,z order - */ - public final void getTangent(int iIndex, float[] afOut) { - assert(hasTangentsAndBitangents() && - afOut.length >= 3 && - iIndex < this.getNumVertices()); - - iIndex *= 3; - afOut[0] = this.m_vTangents[iIndex]; - afOut[1] = this.m_vTangents[iIndex + 1]; - afOut[2] = this.m_vTangents[iIndex + 2]; - } - - /** - * Get a vertex tangent in the mesh - * - * @param iIndex Zero-based index of the vertex - * @param afOut Output array, size must at least be 3 - * @param iOutBase Start index in the output array - * Receives the vertex tangent components in x,y,z order - */ - public final void getTangent(int iIndex, float[] afOut, int iOutBase) { - assert(hasTangentsAndBitangents() && - iOutBase + 3 <= afOut.length && - iIndex < this.getNumVertices()); - - iIndex *= 3; - afOut[iOutBase] = this.m_vTangents[iIndex]; - afOut[iOutBase + 1] = this.m_vTangents[iIndex + 1]; - afOut[iOutBase + 2] = this.m_vTangents[iIndex + 2]; - } - - /** - * Provides direct access to the vertex tangent array of the mesh - * This is the recommended way of accessing the data. - * - * @return Array of floats, size is numverts * 3. Component ordering - * is xyz. - */ - public final float[] getTangentArray() { - return this.m_vTangents; - } - - /** - * Get a vertex bitangent in the mesh - * - * @param iIndex Zero-based index of the vertex - * @param afOut Output array, size must at least be 3 - * Receives the vertex bitangent components in x,y,z order - */ - public final void getBitangent(int iIndex, float[] afOut) { - assert(hasTangentsAndBitangents() && - afOut.length >= 3 && 3 >= afOut.length && - iIndex < this.getNumVertices()); - - iIndex *= 3; - afOut[0] = this.m_vBitangents[iIndex]; - afOut[1] = this.m_vBitangents[iIndex + 1]; - afOut[2] = this.m_vBitangents[iIndex + 2]; - } - - /** - * Get a vertex bitangent in the mesh - * - * @param iIndex Zero-based index of the vertex - * @param afOut Output array, size must at least be 3 - * @param iOutBase Start index in the output array - * Receives the vertex bitangent components in x,y,z order - */ - public final void getBitangent(int iIndex, float[] afOut, int iOutBase) { - assert(hasTangentsAndBitangents() && - iOutBase + 3 <= afOut.length && - iIndex < this.getNumVertices()); - - iIndex *= 3; - afOut[iOutBase] = this.m_vBitangents[iIndex]; - afOut[iOutBase + 1] = this.m_vBitangents[iIndex + 1]; - afOut[iOutBase + 2] = this.m_vBitangents[iIndex + 2]; - } - - /** - * Provides direct access to the vertex bitangent array of the mesh - * This is the recommended way of accessing the data. - * - * @return Array of floats, size is numverts * 3. Component ordering - * is xyz. - */ - public final float[] getBitangentArray() { - assert(this.hasTangentsAndBitangents()); - return this.m_vBitangents; - } - - - /** - * Get a vertex texture coordinate in the mesh - * - * @param channel Texture coordinate channel - * @param iIndex Zero-based index of the vertex - * @param afOut Output array, size must at least be equal to the value - * getNumUVComponents returns for channel - * Receives the vertex texture coordinate, components are in u,v,w order - */ - public final void getTexCoord(int channel, int iIndex, float[] afOut) { - assert(this.hasUVCoords(channel) && afOut.length >= 4 && - 4 >= afOut.length && iIndex < this.getNumVertices()); - - iIndex *= this.m_aiNumUVComponents[channel]; - for (int i = 0; i < this.m_aiNumUVComponents[channel]; ++i) { - afOut[i] = this.m_avUVs[channel][iIndex + i]; - } - } - - /** - * Get a vertex texture coordinate in the mesh - * - * @param channel Texture coordinate channel - * @param iIndex Zero-based index of the vertex - * @param afOut Output array, size must at least be equal to the value - * getNumUVComponents returns for channel - * Receives the vertex texture coordinate, components are in u,v,w order - * @param iOutBase Start index in the output array - */ - public final void getTexCoord(int channel, int iIndex, float[] afOut, int iOutBase) { - assert(this.hasUVCoords(channel) && afOut.length >= 4 && - iOutBase + 4 <= afOut.length && iIndex < this.getNumVertices()); - - iIndex *= this.m_aiNumUVComponents[channel]; - for (int i = 0; i < this.m_aiNumUVComponents[channel]; ++i) { - afOut[i + iOutBase] = this.m_avUVs[channel][iIndex + i]; - } - } - - /** - * Provides direct access to a texture coordinate channel of the mesh - * This is the recommended way of accessing the data. - * - * @return Array of floats, size is numverts * getNumUVComponents - * (channel). Component ordering is uvw. - */ - public final float[] getTexCoordArray(int channel) { - assert(channel < MAX_NUMBER_OF_TEXTURECOORDS); - return this.m_avUVs[channel]; - } - - /** - * Get a vertex color in the mesh - * - * @param channel Vertex color channel - * @param iIndex Zero-based index of the vertex - * @param afOut Output array, size must at least be 4 - * Receives the vertex color components in r,g,b,a order - */ - public final void getVertexColor(int channel, int iIndex, float[] afOut) { - assert(this.hasVertexColors(channel) && afOut.length >= 4 && - iIndex < this.getNumVertices()); - - iIndex *= 4; // RGBA order - afOut[0] = this.m_avColors[channel][iIndex]; - afOut[1] = this.m_avColors[channel][iIndex + 1]; - afOut[2] = this.m_avColors[channel][iIndex + 2]; - afOut[3] = this.m_avColors[channel][iIndex + 3]; - } - - /** - * Get a vertex color as java.awt.Color in the mesh - * - * @param channel Vertex color channel - * @param iIndex Zero-based index of the vertex - * @return Vertex color value packed as java.awt.Color - */ - public final Color getVertexColor(int channel, int iIndex) { - - float[] afColor = new float[4]; - this.getVertexColor(channel, iIndex, afColor); - return new Color(afColor[0], afColor[1], afColor[2], afColor[3]); - } - - /** - * Get a vertex color in the mesh - * - * @param channel Vertex color channel - * @param iIndex Zero-based index of the vertex - * @param afOut Output array, size must at least be 4 - * Receives the vertex color components in r,g,b,a order - * @param iOutBase Start index in the output array - */ - public final void getVertexColor(int channel, int iIndex, float[] afOut, int iOutBase) { - assert(this.hasVertexColors(channel) && afOut.length >= 4 && - iOutBase + 4 <= afOut.length && iIndex < this.getNumVertices()); - - iIndex *= 4; // RGBA order - afOut[iOutBase] = this.m_avColors[channel][iIndex]; - afOut[iOutBase + 1] = this.m_avColors[channel][iIndex + 1]; - afOut[iOutBase + 2] = this.m_avColors[channel][iIndex + 2]; - afOut[iOutBase + 3] = this.m_avColors[channel][iIndex + 3]; - } - - /** - * Provides direct access to the vertex bitangent array of the mesh - * This is the recommended way of accessing the data. - * - * @return Array of floats, size is numverts * 3. Component ordering - * is xyz. - */ - public final float[] getVertexColorArray(int channel) { - assert(channel < MAX_NUMBER_OF_COLOR_SETS); - return this.m_avColors[channel]; - } - - - /** - * Get a single face of the mesh - * - * @param iIndex Index of the face. Must be smaller than the value - * returned by getNumFaces() - * @param aiOut Output array, size must at least be 3 - */ - public final void getFace(int iIndex, int[] aiOut) { - assert(aiOut.length >= 3); - iIndex *= 3; - aiOut[0] = this.m_vFaces[iIndex]; - aiOut[1] = this.m_vFaces[iIndex + 1]; - aiOut[2] = this.m_vFaces[iIndex + 2]; - } - - /** - * Get a single face of the mesh - * - * @param iIndex Index of the face. Must be smaller than the value - * returned by getNumFaces() - * @param aiOut Output array, size must at least be 3 - * @param iOutBase Start index in the output array - */ - public final void getFace(int iIndex, int[] aiOut, int iOutBase) { - assert(aiOut.length >= 3); - iIndex *= 3; - aiOut[0] = this.m_vFaces[iIndex]; - aiOut[iOutBase + 1] = this.m_vFaces[iIndex + 1]; - aiOut[iOutBase + 2] = this.m_vFaces[iIndex + 2]; - } - - - /** - * Provides direct access to the face array of the mesh - * This is the recommended way of accessing the data. - * - * @return Array of ints, size is numfaces * 3. Each face consists - * of three indices (higher level polygons are automatically - * triangulated by the library) - */ - public final int[] getFaceArray() { - return this.m_vFaces; - } - - - /** - * Provides access to the array of all bones influencing this - * mesh. - * - * @return Bone array - */ - public final Bone[] getBonesArray() { - assert (null != this.m_vBones); - return this.m_vBones; - } - - - /** - * Get a bone influencing the mesh - * - * @param i Index of the bone - * @return Bone - */ - public final Bone getBone(int i) { - assert (null != this.m_vBones && i < this.m_vBones.length); - return this.m_vBones[i]; - } -} diff --git a/port/jAssimp/src/assimp/NativeException.java b/port/jAssimp/src/assimp/NativeException.java deleted file mode 100644 index db81c4d3e..000000000 --- a/port/jAssimp/src/assimp/NativeException.java +++ /dev/null @@ -1,57 +0,0 @@ -/* ---------------------------------------------------------------------------- -Open Asset Import Library (ASSIMP) ---------------------------------------------------------------------------- - -Copyright (c) 2006-2008, ASSIMP Development Team - -All rights reserved. - -Redistribution and use of this software in source and binary forms, -with or without modification, are permitted provided that the following -conditions are met: - -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. - -* Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the - following disclaimer in the documentation and/or other - materials provided with the distribution. - -* Neither the name of the ASSIMP team, nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior - written permission of the ASSIMP Development Team. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------------- -*/ - -package assimp; - -/** - * Exception class used by jAssimp. It is thrown whenever an unknown error - * occurs in the JNI bridge between the native Assimp library and the Java VM. - */ -public class NativeException extends Exception { - - public NativeException() { - super("Unknown error"); - } - - public NativeException(String sz) { - super(sz); - } -} diff --git a/port/jAssimp/src/assimp/Node.java b/port/jAssimp/src/assimp/Node.java deleted file mode 100644 index 10079e933..000000000 --- a/port/jAssimp/src/assimp/Node.java +++ /dev/null @@ -1,217 +0,0 @@ -/* ---------------------------------------------------------------------------- -Open Asset Import Library (ASSIMP) ---------------------------------------------------------------------------- - -Copyright (c) 2006-2008, ASSIMP Development Team - -All rights reserved. - -Redistribution and use of this software in source and binary forms, -with or without modification, are permitted provided that the following -conditions are met: - -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. - -* Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the - following disclaimer in the documentation and/or other - materials provided with the distribution. - -* Neither the name of the ASSIMP team, nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior - written permission of the ASSIMP Development Team. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------------- -*/ - - -package assimp; - -import java.util.Vector; - - -/** - * A node in the imported hierarchy. - *

- * Each node has name, a parent node (except for the root node), - * a transformation relative to its parent and possibly several child nodes. - * Simple file formats don't support hierarchical structures, for these formats - * the imported scene does consist of only a single root node with no childs. - * - * @author Aramis (Alexander Gessler) - * @version 1.0 - */ -public class Node { - - - /** - * List of all meshes of this node. - * The array contains indices into the Scene's mesh list - */ - private int[] meshIndices = null; - - - /** - * Local transformation matrix of the node - * Stored in row-major order. - */ - private Matrix4x4 nodeTransform = null; - - - /** - * Name of the node - * The name might be empty (length of zero) but all nodes which - * need to be accessed afterwards by bones or anims are usually named. - */ - private String name = ""; - - - /** - * List of all child nodes - * May be empty - */ - private Node[] children = null; - - - /** - * Parent node or null if we're the root node of the scene - */ - private Node parent = null; - - /** - * Constructs a new node and initializes it - * @param parentNode Parent node or null for root nodes - */ - public Node(Node parentNode) { - - this.parent = parentNode; - } - - - /** - * Returns the number of meshes of this node - * @return Number of meshes - */ - public final int getNumMeshes() { - return meshIndices.length; - } - - /** - * Get a list of all meshes of this node - * - * @return Array containing indices into the Scene's mesh list. - * If there are no meshes, the array is null - */ - public final int[] getMeshes() { - return meshIndices; - } - - - /** - * Get the local transformation matrix of the node in row-major - * order: - * - * a1 a2 a3 a4 (the translational part of the matrix is stored - * b1 b2 b3 b4 in (a4|b4|c4)) - * c1 c2 c3 c4 - * d1 d2 d3 d4 - * - * - * @return Row-major transformation matrix - */ - public final Matrix4x4 getTransformRowMajor() { - return nodeTransform; - } - - - /** - * Get the local transformation matrix of the node in column-major - * order: - * - * a1 b1 c1 d1 (the translational part of the matrix is stored - * a2 b2 c2 d2 in (a4|b4|c4)) - * a3 b3 c3 d3 - * a4 b4 c4 d4 - * - * - * @return Column-major transformation matrix - */ - public final Matrix4x4 getTransformColumnMajor() { - - Matrix4x4 m = new Matrix4x4( nodeTransform ); - return m.transpose(); - } - - - private native int _NativeInitMembers(long context, int nodeIndex); - - - /** - * Get the name of the node. - * The name might be empty (length of zero) but all nodes which - * need to be accessed afterwards by bones or anims are usually named. - * - * @return Node name - */ - public final String getName() { - return name; - } - - - /** - * Get the list of all child nodes of *this* node - * @return List of children. May be empty. - */ - public final Node[] getChildren() { - return children; - } - - /** - * Get the number of child nodes of *this* node - * @return May be 0 - */ - public final int getNumChildren() { - return children.length; - } - - /** - * Get the parent node of the node - * @return Parent node - */ - public final Node getParent() { - return parent; - } - - - /** - * Searches this node and recursively all sub nodes - * for a node with a specific name - * @param _name Name of the node to search for - * @return Either a reference to the node or null - * if no node with this name was found. - */ - public final Node findNode(String _name) { - - if (_name.equals(name))return this; - for (Node node : children) { - Node out; - if (null != (out = node.findNode(_name)))return out; - } - return null; - } -} diff --git a/port/jAssimp/src/assimp/PostProcessStep.java b/port/jAssimp/src/assimp/PostProcessStep.java deleted file mode 100644 index 288030f56..000000000 --- a/port/jAssimp/src/assimp/PostProcessStep.java +++ /dev/null @@ -1,252 +0,0 @@ -/* ---------------------------------------------------------------------------- -Open Asset Import Library (ASSIMP) ---------------------------------------------------------------------------- - -Copyright (c) 2006-2008, ASSIMP Development Team - -All rights reserved. - -Redistribution and use of this software in source and binary forms, -with or without modification, are permitted provided that the following -conditions are met: - -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. - -* Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the - following disclaimer in the documentation and/or other - materials provided with the distribution. - -* Neither the name of the ASSIMP team, nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior - written permission of the ASSIMP Development Team. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------------- -*/ - - -package assimp; - -/** - * Enumeration class that defines postprocess steps that can be executed on a model - * after it has been loaded. All PPSteps are implemented in C++, so their performance - * is awesome :-) (*duck*) - * - * @author Aramis (Alexander Gessler) - * @version 1.0 - */ -public class PostProcessStep { - - /** - * Default vertex split limit for the SplitLargeMeshes process - */ - public static final int DEFAULT_VERTEX_SPLIT_LIMIT = 1000000; - - /** - * Default triangle split limit for the SplitLargeMeshes process - */ - public static final int DEFAULT_TRIANGLE_SPLIT_LIMIT = 1000000; - - /** - * Default bone weight limit for the LimitBoneWeight process - */ - public static final int DEFAULT_BONE_WEIGHT_LIMIT = 4; - - - private static int s_iVertexSplitLimit = DEFAULT_VERTEX_SPLIT_LIMIT; - private static int s_iTriangleSplitLimit = DEFAULT_TRIANGLE_SPLIT_LIMIT; - private static int s_iBoneWeightLimit = DEFAULT_BONE_WEIGHT_LIMIT; - - /** - * Identifies and joins identical vertex data sets within all imported - * meshes. After this step is run each mesh does contain only unique - * vertices anymore, so a vertex is possibly used by multiple faces. - * You propably always want to use this post processing step. - */ - public static final PostProcessStep JoinIdenticalVertices = - new PostProcessStep("JoinIdenticalVertices"); - - - /** - * Splits large meshes into submeshes - * This is quite useful for realtime rendering where the number of - * vertices is usually limited by the video driver. - *

- * The split limits can be set through SetVertexSplitLimit() and - * SetTriangleSplitLimit(). The default values are - * DEFAULT_VERTEX_SPLIT_LIMIT and - * DEFAULT_TRIANGLE_SPLIT_LIMIT - */ - public static final PostProcessStep SplitLargeMeshes = - new PostProcessStep("SplitLargeMeshes"); - - - /** - * Omits all normals found in the file. This can be used together - * with either the GenSmoothNormals or the - * GenFaceNormal step to force the recomputation of the - * normals. If none of the two flags is specified, the output mesh - * won't have normals - */ - public static final PostProcessStep KillNormals = - new PostProcessStep("KillNormals"); - - - /** - * Generates smooth normals for all vertices in the mesh. This is - * ignored if normals are already existing. This step may not be used - * together with GenFaceNormals - */ - public static final PostProcessStep GenSmoothNormals = - new PostProcessStep("GenSmoothNormals"); - - - /** - * Generates normals for all faces of all meshes. The normals are - * shared between the three vertices of a face. This is ignored - * if normals are already existing. This step may not be used together - * with GenSmoothNormals - */ - public static final PostProcessStep GenFaceNormals = - new PostProcessStep("GenFaceNormals"); - - - /** - * Calculates the tangents and bitangents for the imported meshes. Does - * nothing if a mesh does not have normals. You might want this post - * processing step to be executed if you plan to use tangent space - * calculations such as normal mapping applied to the meshes. - */ - public static final PostProcessStep CalcTangentSpace = - new PostProcessStep("CalcTangentSpace"); - - - /** - * Converts all the imported data to a left-handed coordinate space - * such as the DirectX coordinate system. By default the data is - * returned in a right-handed coordinate space which for example - * OpenGL prefers. In this space, +X points to the right, +Y points towards - * the viewer and and +Z points upwards. In the DirectX coordinate space - * +X points to the right, +Y points upwards and +Z points away from - * the viewer. - */ - public static final PostProcessStep ConvertToLeftHanded = - new PostProcessStep("ConvertToLeftHanded "); - - - /** - * Removes the node graph and pretransforms all vertices with the local - * transformation matrices of their nodes. The output scene does still - * contain nodes, however, there is only a root node with childs, each - * one referencing only one mesh, each mesh referencing one material. - * For rendering, you can simply render all meshes in order, you don't - * need to pay attention to local transformations and the node hierarchy. - * Animations are removed during this step. - */ - public static final PostProcessStep PreTransformVertices = - new PostProcessStep("PreTransformVertices"); - - /** - * Limits the number of bones simultaneously affecting a single vertex - * to a maximum value. If any vertex is affected by more than that number - * of bones, the least important vertex weights are removed and the remaining - * vertex weights are renormalized so that the weights still sum up to 1. - * The default bone weight limit is 4 (DEFAULT_BONE_WEIGHT_LIMIT). - * However, you can use setBoneWeightLimit() to supply your own limit. - * If you intend to perform the skinning in hardware, this post processing step - * might be of interest for you. - */ - public static final PostProcessStep LimitBoneWeights = - new PostProcessStep("LimitBoneWeights"); - - /** - * Validates the aiScene data structure before it is returned. - * This makes sure that all indices are valid, all animations and - * bones are linked correctly, all material are correct and so on ... - * This is primarily intended for our internal debugging stuff, - * however, it could be of interest for applications like editors - * where stability is more important than loading performance. - */ - public static final PostProcessStep ValidateDataStructure = - new PostProcessStep("ValidateDataStructure"); - - - /** - * Reorders triangles for vertex cache locality and thus better performance. - * The step tries to improve the ACMR (average post-transform vertex cache - * miss ratio) for all meshes. The step runs in O(n) and is roughly - * basing on the algorithm described in this paper: - * http://www.cs.princeton.edu/gfx/pubs/Sander_2007_%3ETR/tipsy.pdf - */ - public static final PostProcessStep ImproveVertexLocality = - new PostProcessStep("ImproveVertexLocality"); - - - /** - * Searches for redundant materials and removes them. - *

- * This is especially useful in combination with the PretransformVertices - * and OptimizeGraph steps. Both steps join small meshes, but they - * can't do that if two meshes have different materials. - */ - public static final PostProcessStep RemoveRedundantMaterials = - new PostProcessStep("RemoveRedundantMaterials"); - - /** - * This step tries to determine which meshes have normal vectors - * that are facing inwards. The algorithm is simple but effective: - * the bounding box of all vertices + their normals is compared against - * the volume of the bounding box of all vertices without their normals. - * This works well for most objects, problems might occur with planar - * surfaces. However, the step tries to filter such cases. - * The step inverts all infacing normals. Generally it is recommended - * to enable this step, although the result is not always correct. - */ - public static final PostProcessStep FixInfacingNormals = - new PostProcessStep("FixInfacingNormals"); - - /** - * This step performs some optimizations on the node graph. - *

- * It is incompatible to the PreTransformVertices-Step. Some configuration - * options exist, see aiConfig.h for more details. - * Generally, two actions are available:
- * 1. Remove animation nodes and data from the scene. This allows other - * steps for further optimizations.
- * 2. Combine very small meshes to larger ones. Only if the meshes - * are used by the same node or by nodes on the same hierarchy (with - * equal local transformations). Unlike PreTransformVertices, the - * OptimizeGraph-step doesn't transform vertices from one space - * another.
- * 3. Remove hierarchy levels
- *

- * It is recommended to have this step run with the default configuration. - */ - public static final PostProcessStep OptimizeGraph = - new PostProcessStep("OptimizeGraph"); - - private final String myName; // for debug only - - private PostProcessStep(String name) { - myName = name; - } - - public String toString() { - return myName; - } -} diff --git a/port/jAssimp/src/assimp/Quaternion.java b/port/jAssimp/src/assimp/Quaternion.java deleted file mode 100644 index 288cf95af..000000000 --- a/port/jAssimp/src/assimp/Quaternion.java +++ /dev/null @@ -1,147 +0,0 @@ -/* ---------------------------------------------------------------------------- -Open Asset Import Library (ASSIMP) ---------------------------------------------------------------------------- - -Copyright (c) 2006-2008, ASSIMP Development Team - -All rights reserved. - -Redistribution and use of this software in source and binary forms, -with or without modification, are permitted provided that the following -conditions are met: - -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. - -* Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the - following disclaimer in the documentation and/or other - materials provided with the distribution. - -* Neither the name of the ASSIMP team, nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior - written permission of the ASSIMP Development Team. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------------- -*/ - -package assimp; - - -/** - * Represents a rotation quaternion - * - * @author Aramis (Alexander Gessler) - * @version 1.0 - */ -public class Quaternion { - - public float x, y, z, w; - - - /** - * Construction from euler angles - * - * @param fPitch Rotation around the x axis - * @param fYaw Rotation around the y axis - * @param fRoll Rotation around the z axis - */ - public Quaternion(float fPitch, float fYaw, float fRoll) { - float fSinPitch = (float) Math.sin(fPitch * 0.5F); - float fCosPitch = (float) Math.cos(fPitch * 0.5F); - float fSinYaw = (float) Math.sin(fYaw * 0.5F); - float fCosYaw = (float) Math.cos(fYaw * 0.5F); - float fSinRoll = (float) Math.sin(fRoll * 0.5F); - float fCosRoll = (float) Math.cos(fRoll * 0.5F); - float fCosPitchCosYaw = (fCosPitch * fCosYaw); - float fSinPitchSinYaw = (fSinPitch * fSinYaw); - x = fSinRoll * fCosPitchCosYaw - fCosRoll * fSinPitchSinYaw; - y = fCosRoll * fSinPitch * fCosYaw + fSinRoll * fCosPitch * fSinYaw; - z = fCosRoll * fCosPitch * fSinYaw - fSinRoll * fSinPitch * fCosYaw; - w = fCosRoll * fCosPitchCosYaw + fSinRoll * fSinPitchSinYaw; - } - - /** - * Construction from an existing rotation matrix - * - * @param pRotMatrix Matrix to be converted to a quaternion - */ - public Quaternion(Matrix3x3 pRotMatrix) { - - float t = 1 + pRotMatrix.coeff[0] + pRotMatrix.coeff[4] + pRotMatrix.coeff[8]; - - // large enough - if (t > 0.00001f) { - float s = (float) Math.sqrt(t) * 2.0f; - x = (pRotMatrix.coeff[8] - pRotMatrix.coeff[7]) / s; - y = (pRotMatrix.coeff[6] - pRotMatrix.coeff[2]) / s; - z = (pRotMatrix.coeff[1] - pRotMatrix.coeff[3]) / s; - w = 0.25f * s; - } // else we have to check several cases - else if (pRotMatrix.coeff[0] > pRotMatrix.coeff[4] && - pRotMatrix.coeff[0] > pRotMatrix.coeff[8]) { - // Column 0: - float s = (float) Math.sqrt(1.0f + pRotMatrix.coeff[0] - - pRotMatrix.coeff[4] - pRotMatrix.coeff[8]) * 2.0f; - x = -0.25f * s; - y = (pRotMatrix.coeff[1] + pRotMatrix.coeff[3]) / s; - z = (pRotMatrix.coeff[6] + pRotMatrix.coeff[2]) / s; - w = (pRotMatrix.coeff[7] - pRotMatrix.coeff[5]) / s; - } - else if (pRotMatrix.coeff[4] > pRotMatrix.coeff[8]) { - // Column 1: - float s = (float) Math.sqrt(1.0f + pRotMatrix.coeff[4] - - pRotMatrix.coeff[0] - pRotMatrix.coeff[8]) * 2.0f; - x = (pRotMatrix.coeff[1] + pRotMatrix.coeff[3]) / s; - y = -0.25f * s; - z = (pRotMatrix.coeff[5] + pRotMatrix.coeff[7]) / s; - w = (pRotMatrix.coeff[2] - pRotMatrix.coeff[6]) / s; - } - else { - // Column 2: - float s = (float) Math.sqrt(1.0f + pRotMatrix.coeff[8] - - pRotMatrix.coeff[0] - pRotMatrix.coeff[4]) * 2.0f; - x = (pRotMatrix.coeff[6] + pRotMatrix.coeff[2]) / s; - y = (pRotMatrix.coeff[5] + pRotMatrix.coeff[7]) / s; - z = -0.25f * s; - w = (pRotMatrix.coeff[3] - pRotMatrix.coeff[1]) / s; - } - } - - - /** - * Convert the quaternion to a rotation matrix - * - * @return 3x3 rotation matrix - */ - public Matrix3x3 getMatrix() { - - Matrix3x3 resMatrix = new Matrix3x3(); - resMatrix.coeff[0] = 1.0f - 2.0f * (y * y + z * z); - resMatrix.coeff[1] = 2.0f * (x * y + z * w); - resMatrix.coeff[2] = 2.0f * (x * z - y * w); - resMatrix.coeff[3] = 2.0f * (x * y - z * w); - resMatrix.coeff[4] = 1.0f - 2.0f * (x * x + z * z); - resMatrix.coeff[5] = 2.0f * (y * z + x * w); - resMatrix.coeff[6] = 2.0f * (x * z + y * w); - resMatrix.coeff[7] = 2.0f * (y * z - x * w); - resMatrix.coeff[8] = 1.0f - 2.0f * (x * x + y * y); - - return resMatrix; - } - -} diff --git a/port/jAssimp/src/assimp/Scene.java b/port/jAssimp/src/assimp/Scene.java deleted file mode 100644 index 40840a742..000000000 --- a/port/jAssimp/src/assimp/Scene.java +++ /dev/null @@ -1,185 +0,0 @@ -/* ---------------------------------------------------------------------------- -Open Asset Import Library (ASSIMP) ---------------------------------------------------------------------------- - -Copyright (c) 2006-2008, ASSIMP Development Team - -All rights reserved. - -Redistribution and use of this software in source and binary forms, -with or without modification, are permitted provided that the following -conditions are met: - -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. - -* Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the - following disclaimer in the documentation and/or other - materials provided with the distribution. - -* Neither the name of the ASSIMP team, nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior - written permission of the ASSIMP Development Team. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------------- -*/ - - -package assimp; - -/** - * Represents the asset data that has been loaded. A scene consists of - * multiple meshes, animations, materials and embedded textures. - * And it defines the scenegraph of the asset (the hierarchy of all - * meshes, ...). - *

- * An instance of this class is returned by Importer.readFile(). - * - * @author Aramis (Alexander Gessler) - * @version 1.0 - */ -public class Scene { - - private Mesh[] m_vMeshes = null; - private Texture[] m_vTextures = null; - private Material[] m_vMaterials = null; - private Animation[] m_vAnimations = null; - private Node m_rootNode = null; - private Importer imp = null; - private int flags = 0; - - private Scene() { - } - - protected Scene(Importer imp) { - this.imp = imp; - } - - public final Importer getImporter() { - return this.imp; - } - - - /** - * Specifies that no full model but only an animation skeleton has been - * imported. There are no materials in this case. There are no - * textures in this case. But there is a node graph, animation channels - * and propably meshes with bones. - */ - public static final int FLAG_ANIM_SKELETON_ONLY = 0x1; - - - /** - * Get the scene flags. This can be any combination of the - * FLAG_XXX constants defined int this scope - * @return Scene flags. - */ - public final int getFlags() { - return flags; - } - - /** - * Get the mesh list - * - * @return mesh list - */ - public final Mesh[] getMeshes() { - return m_vMeshes; - } - - /** - * Get the number of meshes in the scene - * @return this value can be 0 if the ANIMATION_SKELETON_ONLY - * flag is set. - */ - public final int getNumMeshes() { - return m_vMeshes.length; - } - - /** - * Get a mesh from the scene - * @param i Index of the mesh - * @return scene.mesh[i] - */ - public final Mesh getMesh(int i) { - assert(i < m_vMeshes.length); - return m_vMeshes[i]; - } - - /** - * Get the texture list - * - * @return Texture list - */ - public final Texture[] getTextures() { - return m_vTextures; - } - - /** - * Get the number of textures in the scene - * @return this value is often 0 since most texture's arent' embedded - */ - public int getNumTextures() { - return m_vTextures.length; - } - - /** - * Get an embedded texture from the scene - * @param i Index of the mesh - * @return scene.texture[i] - */ - public final Texture getTexture(int i) { - assert(i < m_vTextures.length); - return m_vTextures[i]; - } - - /** - * Get the material list - * - * @return Material list - */ - public final Material[] getMaterials() { - return m_vMaterials; - } - - /** - * Get the number of animations in the scene - * @return this value could be 0, most models have no animations - */ - public int getNumAnimations() { - return m_vAnimations.length; - } - - /** - * Get the animation list - * - * @return Animation list - */ - public final Animation[] getAnimations() { - return m_vAnimations; - } - - /** - * Get the root node of the scenegraph - * - * @return Root node - */ - public final Node getRootNode() { - return m_rootNode; - } -} diff --git a/port/jAssimp/src/assimp/ShadingMode.java b/port/jAssimp/src/assimp/ShadingMode.java deleted file mode 100644 index 422feb20c..000000000 --- a/port/jAssimp/src/assimp/ShadingMode.java +++ /dev/null @@ -1,118 +0,0 @@ -/* ---------------------------------------------------------------------------- -Open Asset Import Library (ASSIMP) ---------------------------------------------------------------------------- - -Copyright (c) 2006-2008, ASSIMP Development Team - -All rights reserved. - -Redistribution and use of this software in source and binary forms, -with or without modification, are permitted provided that the following -conditions are met: - -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. - -* Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the - following disclaimer in the documentation and/or other - materials provided with the distribution. - -* Neither the name of the ASSIMP team, nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior - written permission of the ASSIMP Development Team. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------------- -*/ - -package assimp; - -/** - * Defines all shading models supported by the library - * - * NOTE: The list of shading modes has been taken from Blender3D. - * See Blender3D documentation for more information. The API does - * not distinguish between "specular" and "diffuse" shaders (thus the - * specular term for diffuse shading models like Oren-Nayar remains - * undefined) - */ -public class ShadingMode { - - private ShadingMode() {} - - /** - * Flat shading. Shading is done on per-face base, - * diffuse only. - */ - public static final int Flat = 0x1; - - /** - * Diffuse gouraud shading. Shading on per-vertex base - */ - public static final int Gouraud = 0x2; - - /** - * Diffuse/Specular Phong-Shading - *

- * Shading is applied on per-pixel base. This is the - * slowest algorithm, but generates the best results. - */ - public static final int Phong = 0x3; - - /** - * Diffuse/Specular Phong-Blinn-Shading - *

- * Shading is applied on per-pixel base. This is a little - * bit faster than phong and in some cases even - * more realistic - */ - public static final int Blinn = 0x4; - - /** - * Toon-Shading per pixel - *

- * Shading is applied on per-pixel base. The output looks - * like a comic. Often combined with edge detection. - */ - public static final int Toon = 0x5; - - /** - * OrenNayar-Shading per pixel - *

- * Extension to standard lambertian shading, taking the - * roughness of the material into account - */ - public static final int OrenNayar = 0x6; - - /** - * Minnaert-Shading per pixel - *

- * Extension to standard lambertian shading, taking the - * "darkness" of the material into account - */ - public static final int Minnaert = 0x7; - - /** - * CookTorrance-Shading per pixel - */ - public static final int CookTorrance = 0x8; - - /** - * No shading at all - */ - public static final int NoShading = 0x9; -} diff --git a/port/jAssimp/src/assimp/Texture.java b/port/jAssimp/src/assimp/Texture.java deleted file mode 100644 index 2f225638b..000000000 --- a/port/jAssimp/src/assimp/Texture.java +++ /dev/null @@ -1,155 +0,0 @@ -/* ---------------------------------------------------------------------------- -Open Asset Import Library (ASSIMP) ---------------------------------------------------------------------------- - -Copyright (c) 2006-2008, ASSIMP Development Team - -All rights reserved. - -Redistribution and use of this software in source and binary forms, -with or without modification, are permitted provided that the following -conditions are met: - -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. - -* Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the - following disclaimer in the documentation and/or other - materials provided with the distribution. - -* Neither the name of the ASSIMP team, nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior - written permission of the ASSIMP Development Team. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------------- -*/ - - -package assimp; - -import java.awt.*; -import java.awt.image.BufferedImage; - -/** - * Represents an embedded texture. Sometimes textures are not referenced - * with a path, instead they are directly embedded into the model file. - * Example file formats doing this include MDL3, MDL5 and MDL7 (3D GameStudio). - * Embedded textures are converted to an array of color values (RGBA). - *

- * Compressed textures (textures that are stored in a format like png or jpg) - * are represented by the class. - * - * @author Aramis (Alexander Gessler) - * @version 1.0 - */ -public class Texture { - - protected int width = 0; - protected int height = 0; - protected int needAlpha = 0xffffffff; - - protected Object data = null; - - - /** - * Retrieve the height of the texture image - * - * @return Height, in pixels - */ - public int getHeight() { - return height; - } - - /** - * Retrieve the width of the texture image - * - * @return Width, in pixels - */ - public int getWidth() { - return width; - } - - - /** - * Returns whether the texture uses its alpha channel - * @return true if at least one pixel - * has an alpha value below 0xFF. - */ - public boolean hasAlphaChannel() { - - // already computed? - if (0xffffffff == needAlpha && null != data) { - - Color[] clr = getColorArray(); - for (Color c : clr) { - if (c.getAlpha() < 255) { - needAlpha = 1; - return true; - } - } - needAlpha = 0; - return false; - } - return 0x1 == needAlpha; - } - - /** - * Get the color at a given position of the texture - * - * @param x X coordinate, zero based - * @param y Y coordinate, zero based - * @return Color at this position - */ - public Color getPixel(int x, int y) { - - assert(x < width && y < height); - return ((Color[]) data)[y * width + x]; - } - - /** - * Get a pointer to the color buffer of the texture - * - * @return Array of java.awt.Color, size: width * height - */ - public Color[] getColorArray() { - return (Color[]) data; - } - - - /** - * Convert the texture into a java.awt.BufferedImage - * @return java.awt.BufferedImage object containing - * a copy of the texture image. The texture is a ARGB texture if - * an alpha channel is required, otehrwise RGB is used as format. - */ - public BufferedImage convertToImage() { - - BufferedImage buf = new BufferedImage(width,height, hasAlphaChannel() - ? BufferedImage.TYPE_INT_ARGB : BufferedImage.TYPE_INT_RGB); - - int[] aiColorBuffer = new int[width*height]; - Color[] clr = getColorArray(); - - for (int i = 0; i < width*height;++i) { - aiColorBuffer[i] = clr[i].getRGB(); - } - - buf.setRGB(0,0,width,height,aiColorBuffer,0,width*4); - return buf; - } -} diff --git a/port/jAssimp/src/assimp/TextureMapMode.java b/port/jAssimp/src/assimp/TextureMapMode.java deleted file mode 100644 index 1b18d09e3..000000000 --- a/port/jAssimp/src/assimp/TextureMapMode.java +++ /dev/null @@ -1,66 +0,0 @@ -/* ---------------------------------------------------------------------------- -Open Asset Import Library (ASSIMP) ---------------------------------------------------------------------------- - -Copyright (c) 2006-2008, ASSIMP Development Team - -All rights reserved. - -Redistribution and use of this software in source and binary forms, -with or without modification, are permitted provided that the following -conditions are met: - -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. - -* Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the - following disclaimer in the documentation and/or other - materials provided with the distribution. - -* Neither the name of the ASSIMP team, nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior - written permission of the ASSIMP Development Team. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------------- -*/ - -package assimp; - -/** - * Defines how texture coordinates ! ElemOf [0 ... 1] are handled. - * - * This corresponds to the native aiTextureMapMode enum. - * - * @author Alexander Gessler (Aramis) - */ -public class TextureMapMode { - - /** A texture coordinate u|v is translated to u%1|v%1 - */ - public static final int Wrap = 0x0; - - /** Texture coordinates outside the area formed by 1|1 and 0|0 - * are clamped to the nearest valid value on an axis - */ - public static final int Clamp = 0x1; - - /** A texture coordinate u|v becomes u%1|v%1 if (u-(u%1))%2 is zero and - * 1-(u%1)|1-(v%1) otherwise - */ - public static final int Mirror = 0x2; -} diff --git a/port/jAssimp/src/assimp/TextureOp.java b/port/jAssimp/src/assimp/TextureOp.java deleted file mode 100644 index f08df043c..000000000 --- a/port/jAssimp/src/assimp/TextureOp.java +++ /dev/null @@ -1,71 +0,0 @@ -/* ---------------------------------------------------------------------------- -Open Asset Import Library (ASSIMP) ---------------------------------------------------------------------------- - -Copyright (c) 2006-2008, ASSIMP Development Team - -All rights reserved. - -Redistribution and use of this software in source and binary forms, -with or without modification, are permitted provided that the following -conditions are met: - -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. - -* Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the - following disclaimer in the documentation and/or other - materials provided with the distribution. - -* Neither the name of the ASSIMP team, nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior - written permission of the ASSIMP Development Team. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------------- -*/ - -package assimp; - -public class TextureOp { - - private TextureOp() {} - - /** T = T1 * T2 - */ - public static int Add = 0x0; - - /** T = T1 * T2 - */ - public static int Multiply = 0x1; - - /** T = T1 - T2 - */ - public static int Subtract = 0x2; - - /** T = T1 / T2 - */ - public static int Divide = 0x3; - - /** T = (T1 + T2) - (T1 * T2) - */ - public static int SmoothAdd = 0x4; - - /** T = T1 + (T2-0.5) - */ - public static int SignedAdd = 0x5; -} diff --git a/port/jAssimp/src/assimp/test/DumpToFile.java b/port/jAssimp/src/assimp/test/DumpToFile.java deleted file mode 100644 index d23f9180c..000000000 --- a/port/jAssimp/src/assimp/test/DumpToFile.java +++ /dev/null @@ -1,435 +0,0 @@ -/* ---------------------------------------------------------------------------- -Open Asset Import Library (ASSIMP) ---------------------------------------------------------------------------- - -Copyright (c) 2006-2008, ASSIMP Development Team - -All rights reserved. - -Redistribution and use of this software in source and binary forms, -with or without modification, are permitted provided that the following -conditions are met: - -* Redistributions of source code must retain the above - copyright notice, this list of conditions and the - following disclaimer. - -* Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the - following disclaimer in the documentation and/or other - materials provided with the distribution. - -* Neither the name of the ASSIMP team, nor the names of its - contributors may be used to endorse or promote products - derived from this software without specific prior - written permission of the ASSIMP Development Team. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ---------------------------------------------------------------------------- -*/ - - -package assimp.test; - -import assimp.*; - - -import javax.imageio.ImageWriter; -import javax.imageio.ImageIO; -import javax.imageio.stream.ImageOutputStream; -import java.io.FileWriter; -import java.io.IOException; -import java.io.File; -import java.awt.image.BufferedImage; -import java.util.Iterator; - - -/** - * Example class to demonstrate how to use jAssimp to load an asset from - * a file. The Main() method expects two parameters, the first being - * the path to the file to be opened, the second being the output path. - * The class writes a text file with the asset data inside. - */ -public class DumpToFile { - - - /** - * Count all nodes recursively - * - * @param node Current node - * @return Number of nodes - */ - public static int CountNodes(Node node) { - - int ret = 1; - if (0 != node.getNumChildren()) { - for (Node n : node.getChildren()) { - - ret += CountNodes(n); - } - } - return ret; - } - - - /** - * Print all nodes recursively - * - * @param node Current node - * @param stream Output stream - * @param suffix Suffix to all output - * @throws IOException yes ... sometimes ... :-) - */ - public static void PrintNodes(Node node, FileWriter stream, String suffix) throws IOException { - String suffNew = suffix + "\t"; - stream.write(suffix + node.getName() + "\n"); - - // print all meshes - if (0 != node.getNumMeshes()) { - stream.write(suffNew + "Meshes: "); - - for (int i : node.getMeshes()) { - - stream.write(i + " "); - } - stream.write("\n"); - } - - // print all children - if (0 != node.getNumChildren()) { - for (Node n : node.getChildren()) { - - PrintNodes(n, stream, suffNew); - } - } - } - - - /** - * Saves an embedded texture image as TrueVision Targa file - * - * @param texture Texture to be exported - * @param path Output path - */ - public static void SaveTextureToTGA(Texture texture, String path) { - BufferedImage bImg = texture.convertToImage(); - - Iterator writers = ImageIO.getImageWritersBySuffix("tga"); - if (!(writers.hasNext())) { - System.out.println("No writer for TGA file format available"); - return; - } - ImageWriter w = (ImageWriter) (writers.next()); - if (w == null) { - System.out.println("No writer for TGA file format available"); - return; - } - File fo = new File(path); - - try { - - ImageOutputStream ios = ImageIO.createImageOutputStream(fo); - w.setOutput(ios); - w.write(bImg); - - } - catch (IOException ex) { - System.out.println("Failed to write " + path); - return; - } - System.out.println(path + " has been written"); - } - - - /** - * Entry point of the application - * - * @param arguments The first argument is the name of the - * mesh to be opened, the second is te name of the primary output file. - * @throws IOException - */ - public static void main(String[] arguments) throws IOException { - - /* Use output.txt as default output file if none was specified - * However, at least one parameter is expected - */ - if (1 == arguments.length) { - String s = arguments[0]; - arguments = new String[2]; - arguments[0] = s; - arguments[1] = "output.txt"; - } else if (2 != arguments.length) { - System.exit(-5); - } - - int iLen; - if ((iLen = arguments[1].length()) < 4 || - arguments[1].charAt(iLen - 1) != 't' || - arguments[1].charAt(iLen - 2) != 'x' || - arguments[1].charAt(iLen - 3) != 't' || - arguments[1].charAt(iLen - 4) != '.') { - System.out.println("The output path must have .txt as file extension"); - System.exit(-10); - return; - } - - FileWriter stream; - try { - stream = new FileWriter(arguments[1]); - } catch (IOException e) { - e.printStackTrace(); - System.out.println("Unable to open output file"); - System.exit(-15); - return; - } - - /* Try to create an instance of class assimp.Importer. - * The constructor throws an assimp.NativeException exception - * if the native jAssimp library is not available.It must - * be placed in the jar/class directory of the application - */ - Importer imp; - try { - imp = new Importer(); - } catch (NativeException nativeException) { - nativeException.printStackTrace(); - System.out.println("NativeException exception [#1]: " + nativeException.getMessage()); - return; - } - - /* Now setup the correct postprocess steps. Triangulation is - * automatically performed, DX conversion is not necessary, - * However, a few steps are normally useful. Especially - * JoinVertices since it will dramantically reduce the size - * of the output file - */ - imp.addPostProcessStep(PostProcessStep.CalcTangentSpace); - imp.addPostProcessStep(PostProcessStep.GenSmoothNormals); - imp.addPostProcessStep(PostProcessStep.JoinIdenticalVertices); - imp.addPostProcessStep(PostProcessStep.FixInfacingNormals); - - /* Load the asset into memory. Again, a NativeException exception - * could be thrown if an unexpected errors occurs in the - * native interface. If assimp is just unable to load the asset - * null is the return value and no exception is thrown - */ - Scene scene; - try { - scene = imp.readFile(arguments[0]); - } catch (NativeException nativeException) { - nativeException.printStackTrace(); - System.out.println("NativeException exception [#2] :" + nativeException.getMessage()); - return; - } - if (null == scene) { - System.out.println("Unable to load asset: " + arguments[0]); - return; - } - - /* Now iterate through all meshes that have been loaded - */ - if (0 != scene.getNumMeshes()) { - for (Mesh mesh : scene.getMeshes()) { - - stream.write("Mesh\n"); - stream.write("\tNum Vertices: " + mesh.getNumVertices() + "\n"); - stream.write("\tNum Faces: " + mesh.getNumFaces() + "\n"); - stream.write("\tNum Bones: " + mesh.getNumBones() + "\n\n"); - - /* Output all vertices. First get direct access to jAssimp's buffers - */ - float[] positions = mesh.getPositionArray(); - float[] normals = mesh.getNormalArray(); - float[] tangents = mesh.getTangentArray(); - float[] bitangents = mesh.getBitangentArray(); - - float[][] uvs = new float[ Mesh.MAX_NUMBER_OF_TEXTURECOORDS][]; - for (int i = 0; i < Mesh.MAX_NUMBER_OF_TEXTURECOORDS; ++i) { - if (mesh.hasUVCoords((i))) uvs[i] = mesh.getTexCoordArray(i); - else break; - } - - float[][] vcs = new float[ Mesh.MAX_NUMBER_OF_COLOR_SETS][]; - for (int i = 0; i < Mesh.MAX_NUMBER_OF_COLOR_SETS; ++i) { - if (mesh.hasVertexColors((i))) uvs[i] = mesh.getVertexColorArray(i); - else break; - } - - for (int i = 0; i < mesh.getNumVertices(); ++i) { - - // format: "Vertex pos(x|y|z) nor(x|y|z) tan(x|y|) bit(x|y|z)" - // great that this IDE is automatically able to replace + with append ... ;-) - if (mesh.hasPositions()) { - stream.write(new StringBuilder(). - append("\tVertex: pos("). - append(positions[i * 3]).append("|"). - append(positions[i * 3 + 1]).append("|"). - append(positions[i * 3 + 2]).append(")").toString()); - } - if (mesh.hasNormals()) { - stream.write(new StringBuilder(). - append("\tnor("). - append(normals[i * 3]).append("|"). - append(normals[i * 3 + 1]).append("|"). - append(normals[i * 3 + 2]).append(")").toString()); - } - if (mesh.hasTangentsAndBitangents()) { - stream.write(new StringBuilder(). - append("\ttan("). - append(tangents[i * 3]).append("|"). - append(tangents[i * 3 + 1]).append("|"). - append(tangents[i * 3 + 2]).append(")").toString()); - - stream.write(new StringBuilder(). - append("\tbit("). - append(bitangents[i * 3]).append("|"). - append(bitangents[i * 3 + 1]).append("|"). - append(bitangents[i * 3 + 2]).append(")").toString()); - } - - for (int a = 0; i < Mesh.MAX_NUMBER_OF_TEXTURECOORDS; ++a) { - if (!mesh.hasUVCoords((a))) break; - - stream.write(new StringBuilder().append("\tuv").append(a).append("("). - append(uvs[a][i * 3]).append("|"). - append(uvs[a][i * 3 + 1]).append("|"). - append(uvs[a][i * 3 + 2]).append(")").toString()); - } - - for (int a = 0; i < Mesh.MAX_NUMBER_OF_COLOR_SETS; ++a) { - if (!mesh.hasVertexColors((a))) break; - - stream.write(new StringBuilder().append("\tcol").append(a).append("("). - append(vcs[a][i * 4]).append("|"). - append(vcs[a][i * 4 + 1]).append("|"). - append(vcs[a][i * 4 + 2]).append("|"). - append(vcs[a][i * 4 + 3]).append(")").toString()); - } - stream.write("\n"); - } - stream.write("\n"); - - /* Now write a list of all faces in this model - */ - int[] faces = mesh.getFaceArray(); - for (int i = 0; i < mesh.getNumFaces(); ++i) { - stream.write(new StringBuilder().append("\tFace ("). - append(faces[i * 3]).append("|"). - append(faces[i * 3 + 1]).append("|"). - append(faces[i * 3 + 2]).append(")\n").toString()); - } - stream.write("\n"); - - /* Now write a list of all bones of this model - */ - if (mesh.hasBones()) { - Bone[] bones = mesh.getBonesArray(); - for (Bone bone : bones) { - - stream.write("\tBone " + bone.getName() + "\n"); - Bone.Weight[] weights = bone.getWeightsArray(); - for (Bone.Weight weight : weights) { - stream.write("\t\tWeight (" + weight.index + "|" + weight.weight + ")\n"); - } - - } - } - stream.write("\n"); - } - } - - /* Now iterate through all animations that have been loaded - */ - if (0 != scene.getNumAnimations()) { - for (Animation anim : scene.getAnimations()) { - - stream.write("Animation\n" + - "\tName: " + anim.getName() + "\n" + - "\tDuration: " + anim.getDuration() + "\n" + - "\tTicks/s: " + anim.getTicksPerSecond() + "\n" + - "\tNum BoneAnim channels: " + anim.getNumBoneAnimChannels() + "\n\n"); - - /* - * Write all bone animation channels - */ - if (0 != anim.getNumBoneAnimChannels()) { - for (BoneAnim boneAnim : anim.getBoneAnimChannels()) { - - stream.write("\tBoneAnim\n" + - "\tName: " + boneAnim.getName() + "\n" + - "\tNum QuatKeys: " + boneAnim.getNumQuatKeys() + "\n"); - - /* Write all rotation keys - */ - for (BoneAnim.KeyFrame key : boneAnim.getQuatKeys()) { - stream.write("\t\tQuatKey: \n" + - "\t\t\tTicks: " + key.time + "\n" + - "\t\t\tValue: (" + key.value.x + "|" + key.value.y + "|" + - key.value.z + "|" + key.value.w + ")\n"); - } - stream.write("\tNum SclKeys: " + boneAnim.getNumScalingKeys() + "\n"); - - /* Write all scaling keys - */ - for (BoneAnim.KeyFrame key : boneAnim.getScalingKeys()) { - stream.write("\t\tSclKey: \n" + - "\t\t\tTicks: " + key.time + "\n" + - "\t\t\tValue: (" + key.value[0] + "|" + key.value[1] + "|" + - key.value[2] + ")\n"); - } - stream.write("\tNum PosKeys: " + boneAnim.getNumPosKeys() + "\n"); - - /* Write all position keys - */ - for (BoneAnim.KeyFrame key : boneAnim.getPosKeys()) { - stream.write("\t\tPosKey: \n" + - "\t\t\tTicks: " + key.time + "\n" + - "\t\t\tValue: (" + key.value[0] + "|" + key.value[1] + "|" + - key.value[2] + ")\n"); - } - stream.write("\n"); - } - } - } - } - - /* Now print all nodes -> recursively - * - */ - stream.write("Nodegraph\n" + - "\tNodes: " + CountNodes(scene.getRootNode()) + "\n\n"); - PrintNodes(scene.getRootNode(), stream, "\t"); - stream.write("\n"); - - /* Now print all textures .. ehm ... export them to proper TGA files - */ - if (0 != scene.getNumTextures()) { - int i = 0; - for (Texture texture : scene.getTextures()) { - - String path = arguments[1].substring(0, arguments[1].length() - 4) + "_tex" + i++ + ".tga"; - stream.write("Emb. Texture\n" + - "\tExportPath: " + path + "\n\n"); - - SaveTextureToTGA(texture, path); - } - } - - /* Now print all materials - */ - - // close the stream again - stream.close(); - } -}