只有环境光才能在jME中可靠地工作

时间:2012-09-16 19:33:34

标签: java 3d blender .obj jmonkeyengine

我刚刚开始使用jME,我在blender中创建了一个3d模型,并将其导出到.obj并将其导入我的jME应用程序中。环境光工作正常,但我正在使用的直射光只照亮了几个面,但不是只照亮一个物体的一个面,它会照亮整个物体,而不管物体的方向(两个上臂) :

enter image description here

角色的其余部分因定向光而不亮。 这是源代码:

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();
}

}

有什么问题?

1 个答案:

答案 0 :(得分:2)

我会说你用于角色模型的材料有问题

尝试添加:

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);

从这里采取:http://wiki.jmonkeyengine.org/doku.php/jme3:advanced:light_and_shadow