diff --git a/jme3-core/src/main/java/com/jme3/util/SkyFactory.java b/jme3-core/src/main/java/com/jme3/util/SkyFactory.java index 6104141aa..730ee3b11 100644 --- a/jme3-core/src/main/java/com/jme3/util/SkyFactory.java +++ b/jme3-core/src/main/java/com/jme3/util/SkyFactory.java @@ -176,7 +176,7 @@ public class SkyFactory { * scene graph */ public static Spatial createSky(AssetManager assetManager, Texture texture, - Vector3f normalScale, EnvMapType envMapType, int sphereRadius) { + Vector3f normalScale, EnvMapType envMapType, float sphereRadius) { if (texture == null) { throw new IllegalArgumentException("texture cannot be null"); } @@ -188,14 +188,15 @@ public class SkyFactory { sky.setModelBound(new BoundingSphere(Float.POSITIVE_INFINITY, Vector3f.ZERO)); Material skyMat = new Material(assetManager, "Common/MatDefs/Misc/Sky.j3md"); - skyMat.setVector3("NormalScale", normalScale); switch (envMapType){ case CubeMap : // make sure its a cubemap - Image img = texture.getImage(); - texture = new TextureCubeMap(); - texture.setImage(img); + if (!(texture instanceof TextureCubeMap)) { + Image img = texture.getImage(); + texture = new TextureCubeMap(); + texture.setImage(img); + } break; case SphereMap : skyMat.setBoolean("SphereMap", true); @@ -206,6 +207,8 @@ public class SkyFactory { } texture.setMagFilter(Texture.MagFilter.Bilinear); texture.setMinFilter(Texture.MinFilter.BilinearNoMipMaps); + texture.setAnisotropicFilter(0); + texture.setWrap(Texture.WrapMode.EdgeClamp); skyMat.setTexture("Texture", texture); sky.setMaterial(skyMat); @@ -383,11 +386,6 @@ public class SkyFactory { public static Spatial createSky(AssetManager assetManager, Texture west, Texture east, Texture north, Texture south, Texture up, Texture down, Vector3f normalScale, float sphereRadius) { - final Sphere sphereMesh = new Sphere(10, 10, sphereRadius, false, true); - Geometry sky = new Geometry("Sky", sphereMesh); - sky.setQueueBucket(Bucket.Sky); - sky.setCullHint(Spatial.CullHint.Never); - sky.setModelBound(new BoundingSphere(Float.POSITIVE_INFINITY, Vector3f.ZERO)); Image westImg = west.getImage(); Image eastImg = east.getImage(); @@ -402,37 +400,13 @@ public class SkyFactory { cubeImage.addData(westImg.getData(0)); cubeImage.addData(eastImg.getData(0)); - cubeImage.addData(downImg.getData(0)); cubeImage.addData(upImg.getData(0)); - cubeImage.addData(southImg.getData(0)); cubeImage.addData(northImg.getData(0)); - if (westImg.getEfficentData() != null){ - // also consilidate efficient data - ArrayList efficientData = new ArrayList(6); - efficientData.add(westImg.getEfficentData()); - efficientData.add(eastImg.getEfficentData()); - efficientData.add(downImg.getEfficentData()); - efficientData.add(upImg.getEfficentData()); - efficientData.add(southImg.getEfficentData()); - efficientData.add(northImg.getEfficentData()); - cubeImage.setEfficentData(efficientData); - } - TextureCubeMap cubeMap = new TextureCubeMap(cubeImage); - cubeMap.setAnisotropicFilter(0); - cubeMap.setMagFilter(Texture.MagFilter.Bilinear); - cubeMap.setMinFilter(Texture.MinFilter.BilinearNoMipMaps); - cubeMap.setWrap(Texture.WrapMode.EdgeClamp); - - Material skyMat = new Material(assetManager, "Common/MatDefs/Misc/Sky.j3md"); - skyMat.setTexture("Texture", cubeMap); - skyMat.setVector3("NormalScale", normalScale); - sky.setMaterial(skyMat); - - return sky; + return createSky(assetManager, cubeMap, normalScale, EnvMapType.CubeMap, sphereRadius); } /**