|
|
@@ -31,6 +31,20 @@
|
|
|
*/
|
|
|
package com.jme3.scene.plugins.blender.textures;
|
|
|
|
|
|
+import java.awt.color.ColorSpace;
|
|
|
+import java.awt.geom.AffineTransform;
|
|
|
+import java.awt.image.AffineTransformOp;
|
|
|
+import java.awt.image.BufferedImage;
|
|
|
+import java.awt.image.ColorConvertOp;
|
|
|
+import java.nio.ByteBuffer;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+import java.util.logging.Level;
|
|
|
+import java.util.logging.Logger;
|
|
|
+
|
|
|
+import jme3tools.converters.ImageToAwt;
|
|
|
+import jme3tools.converters.RGB565;
|
|
|
+
|
|
|
import com.jme3.asset.AssetManager;
|
|
|
import com.jme3.asset.AssetNotFoundException;
|
|
|
import com.jme3.asset.BlenderKey;
|
|
|
@@ -55,16 +69,6 @@ import com.jme3.texture.Texture.MinFilter;
|
|
|
import com.jme3.texture.Texture.WrapMode;
|
|
|
import com.jme3.texture.Texture2D;
|
|
|
import com.jme3.util.BufferUtils;
|
|
|
-import java.awt.color.ColorSpace;
|
|
|
-import java.awt.image.BufferedImage;
|
|
|
-import java.awt.image.ColorConvertOp;
|
|
|
-import java.nio.ByteBuffer;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.List;
|
|
|
-import java.util.logging.Level;
|
|
|
-import java.util.logging.Logger;
|
|
|
-import jme3tools.converters.ImageToAwt;
|
|
|
-import jme3tools.converters.RGB565;
|
|
|
|
|
|
/**
|
|
|
* A class that is used in texture calculations.
|
|
|
@@ -192,6 +196,13 @@ public class TextureHelper extends AbstractBlenderHelper {
|
|
|
*/
|
|
|
public Image convertToNormalMapTexture(Image source, float strengthFactor) {
|
|
|
BufferedImage sourceImage = ImageToAwt.convert(source, false, false, 0);
|
|
|
+
|
|
|
+ // flip the image because the result image is upside-down without this operation
|
|
|
+ AffineTransform tx = AffineTransform.getScaleInstance(1, -1);
|
|
|
+ tx.translate(0, -sourceImage.getHeight(null));
|
|
|
+ AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_NEAREST_NEIGHBOR);
|
|
|
+ sourceImage = op.filter(sourceImage, null);
|
|
|
+
|
|
|
BufferedImage heightMap = new BufferedImage(sourceImage.getWidth(), sourceImage.getHeight(), BufferedImage.TYPE_INT_ARGB);
|
|
|
BufferedImage bumpMap = new BufferedImage(sourceImage.getWidth(), sourceImage.getHeight(), BufferedImage.TYPE_INT_ARGB);
|
|
|
ColorConvertOp gscale = new ColorConvertOp(ColorSpace.getInstance(ColorSpace.CS_GRAY), null);
|