diff --git a/engine/src/tools/jme3tools/optimize/TextureAtlas.java b/engine/src/tools/jme3tools/optimize/TextureAtlas.java index 2cacce5be..9eba8cdb8 100644 --- a/engine/src/tools/jme3tools/optimize/TextureAtlas.java +++ b/engine/src/tools/jme3tools/optimize/TextureAtlas.java @@ -62,15 +62,25 @@ import java.util.logging.Logger; * freely chosen "map names". The textures are automatically placed on the atlas map and the * image data is stored in a byte array for each map name. Later each map can be retrieved as * a Texture to be used further in materials.
+ *The first map name used is the "master map" that defines a new location on the atlas. Secondary
+ * textures (other map names) have to reference one texture of the master map whose position is used
+ * to position the texture on the secondary map. This is necessary as textures share texture coordinates
+ * and thus need to be placed at the same location on both maps.
+ * The helper methods that work with geometries handle the DiffuseMap or ColorMap as the master map and
+ * additionally handle NormalMap and SpecularMap as secondary maps.
The texture asset key name for each tile as well as its location inside the atlas is stored - * and a texture with an existing key name is not added more than once to the atlas. You can access - * the information for each texture or geometries texture via helper methods.
- *For each texture name you can also adapt a set of texture coordinates of a mesh or geometry + * and a texture with an existing key name is never added more than once to the atlas. You can access + * the information for each texture or geometry texture via helper methods.
+ *For each texture name you can also change the texture coordinates of a mesh or geometry * to point at the new locations of the texture inside the atlas if the geometries texture * exists inside the atlas.
- *Note that models that use texture coordinates out of the 0-1 range (repeating/wrapping textures) + *
Note that models that use texture coordinates outside the 0-1 range (repeating/wrapping textures) * will not work correctly as their new coordinates leak into other parts of the atlas and thus display * other textures instead of repeating the texture.
+ *Also note that textures are not scaled and the atlas needs to be large enough to hold all textures. + * All methods that allow adding textures return false if the texture could not be added due to the + * atlas being full. Furthermore secondary textures (normal, spcular maps etc. have to be the same size + * as the main DiffuseMap texture.
* *Usage examples
* Create one geometry out of several geometries that are loaded from a j3o file: @@ -107,6 +117,7 @@ public class TextureAtlas { private Format format = Format.ABGR8; private Node root; private Map