The ambient light doesnt illuminate the objects,why?

Greetings to the community, I need your help on this.
In the example class TestSpotLightTerrain,- jme3test.light Package;

I have the following problem, I add a “Spatial” (loaded with. j3o model, in this case use a billboard) to the scene, but when using AmbientLight, Spatial object does not light, like other such scene. 8-O
The Spatial:

The scene with ambientlight:

with the model and problem:

here the problem in other angle:

HERE THE CODE:

[java]

import com.jme3.app.SimpleApplication; import com.jme3.bounding.BoundingBox; import com.jme3.font.BitmapText; import com.jme3.light.AmbientLight; import com.jme3.light.PointLight; import com.jme3.light.SpotLight; import com.jme3.material.Material; import com.jme3.math.ColorRGBA; import com.jme3.math.FastMath; import com.jme3.math.Quaternion; import com.jme3.math.Vector3f; import com.jme3.scene.Geometry; import com.jme3.scene.Node; import com.jme3.scene.Spatial; import com.jme3.terrain.geomipmap.TerrainLodControl; import com.jme3.terrain.geomipmap.TerrainQuad; import com.jme3.terrain.geomipmap.lodcalc.DistanceLodCalculator; import com.jme3.terrain.heightmap.AbstractHeightMap; import com.jme3.terrain.heightmap.ImageBasedHeightMap; import com.jme3.texture.Texture; import com.jme3.texture.Texture.WrapMode; import com.jme3.util.SkyFactory;

/**

  • Uses the terrain’s lighting texture with normal maps and lights.

  • @author bowens
    */
    public class TestSpotLightTerrain extends SimpleApplication {

    private TerrainQuad terrain;
    Material matTerrain;
    Material matWire;
    boolean wireframe = false;
    boolean triPlanar = false;
    boolean wardiso = false;
    boolean minnaert = false;
    protected BitmapText hintText;
    PointLight pl;
    Geometry lightMdl;
    Spatial billboard1;
    private float grassScale = 64;
    private float dirtScale = 16;
    private float rockScale = 128;
    SpotLight sl;

    public static void main(String args) {
    TestSpotLightTerrain app = new TestSpotLightTerrain();
    app.start();
    }

    @Override
    public void simpleInitApp() {
    makeTerrain();
    flyCam.setMoveSpeed(50);
    //This is the model loaded
    billboard1 = assetManager.loadModel(“Models/vallas/publicidad_confiteca/billboard.j3o”);
    billboard1.move(-41.15771f,-23.090982f,-143.15463f);
    rootNode.attachChild(billboard1);

     sl = new SpotLight();
     sl.setSpotRange(100);
     sl.setSpotOuterAngle(20 * FastMath.DEG_TO_RAD);
     sl.setSpotInnerAngle(15 * FastMath.DEG_TO_RAD);
     sl.setDirection(new Vector3f(-0.39820394f, -0.73094344f, 0.55421597f));
     sl.setPosition(new Vector3f(-64.61567f, -87.615425f, -202.41328f));
     rootNode.addLight(sl);
    

AmbientLight ambLight = new AmbientLight();
ambLight.setColor(new ColorRGBA(0.8f, 0.8f, 0.8f, 0.2f));
rootNode.addLight(ambLight);

    cam.setLocation(new Vector3f(-41.219646f, -84.8363f, -171.67267f));
    cam.setRotation(new Quaternion(-0.04562731f, 0.89917684f, -0.09668826f, -0.4243236f));
    sl.setDirection(cam.getDirection());
    sl.setPosition(cam.getLocation());

}

  @Override
public void simpleUpdate(float tpf) {
    super.simpleUpdate(tpf);

// sl.setDirection(cam.getDirection());
// sl.setPosition(cam.getLocation());

}

private void makeTerrain() {
    // TERRAIN TEXTURE material
    matTerrain = new Material(assetManager, "Common/MatDefs/Terrain/TerrainLighting.j3md");
    matTerrain.setBoolean("useTriPlanarMapping", false);
    matTerrain.setBoolean("WardIso", true);

    // ALPHA map (for splat textures)
    matTerrain.setTexture("AlphaMap", assetManager.loadTexture("Textures/Terrain/splat/alpha1.png"));
    matTerrain.setTexture("AlphaMap_1", assetManager.loadTexture("Textures/Terrain/splat/alpha2.png"));

    // HEIGHTMAP image (for the terrain heightmap)
    Texture heightMapImage = assetManager.loadTexture("Textures/Terrain/splat/mountains512.png");


    // GRASS texture
    Texture grass = assetManager.loadTexture("Textures/Terrain/splat/grass.jpg");
    grass.setWrap(WrapMode.Repeat);
    matTerrain.setTexture("DiffuseMap", grass);
    matTerrain.setFloat("DiffuseMap_0_scale", grassScale);

    // DIRT texture
    Texture dirt = assetManager.loadTexture("Textures/Terrain/splat/dirt.jpg");
    dirt.setWrap(WrapMode.Repeat);
    matTerrain.setTexture("DiffuseMap_1", dirt);
    matTerrain.setFloat("DiffuseMap_1_scale", dirtScale);

    // ROCK texture
    Texture rock = assetManager.loadTexture("Textures/Terrain/splat/road.jpg");
    rock.setWrap(WrapMode.Repeat);
    matTerrain.setTexture("DiffuseMap_2", rock);
    matTerrain.setFloat("DiffuseMap_2_scale", rockScale);

    // BRICK texture
    Texture brick = assetManager.loadTexture("Textures/Terrain/BrickWall/BrickWall.jpg");
    brick.setWrap(WrapMode.Repeat);
    matTerrain.setTexture("DiffuseMap_3", brick);
    matTerrain.setFloat("DiffuseMap_3_scale", rockScale);

    // RIVER ROCK texture
    Texture riverRock = assetManager.loadTexture("Textures/Terrain/Pond/Pond.jpg");
    riverRock.setWrap(WrapMode.Repeat);
    matTerrain.setTexture("DiffuseMap_4", riverRock);
    matTerrain.setFloat("DiffuseMap_4_scale", rockScale);


    Texture normalMap0 = assetManager.loadTexture("Textures/Terrain/splat/grass_normal.jpg");
    normalMap0.setWrap(WrapMode.Repeat);
    Texture normalMap1 = assetManager.loadTexture("Textures/Terrain/splat/dirt_normal.png");
    normalMap1.setWrap(WrapMode.Repeat);
    Texture normalMap2 = assetManager.loadTexture("Textures/Terrain/splat/road_normal.png");
    normalMap2.setWrap(WrapMode.Repeat);
    matTerrain.setTexture("NormalMap", normalMap0);
    matTerrain.setTexture("NormalMap_1", normalMap2);
    matTerrain.setTexture("NormalMap_2", normalMap2);
    matTerrain.setTexture("NormalMap_4", normalMap2);

    // WIREFRAME material
    matWire = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
    matWire.getAdditionalRenderState().setWireframe(true);
    matWire.setColor("Color", ColorRGBA.Green);

    createSky();

    // CREATE HEIGHTMAP
    AbstractHeightMap heightmap = null;
    try {
        //heightmap = new HillHeightMap(1025, 1000, 50, 100, (byte) 3);

        heightmap = new ImageBasedHeightMap(heightMapImage.getImage(), 1f);
        heightmap.load();

    } catch (Exception e) {
        e.printStackTrace();
    }

    terrain = new TerrainQuad("terrain", 65, 513, heightmap.getHeightMap());//, new LodPerspectiveCalculatorFactory(getCamera(), 4)); // add this in to see it use entropy for LOD calculations
    TerrainLodControl control = new TerrainLodControl(terrain, getCamera());
    control.setLodCalculator( new DistanceLodCalculator(65, 2.7f) );
    terrain.addControl(control);
    terrain.setMaterial(matTerrain);
    terrain.setModelBound(new BoundingBox());
    terrain.updateModelBound();
    terrain.setLocalTranslation(0, -100, 0);
    terrain.setLocalScale(1f, 1f, 1f);
    rootNode.attachChild(terrain);
}

private void createSky() {
    Texture west = assetManager.loadTexture("Textures/Sky/Lagoon/lagoon_west.jpg");
    Texture east = assetManager.loadTexture("Textures/Sky/Lagoon/lagoon_east.jpg");
    Texture north = assetManager.loadTexture("Textures/Sky/Lagoon/lagoon_north.jpg");
    Texture south = assetManager.loadTexture("Textures/Sky/Lagoon/lagoon_south.jpg");
    Texture up = assetManager.loadTexture("Textures/Sky/Lagoon/lagoon_up.jpg");
    Texture down = assetManager.loadTexture("Textures/Sky/Lagoon/lagoon_down.jpg");

    Spatial sky = SkyFactory.createSky(assetManager, west, east, north, south, up, down);
    rootNode.attachChild(sky);
}

}

[/java]

a thank you in advance :!:

Check that the ambient color of the sign material is no set to 0,0,0

@nehon said: Check that the ambient color of the sign material is no set to 0,0,0

Greetings, where I can change those parameters?

in the material. there is a material parameter “Ambient” that is the ambient color.
and there is a boolean “UseMaterialColors” that may be set to true.
try

material.setColor(“Ambient”, new ColorRGBA(1,1,1,1));
material.setColor(“Diffuse”, new ColorRGBA(1,1,1,1));
material.setBoolean(“UseMaterialColors”, true);

1 Like

I am having the same issue but my issue pertains to the terrain. Is there a way for the ambient light to affect the terrainLighting material?
Thank you for your time.