/** * Sets the Z-buffer state on the given node. * * <p>NOTE: This method assumes it is being called in a MT-Safe manner. */ private void setZBufferState(Node node) { RenderManager rm = ClientContextJME.getWorldManager().getRenderManager(); ZBufferState zbuf = (ZBufferState) rm.createRendererState(RenderState.StateType.ZBuffer); zbuf.setEnabled(true); zbuf.setFunction(ZBufferState.TestFunction.LessThanOrEqualTo); node.setRenderState(zbuf); }
public static void warmup() { DisplaySystem display = DisplaySystem.getDisplaySystem(); bs = display.getRenderer().createBlendState(); bs.setBlendEnabled(true); bs.setSourceFunction(SourceFunction.SourceAlpha); bs.setDestinationFunction(DestinationFunction.One); bs.setTestEnabled(true); bs.setTestFunction(TestFunction.GreaterThan); ts = display.getRenderer().createTextureState(); ts.setTexture( TextureManager.loadTexture( ExplosionFactory.class .getClassLoader() .getResource("jmetest/data/texture/flaresmall.jpg"))); zstate = display.getRenderer().createZBufferState(); zstate.setEnabled(false); for (int i = 0; i < 3; i++) createExplosion(); for (int i = 0; i < 5; i++) createSmallExplosion(); }
/** * builds the trimesh. * * @see com.jme.app.SimpleGame#initGame() */ protected void simpleInitGame() { display.setTitle("Imposter Test"); cam.setLocation(new Vector3f(0.0f, 0.0f, 25.0f)); cam.update(); // setup the scene to be 'impostered' Md2ToJme converter = new Md2ToJme(); ByteArrayOutputStream BO = new ByteArrayOutputStream(); URL freak = TestMd2JmeWrite.class.getClassLoader().getResource(FILE_NAME); freakmd2 = null; try { long time = System.currentTimeMillis(); converter.convert(freak.openStream(), BO); logger.info("Time to convert from md2 to .jme:" + (System.currentTimeMillis() - time)); } catch (IOException e) { logger.info("damn exceptions:" + e.getMessage()); } try { long time = System.currentTimeMillis(); freakmd2 = (Node) BinaryImporter.getInstance().load(new ByteArrayInputStream(BO.toByteArray())); logger.info("Time to convert from .jme to SceneGraph:" + (System.currentTimeMillis() - time)); } catch (IOException e) { logger.info("damn exceptions:" + e.getMessage()); } ((KeyframeController) freakmd2.getChild(0).getController(0)).setSpeed(10); ((KeyframeController) freakmd2.getChild(0).getController(0)).setRepeatType(Controller.RT_WRAP); fakeScene = new Node("Fake node"); fakeScene.attachChild(freakmd2); // apply the appropriate texture to the imposter scene TextureState ts2 = display.getRenderer().createTextureState(); ts2.setEnabled(true); ts2.setTexture( TextureManager.loadTexture( TestImposterNode.class.getClassLoader().getResource(TEXTURE_NAME), Texture.MinificationFilter.Trilinear, Texture.MagnificationFilter.Bilinear)); fakeScene.setRenderState(ts2); ZBufferState buf = display.getRenderer().createZBufferState(); buf.setEnabled(true); buf.setFunction(ZBufferState.TestFunction.LessThanOrEqualTo); fakeScene.setRenderState(buf); fakeScene.updateRenderState(); // setup the imposter node... iNode = new ImposterNode("model imposter", 10, display.getWidth(), display.getHeight()); iNode.attachChild(fakeScene); iNode.setCameraDistance(100); iNode.setRedrawRate(.05f); // .05 = update texture 20 times a second on average // iNode.setCameraThreshold(15*FastMath.DEG_TO_RAD); // Now add the imposter to a Screen Aligned billboard so the deception is complete. BillboardNode bnode = new BillboardNode("imposter bbnode"); bnode.setAlignment(BillboardNode.SCREEN_ALIGNED); bnode.attachChild(iNode); rootNode.attachChild(bnode); }
/** * set up the scene * * @see com.jme.app.AbstractGame#initGame() */ protected void simpleInitGame() { display.setTitle("Joint Animation"); display.setVSyncEnabled(true); cam.setLocation(new Vector3f(0.0f, 0.0f, 200.0f)); cam.update(); ((FirstPersonHandler) input).getKeyboardLookHandler().setActionSpeed(100); lightState.setEnabled(false); try { ResourceLocatorTool.addResourceLocator( ResourceLocatorTool.TYPE_TEXTURE, new SimpleResourceLocator( TestFireMilk.class.getClassLoader().getResource("jmetest/data/model/msascii/"))); ResourceLocatorTool.addResourceLocator( ResourceLocatorTool.TYPE_TEXTURE, new SimpleResourceLocator( TestFireMilk.class.getClassLoader().getResource("jmetest/data/texture/"))); } catch (URISyntaxException e1) { logger.log(Level.WARNING, "unable to setup texture directories.", e1); } MilkToJme converter = new MilkToJme(); URL MSFile = TestFireMilk.class.getClassLoader().getResource("jmetest/data/model/msascii/run.ms3d"); ByteArrayOutputStream BO = new ByteArrayOutputStream(); try { converter.convert(MSFile.openStream(), BO); } catch (IOException e) { logger.info("IO problem writting the file!!!"); logger.info(e.getMessage()); System.exit(0); } i = null; try { i = (Node) BinaryImporter.getInstance().load(new ByteArrayInputStream(BO.toByteArray())); } catch (IOException e) { logger.info("darn exceptions:" + e.getMessage()); } ((JointController) i.getController(0)).setSpeed(1.0f); ((JointController) i.getController(0)).setRepeatType(Controller.RT_CYCLE); i.setRenderQueueMode(Renderer.QUEUE_OPAQUE); rootNode.attachChild(i); AlphaState as1 = display.getRenderer().createAlphaState(); as1.setBlendEnabled(true); as1.setSrcFunction(AlphaState.SB_SRC_ALPHA); as1.setDstFunction(AlphaState.DB_ONE); as1.setTestEnabled(true); as1.setTestFunction(AlphaState.TF_GREATER); as1.setEnabled(true); TextureState ts = display.getRenderer().createTextureState(); ts.setTexture( TextureManager.loadTexture("flaresmall.jpg", Texture.MM_LINEAR_LINEAR, Texture.FM_LINEAR)); ts.setEnabled(true); ParticleMesh manager = ParticleFactory.buildParticles("particles", 200); manager.setEmissionDirection(new Vector3f(0.0f, 1.0f, 0.0f)); manager.setMaximumAngle(0.20943952f); manager.getParticleController().setSpeed(1.0f); manager.setMinimumLifeTime(150.0f); manager.setMaximumLifeTime(225.0f); manager.setStartSize(8.0f); manager.setEndSize(4.0f); manager.setStartColor(new ColorRGBA(1.0f, 0.312f, 0.121f, 1.0f)); manager.setEndColor(new ColorRGBA(1.0f, 0.312f, 0.121f, 0.0f)); manager.getParticleController().setControlFlow(false); manager.setInitialVelocity(0.12f); manager.setGeometry((Geometry) (i.getChild(0))); manager.warmUp(60); manager.setRenderState(ts); manager.setRenderState(as1); manager.setLightCombineMode(LightState.OFF); manager.setTextureCombineMode(TextureState.REPLACE); ZBufferState zstate = display.getRenderer().createZBufferState(); zstate.setEnabled(false); manager.setRenderState(zstate); rootNode.attachChild(manager); }