我刚刚开始使用jME,并且已经在Blender中创建了3D模型,并将其导出到.obj并将其导入到我的jME应用程序中。环境光可以很好地工作,但是我使用的直接光仅照亮了几个面,但是与照亮物体的一个面无关,它照亮了整个物体,而与物体的方向无关(两个上臂) :
角色的其余部分在定向灯下保持不亮。
这是源代码:
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();
}
}
问题是什么?
最佳答案
我会说您用于角色模型的材料有问题
尝试添加:
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