1

jME を使い始めたばかりで、blender で 3D モデルを作成し、それを .obj にエクスポートして jME アプリケーションにインポートしました。アンビエント ライトは正常に機能しますが、私が使用している直接光は、いくつかの面のみを照らしますが、オブジェクトの 1 つの面だけを照らすのではなく、オブジェクトの方向 (両方の上腕) に関係なく、オブジェクト全体を照らします。 :

ここに画像の説明を入力

キャラクターの残りの部分はディレクショナル ライトで照らされません。これはソースコードです:

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

}

何が問題ですか?

4

1 に答える 1

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

于 2012-12-28T09:50:03.480 に答える