Search in sources :

Example 6 with Material

use of com.jme3.material.Material in project jmonkeyengine by jMonkeyEngine.

the class MotionPath method CreateLinearPath.

private Geometry CreateLinearPath() {
    Material mat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
    mat.getAdditionalRenderState().setWireframe(true);
    mat.setColor("Color", ColorRGBA.Blue);
    Geometry lineGeometry = new Geometry("line", new Curve(spline, 0));
    lineGeometry.setMaterial(mat);
    return lineGeometry;
}
Also used : Geometry(com.jme3.scene.Geometry) Curve(com.jme3.scene.shape.Curve) Material(com.jme3.material.Material)

Example 7 with Material

use of com.jme3.material.Material in project jmonkeyengine by jMonkeyEngine.

the class OpaqueComparatorTest method testSortByAll.

@Test
public void testSortByAll() {
    Material matBase1 = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md");
    Material matBase2 = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
    Texture texBase = createTexture("BASE");
    texBase.getImage().setId(1);
    Texture tex1 = createTexture("1");
    tex1.getImage().setId(2);
    Texture tex2 = createTexture("2");
    tex2.getImage().setId(3);
    matBase1.setName("BASE");
    matBase1.selectTechnique(TechniqueDef.DEFAULT_TECHNIQUE_NAME, renderManager);
    matBase1.setBoolean("UseVertexColor", true);
    matBase1.setTexture("DiffuseMap", texBase);
    Material mat1100 = matBase1.clone();
    mat1100.setName("1100");
    mat1100.selectTechnique("PreShadow", renderManager);
    Material mat1101 = matBase1.clone();
    mat1101.setName("1101");
    mat1101.selectTechnique("PreShadow", renderManager);
    mat1101.setTexture("DiffuseMap", tex1);
    Material mat1102 = matBase1.clone();
    mat1102.setName("1102");
    mat1102.selectTechnique("PreShadow", renderManager);
    mat1102.setTexture("DiffuseMap", tex2);
    Material mat1110 = matBase1.clone();
    mat1110.setName("1110");
    mat1110.selectTechnique("PreShadow", renderManager);
    mat1110.setFloat("AlphaDiscardThreshold", 2f);
    Material mat1120 = matBase1.clone();
    mat1120.setName("1120");
    mat1120.selectTechnique("PreShadow", renderManager);
    mat1120.setBoolean("UseInstancing", true);
    Material mat1121 = matBase1.clone();
    mat1121.setName("1121");
    mat1121.selectTechnique("PreShadow", renderManager);
    mat1121.setBoolean("UseInstancing", true);
    mat1121.setTexture("DiffuseMap", tex1);
    Material mat1122 = matBase1.clone();
    mat1122.setName("1122");
    mat1122.selectTechnique("PreShadow", renderManager);
    mat1122.setBoolean("UseInstancing", true);
    mat1122.setTexture("DiffuseMap", tex2);
    Material mat1140 = matBase1.clone();
    mat1140.setName("1140");
    mat1140.selectTechnique("PreShadow", renderManager);
    mat1140.setFloat("AlphaDiscardThreshold", 2f);
    mat1140.setBoolean("UseInstancing", true);
    Material mat1200 = matBase1.clone();
    mat1200.setName("1200");
    mat1200.selectTechnique("PostShadow", renderManager);
    Material mat1210 = matBase1.clone();
    mat1210.setName("1210");
    mat1210.selectTechnique("PostShadow", renderManager);
    mat1210.setFloat("AlphaDiscardThreshold", 2f);
    Material mat1220 = matBase1.clone();
    mat1220.setName("1220");
    mat1220.selectTechnique("PostShadow", renderManager);
    mat1220.setBoolean("UseInstancing", true);
    Material mat2000 = matBase2.clone();
    mat2000.setName("2000");
    testSort(mat1100, mat1101, mat1102, mat1110, mat1120, mat1121, mat1122, mat1140, mat1200, mat1210, mat1220, mat2000);
}
Also used : Material(com.jme3.material.Material) Texture(com.jme3.texture.Texture) Test(org.junit.Test)

Example 8 with Material

use of com.jme3.material.Material in project jmonkeyengine by jMonkeyEngine.

the class OpaqueComparatorTest method testSortByShaderDefines.

@Test
public void testSortByShaderDefines() {
    Material lightingMat = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md");
    Material lightingMatVColor = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md");
    Material lightingMatVLight = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md");
    Material lightingMatTC = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md");
    Material lightingMatVColorLight = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md");
    Material lightingMatTCVColorLight = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md");
    lightingMat.setName("DefNone");
    lightingMatVColor.setName("DefVC");
    lightingMatVColor.setBoolean("UseVertexColor", true);
    lightingMatVLight.setName("DefVL");
    lightingMatVLight.setBoolean("VertexLighting", true);
    lightingMatTC.setName("DefTC");
    lightingMatTC.setBoolean("SeparateTexCoord", true);
    lightingMatVColorLight.setName("DefVCVL");
    lightingMatVColorLight.setBoolean("UseVertexColor", true);
    lightingMatVColorLight.setBoolean("VertexLighting", true);
    lightingMatTCVColorLight.setName("DefVCVLTC");
    lightingMatTCVColorLight.setBoolean("UseVertexColor", true);
    lightingMatTCVColorLight.setBoolean("VertexLighting", true);
    lightingMatTCVColorLight.setBoolean("SeparateTexCoord", true);
    testSort(lightingMat, lightingMatVColor, lightingMatVLight, lightingMatVColorLight, lightingMatTC, lightingMatTCVColorLight);
}
Also used : Material(com.jme3.material.Material) Test(org.junit.Test)

Example 9 with Material

use of com.jme3.material.Material in project jmonkeyengine by jMonkeyEngine.

the class OpaqueComparatorTest method testSortByMaterialDef.

@Test
public void testSortByMaterialDef() {
    Material lightingMat = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md");
    Material particleMat = new Material(assetManager, "Common/MatDefs/Misc/Particle.j3md");
    Material unshadedMat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
    Material skyMat = new Material(assetManager, "Common/MatDefs/Misc/Sky.j3md");
    lightingMat.setName("MatLight");
    particleMat.setName("MatParticle");
    unshadedMat.setName("MatUnshaded");
    skyMat.setName("MatSky");
    testSort(skyMat, lightingMat, particleMat, unshadedMat);
}
Also used : Material(com.jme3.material.Material) Test(org.junit.Test)

Example 10 with Material

use of com.jme3.material.Material in project jmonkeyengine by jMonkeyEngine.

the class OpaqueComparatorTest method testSort.

/**
     * Given a correctly sorted list of materials, check if the 
     * opaque comparator can sort a reversed list of them.
     * 
     * Each material will be cloned so that none of them will be equal to each other
     * in reference, forcing the comparator to compare the material sort ID.
     * 
     * E.g. for a list of materials A, B, C, the following list will be generated:
     * <pre>C, B, A, C, B, A, C, B, A</pre>, it should result in
     * <pre>A, A, A, B, B, B, C, C, C</pre>.
     * 
     * @param materials The pre-sorted list of materials to check sorting for.
     */
private void testSort(Material... materials) {
    GeometryList gl = new GeometryList(comparator);
    for (int g = 0; g < 5; g++) {
        for (int i = materials.length - 1; i >= 0; i--) {
            Geometry geom = new Geometry("geom", mesh);
            Material clonedMaterial = materials[i].clone();
            if (materials[i].getActiveTechnique() != null) {
                String techniqueName = materials[i].getActiveTechnique().getDef().getName();
                clonedMaterial.selectTechnique(techniqueName, renderManager);
            } else {
                clonedMaterial.selectTechnique(TechniqueDef.DEFAULT_TECHNIQUE_NAME, renderManager);
            }
            geom.setMaterial(clonedMaterial);
            gl.add(geom);
        }
    }
    gl.sort();
    for (int i = 0; i < gl.size(); i++) {
        Material mat = gl.get(i).getMaterial();
        String sortId = Integer.toHexString(mat.getSortId()).toUpperCase();
        System.out.print(sortId + "\t");
        System.out.println(mat);
    }
    Set<String> alreadySeen = new HashSet<String>();
    Material current = null;
    for (int i = 0; i < gl.size(); i++) {
        Material mat = gl.get(i).getMaterial();
        if (current == null) {
            current = mat;
        } else if (!current.getName().equals(mat.getName())) {
            assert !alreadySeen.contains(mat.getName());
            alreadySeen.add(current.getName());
            current = mat;
        }
    }
    for (int i = 0; i < materials.length; i++) {
        for (int g = 0; g < 5; g++) {
            int index = i * 5 + g;
            Material mat1 = gl.get(index).getMaterial();
            Material mat2 = materials[i];
            assert mat1.getName().equals(mat2.getName()) : mat1.getName() + " != " + mat2.getName() + " for index " + index;
        }
    }
}
Also used : Geometry(com.jme3.scene.Geometry) GeometryList(com.jme3.renderer.queue.GeometryList) Material(com.jme3.material.Material) HashSet(java.util.HashSet)

Aggregations

Material (com.jme3.material.Material)285 Geometry (com.jme3.scene.Geometry)165 Vector3f (com.jme3.math.Vector3f)110 Box (com.jme3.scene.shape.Box)79 Texture (com.jme3.texture.Texture)69 DirectionalLight (com.jme3.light.DirectionalLight)49 Sphere (com.jme3.scene.shape.Sphere)43 Node (com.jme3.scene.Node)39 ColorRGBA (com.jme3.math.ColorRGBA)38 Spatial (com.jme3.scene.Spatial)35 Quaternion (com.jme3.math.Quaternion)31 Quad (com.jme3.scene.shape.Quad)26 Texture2D (com.jme3.texture.Texture2D)21 KeyTrigger (com.jme3.input.controls.KeyTrigger)20 RigidBodyControl (com.jme3.bullet.control.RigidBodyControl)19 ArrayList (java.util.ArrayList)19 TerrainQuad (com.jme3.terrain.geomipmap.TerrainQuad)18 TextureKey (com.jme3.asset.TextureKey)17 ParticleEmitter (com.jme3.effect.ParticleEmitter)17 AmbientLight (com.jme3.light.AmbientLight)16