2012-09-16 2 views
1

Je viens de commencer à travailler avec jME et j'ai créé un modèle 3D dans blender, puis je l'ai exporté vers .obj et l'ai importé dans mon application jME. La lumière ambiante fonctionne bien, mais la lumière directe que j'utilise ne fait qu'éclairer quelques visages, mais au lieu d'éclairer une seule face d'un objet, elle éclaire tout l'objet quelle que soit la direction de l'objet (les deux bras) :Seule la lumière ambiante fonctionne de manière fiable dans jME

enter image description here

le reste du personnage reste éteint par la lumière directionnelle. Voici le code source:

public class Hello extends SimpleApplication { 

@Override 
public void simpleInitApp() { 
    Spatial character = assetManager.loadModel("/character.obj"); 
    Material mat = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md"); 
    character.setMaterial(mat); 
    character.scale(0.5f, 0.5f, 0.5f); 
    rootNode.attachChild(character); 

    AmbientLight al = new AmbientLight(); 
    al.setColor(ColorRGBA.White.mult(1.3f)); 
    rootNode.addLight(al); 

    DirectionalLight sun = new DirectionalLight(); 
    sun.setColor(ColorRGBA.White); 
    sun.setDirection(new Vector3f(0,1,0).normalizeLocal()); 
    rootNode.addLight(sun); 
} 

/** 
* @param args 
*/ 
public static void main(String[] args) { 
    Hello app = new Hello(); 
    app.start(); 
} 

} 

Quel est le problème?

Répondre

2

je dirais que quelque chose ne va pas avec les matériaux que vous avez utilisés pour votre modèle de personnage

Essayez d'ajouter:

TangentBinormalGenerator.generate(character.getMesh(), true); 
mat.setBoolean("m_UseMaterialColors", true); 
mat.setColor("m_Ambient", ColorRGBA.Orange); 
mat.setColor("m_Diffuse", ColorRGBA.Orange); 
mat.setColor("m_Specular", ColorRGBA.White); 
mat.setFloat("m_Shininess", 12); 

Extrait d'ici: http://wiki.jmonkeyengine.org/doku.php/jme3:advanced:light_and_shadow

Questions connexes