159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta/* 359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * Android 2.2+ SimpleTextured test. 459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * 559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * created: Mon Nov 8 00:08:22 EST 2010 659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 859b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartapackage jme3test.android; 959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 1059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 1159b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.app.SimpleApplication; 1259b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.asset.TextureKey; 1359b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.light.PointLight; 1459b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.material.Material; 1559b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.math.ColorRGBA; 1659b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.math.Vector3f; 1759b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.scene.Geometry; 1859b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.scene.Mesh; 1959b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.scene.Node; 2059b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.scene.shape.Box; 2159b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.scene.shape.Sphere; 2259b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.texture.Texture; 2359b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.util.TangentBinormalGenerator; 2459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 2559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 2659b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartapublic class SimpleTexturedTest extends SimpleApplication { 2759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 2859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta private static final java.util.logging.Logger logger = java.util.logging.Logger.getLogger(SimpleTexturedTest.class.getName()); 2959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 3059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 3159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta private Node spheresContainer = new Node("spheres-container"); 3259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 3359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 3459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta private boolean lightingEnabled = true; 3559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta private boolean texturedEnabled = true; 3659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta private boolean spheres = true; 3759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 3859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta @Override 3959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public void simpleInitApp() { 4059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 4159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta //flyCam.setRotationSpeed(0.01f); 4259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 4359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 4459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta Mesh shapeSphere = null; 4559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta Mesh shapeBox = null; 4659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 4759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 4859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta shapeSphere = new Sphere(16, 16, .5f); 4959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta shapeBox = new Box(Vector3f.ZERO, 0.3f, 0.3f, 0.3f); 5059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 5159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 5259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta // ModelConverter.optimize(geom); 5359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 5459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta Texture texture = assetManager.loadTexture(new TextureKey("Interface/Logo/Monkey.jpg")); 5559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta Texture textureMonkey = assetManager.loadTexture(new TextureKey("Interface/Logo/Monkey.jpg")); 5659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 5759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta Material material = null; 5859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta Material materialMonkey = null; 5959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 6059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if (texturedEnabled) { 6159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if (lightingEnabled) { 6259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta material = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md"); 6359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta material.setBoolean("VertexLighting", true); 6459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta material.setFloat("Shininess", 127); 6559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta material.setBoolean("LowQuality", true); 6659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta material.setTexture("DiffuseMap", texture); 6759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 6859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta materialMonkey = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md"); 6959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta materialMonkey.setBoolean("VertexLighting", true); 7059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta materialMonkey.setFloat("Shininess", 127); 7159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta materialMonkey.setBoolean("LowQuality", true); 7259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta materialMonkey.setTexture("DiffuseMap", textureMonkey); 7359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 7459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } else { 7559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta material = new Material(assetManager, "Common/MatDefs/Misc/SimpleTextured.j3md"); 7659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta material.setTexture("ColorMap", texture); 7759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 7859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta materialMonkey = new Material(assetManager, "Common/MatDefs/Misc/SimpleTextured.j3md"); 7959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta materialMonkey.setTexture("ColorMap", textureMonkey); 8059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 8159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } else { 8259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta material = new Material(assetManager, "Common/MatDefs/Misc/SolidColor.j3md"); 8359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta material.setColor("Color", ColorRGBA.Red); 8459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta materialMonkey = new Material(assetManager, "Common/MatDefs/Misc/SolidColor.j3md"); 8559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta materialMonkey.setColor("Color", ColorRGBA.Red); 8659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 8759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 8859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta TangentBinormalGenerator.generate(shapeSphere); 8959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta TangentBinormalGenerator.generate(shapeBox); 9059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 9159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta int iFlipper = 0; 9259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta for (int y = -1; y < 2; y++) { 9359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta for (int x = -1; x < 2; x++){ 9459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta Geometry geomClone = null; 9559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 9659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta //iFlipper++; 9759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if (iFlipper % 2 == 0) 9859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta { 9959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta geomClone = new Geometry("geometry-" + y + "-" + x, shapeBox); 10059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 10159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta else 10259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta { 10359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta geomClone = new Geometry("geometry-" + y + "-" + x, shapeSphere); 10459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 10559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta if (iFlipper % 3 == 0) 10659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta { 10759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta geomClone.setMaterial(materialMonkey); 10859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 10959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta else 11059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta { 11159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta geomClone.setMaterial(material); 11259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 11359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta geomClone.setLocalTranslation(x, y, 0); 11459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 11559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta// Transform t = geom.getLocalTransform().clone(); 11659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta// Transform t2 = geomClone.getLocalTransform().clone(); 11759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta// t.combineWithParent(t2); 11859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta// geomClone.setLocalTransform(t); 11959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 12059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta spheresContainer.attachChild(geomClone); 12159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 12259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 12359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 12459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta spheresContainer.setLocalTranslation(new Vector3f(0, 0, -4f)); 12559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta spheresContainer.setLocalScale(2.0f); 12659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 12759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta rootNode.attachChild(spheresContainer); 12859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 12959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta PointLight pointLight = new PointLight(); 13059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 13159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta pointLight.setColor(new ColorRGBA(0.7f, 0.7f, 1.0f, 1.0f)); 13259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 13359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta pointLight.setPosition(new Vector3f(0f, 0f, 0f)); 13459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta pointLight.setRadius(8); 13559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 13659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta rootNode.addLight(pointLight); 13759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 13859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 13959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta @Override 14059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public void simpleUpdate(float tpf) { 14159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 14259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta // secondCounter has been removed from SimpleApplication 14359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta //if (secondCounter == 0) 14459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta // logger.info("Frames per second: " + timer.getFrameRate()); 14559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 14659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta spheresContainer.rotate(0.2f * tpf, 0.4f * tpf, 0.8f * tpf); 14759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 14859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 14959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta} 15059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 151