159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta/* 259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * To change this template, choose Tools | Templates and open the template in 359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * the editor. 459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 559b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartapackage jme3test.batching; 659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 859b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.app.SimpleApplication; 959b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.light.DirectionalLight; 1059b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.material.Material; 1159b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.math.ColorRGBA; 1259b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.math.FastMath; 1359b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.math.Quaternion; 1459b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.math.Vector3f; 1559b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.scene.BatchNode; 1659b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.scene.Geometry; 1759b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.scene.Node; 1859b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.scene.shape.Box; 1959b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.system.NanoTimer; 2059b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport com.jme3.util.TangentBinormalGenerator; 2159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 2259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta/** 2359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * 2459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @author Nehon 2559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 2659b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartapublic class TestBatchNode extends SimpleApplication { 2759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 2859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public static void main(String[] args) { 2959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 3059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta TestBatchNode app = new TestBatchNode(); 3159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta app.start(); 3259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 3359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta BatchNode batch; 3459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 3559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta @Override 3659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public void simpleInitApp() { 3759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta timer = new NanoTimer(); 3859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta batch = new BatchNode("theBatchNode"); 3959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 4059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 4159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * A cube with a color "bleeding" through transparent texture. Uses 4259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * Texture from jme3-test-data library! 4359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 4459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta Box boxshape4 = new Box(Vector3f.ZERO, 1f, 1f, 1f ); 4559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta cube = new Geometry("cube1", boxshape4); 4659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta Material mat = assetManager.loadMaterial("Textures/Terrain/Pond/Pond.j3m"); 4759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta cube.setMaterial(mat); 4859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta// Material mat = new Material(assetManager, "Common/MatDefs/Light/Lighting.j3md"); 4959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta// mat.setColor("Diffuse", ColorRGBA.Blue); 5059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta// mat.setBoolean("UseMaterialColors", true); 5159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta /** 5259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * A cube with a color "bleeding" through transparent texture. Uses 5359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * Texture from jme3-test-data library! 5459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */ 5559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta Box box = new Box(Vector3f.ZERO, 1f, 1f, 1f); 5659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta cube2 = new Geometry("cube2", box); 5759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta cube2.setMaterial(mat); 5859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 5959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta TangentBinormalGenerator.generate(cube); 6059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta TangentBinormalGenerator.generate(cube2); 6159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 6259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 6359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta n = new Node("aNode"); 6459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta // n.attachChild(cube2); 6559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta batch.attachChild(cube); 6659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta batch.attachChild(cube2); 6759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta // batch.setMaterial(mat); 6859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta batch.batch(); 6959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta rootNode.attachChild(batch); 7059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta cube.setLocalTranslation(3, 0, 0); 7159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta cube2.setLocalTranslation(0, 3, 0); 7259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 7359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 7459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta dl=new DirectionalLight(); 7559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta dl.setColor(ColorRGBA.White.mult(2)); 7659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta dl.setDirection(new Vector3f(1, -1, -1)); 7759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta rootNode.addLight(dl); 7859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta flyCam.setMoveSpeed(10); 7959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 8059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta Node n; 8159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta Geometry cube; 8259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta Geometry cube2; 8359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta float time = 0; 8459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta DirectionalLight dl; 8559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta @Override 8659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta public void simpleUpdate(float tpf) { 8759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta time += tpf; 8859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta dl.setDirection(cam.getDirection()); 8959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta cube2.setLocalTranslation(FastMath.sin(-time)*3, FastMath.cos(time)*3, 0); 9059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta cube2.setLocalRotation(new Quaternion().fromAngleAxis(time, Vector3f.UNIT_Z)); 9159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta cube2.setLocalScale(Math.max(FastMath.sin(time),0.5f)); 9259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 9359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta batch.setLocalRotation(new Quaternion().fromAngleAxis(time, Vector3f.UNIT_Z)); 9459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta 9559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta } 9659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta// 9759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta} 98