/** Process and setup the <code>TextureState</code> and texture UV buffer. */ private void processTexture() { FloatBuffer textureBuffer = BufferUtils.createVector2Buffer(this.vertices.length); float maxU = 1; float maxV = 1; float minU = 0; float minV = 0; int index = 0; for (IVertex vertex : this.vertices) { BufferUtils.setInBuffer(vertex.getTextureCoords(), textureBuffer, index); if (vertex.getTextureCoords().x > maxU) maxU = vertex.getTextureCoords().x; else if (vertex.getTextureCoords().x < minU) minU = vertex.getTextureCoords().x; if (vertex.getTextureCoords().y > maxV) maxV = vertex.getTextureCoords().y; else if (vertex.getTextureCoords().y < minV) minV = vertex.getTextureCoords().y; index++; } this.setTextureCoords(new TexCoords(textureBuffer)); // Get texture state. TextureState state = (TextureState) this.getRenderState(StateType.Texture); if (state == null) { state = DisplaySystem.getDisplaySystem().getRenderer().createTextureState(); this.setRenderState(state); } // Set color map. if (this.color != null) state.setTexture(this.loadTexture(this.color, maxU, maxV), 0); // Set normal map. if (this.normal != null) state.setTexture(this.loadTexture(this.normal, maxU, maxV), 1); // Set specular map. if (this.specular != null) state.setTexture(this.loadTexture(this.specular, maxU, maxV), 2); }
private TrailManager(final Node root) { this.root = root; trails = new HashMap<Spatial, TrailMesh>(); Renderer r = DisplaySystem.getDisplaySystem().getRenderer(); ts = r.createTextureState(); ts.setEnabled(true); Texture t1 = TextureManager.loadTexture( ResourceLocatorTool.locateResource(ResourceLocatorTool.TYPE_TEXTURE, "trail_y1.png"), Texture.MinificationFilter.Trilinear, Texture.MagnificationFilter.Bilinear); ts.setTexture(t1); bs = r.createBlendState(); bs.setBlendEnabled(true); bs.setSourceFunction(BlendState.SourceFunction.SourceAlpha); bs.setDestinationFunction(BlendState.DestinationFunction.One); bs.setTestEnabled(true); zs = r.createZBufferState(); zs.setWritable(false); cs = r.createCullState(); cs.setCullFace(CullState.Face.None); cs.setEnabled(true); }
public void frameUpdate(float timePerFrame) { // TODO Auto-generated method stub // TODO Play Frame, when in the right time => Sync-Playback-rate /* * // Put A Frame according to its Framerate * TODO: Declare private long controller; private long frameWait; private long starttime; private int iteration; Initialize starttime = System.currentTimeMillis(); controller = System.currentTimeMillis(); frameWait = 1000 / perf.getFramerate(); iteration = 0; This one into the update function: if (System.currentTimeMillis() >= (controller + frameWait)){ controller = System.currentTimeMillis(); System.out.println("There you go: " + System.currentTimeMillis()); drawFrame(); iteration++; } if (System.currentTimeMillis() > (starttime + (iteration*frameWait)+frameWait)) { // skip Frame iteration += 2; System.out.println("Look ma, no hands: " + iteration); } */ // timer.getTimePerFrame(); if (oggDecoder.isReady()) { oggDecoder.readBody(); TextureManager.releaseTexture(texture.getTextureKey()); texture = TextureManager.loadTexture( Toolkit.getDefaultToolkit().createImage(oggDecoder.getYUVBuffer()), MinificationFilter.BilinearNearestMipMap, MagnificationFilter.Bilinear, true); if (texture != null) { if (textureState != null) textureState = DisplaySystem.getDisplaySystem().getRenderer().createTextureState(); textureState.setTexture(texture); quad.setRenderState(textureState); quad.updateRenderState(); } } }
public Enemy(String id, Renderer renderer) { super(id, null); URL model = getClass().getClassLoader().getResource("fokker.jme"); Spatial ship = null; try { ship = (Spatial) BinaryImporter.getInstance().load(model.openStream()); } catch (IOException e) { e.printStackTrace(); } ship.setLocalScale(.2f); TextureState ts = renderer.createTextureState(); ts.setEnabled(true); ts.setTexture( TextureManager.loadTexture( getClass().getClassLoader().getResource("fokker.jpg"), Texture.MinificationFilter.Trilinear, Texture.MagnificationFilter.Bilinear)); ship.setRenderState(ts); ship.setNormalsMode(NormalsMode.AlwaysNormalize); ship.setModelBound(new BoundingBox()); ship.updateModelBound(); // ship.setLocalRotation(new Quaternion().fromAngleAxis(FastMath.PI, Vector3f.UNIT_Z)); setModel(ship); Vector3f[] points = new Vector3f[6]; points[0] = new Vector3f(110, 0, 110); points[1] = new Vector3f(110, 0, 50); points[2] = new Vector3f(-20, 0, 10); points[3] = new Vector3f(20, 0, -20); points[4] = new Vector3f(-90, 0, -90); points[5] = new Vector3f(0, 0, 110); endPoint = points[5]; CatmullRomCurve curve = new CatmullRomCurve("Curve", points); curve.setSteps(512); // ship.setLocalTranslation(points[0]); // curve.setCullHint(CullHint.Always); CurveController curveController = new CurveController(curve, ship); ship.addController(curveController); curveController.setRepeatType(Controller.RT_CLAMP); curveController.setSpeed(0.05f); curveController.setAutoRotation(true); curveController.setUpVector(new Vector3f(0, 0.5f, 0)); attachChild(curve); ExplosionFactory.warmup(); }
/** * builds the trimesh. * * @see com.jme.app.SimpleGame#initGame() */ protected void simpleInitGame() { display.setTitle("Cylinder Test"); t = new Tube("Tube", 18, 12, 30); t.getLocalTranslation().z = -30; t.setModelBound(new BoundingSphere()); t.updateModelBound(); rootNode.attachChild(t); TextureState ts = display.getRenderer().createTextureState(); ts.setEnabled(true); ts.setTexture( TextureManager.loadTexture( TestTube.class.getClassLoader().getResource("jmetest/data/images/Monkey.jpg"), MinificationFilter.Trilinear, MagnificationFilter.Bilinear)); ts.getTexture().setWrap(WrapMode.Repeat); rootNode.setRenderState(ts); }
/** creates the floor and two walls standing on the floor. */ private void createFloor(float width, float length) { Texture tex = TextureManager.loadTexture( ResourceLocatorTool.locateResource(ResourceLocatorTool.TYPE_TEXTURE, "floor.png"), false); tex.setScale(new Vector3f(10, 10, 10)); tex.setWrap(WrapMode.Repeat); TextureState tsCarpet = DisplaySystem.getDisplaySystem().getRenderer().createTextureState(); tsCarpet.setTexture(tex); StaticPhysicsNode floor = makeWall("floor", width, 0.5f, length, new Vector3f(0, -1, 0), null); floor.setRenderState(tsCarpet); rootNode.attachChild(floor); rootNode.attachChild( makeWall( "back wall", width / 2, 5, 1, new Vector3f(0, 5, -width / 2), MaterialType.GRANITE)); rootNode.attachChild( makeWall( "left wall", 1, 5, width / 2, new Vector3f(-width / 2, 5, 0), MaterialType.GRANITE)); }
private void createShape() { quad = new Quad("texturedQuad", Scale.fromMeter(25), Scale.fromMeter(25)); // quad = new Box("", new Vector3f(), Scale.fromMeter(25), Scale.fromMeter(25), // Scale.fromMeter(25)); // quad.setLocalTranslation(new Vector3f(0,0,-400)); texture = TextureManager.loadTexture( "data/foliage/A_Bush_1.png", MinificationFilter.BilinearNearestMipMap, MagnificationFilter.Bilinear); if (texture != null) { textureState = DisplaySystem.getDisplaySystem().getRenderer().createTextureState(); textureState.setTexture(texture); quad.setRenderState(textureState); } // rootNode.attachChild(quad); }
/** * builds the trimesh. * * @see com.jme.app.SimpleGame#initGame() */ protected void simpleInitGame() { display.setTitle("Octahedron Test"); cam.setLocation(new Vector3f(0, 0, 100)); cam.update(); s = new Octahedron("Octahedron", 20); s.setModelBound(new BoundingBox()); s.updateModelBound(); rootNode.attachChild(s); TextureState ts = display.getRenderer().createTextureState(); ts.setEnabled(true); ts.setTexture( TextureManager.loadTexture( TestBoxColor.class.getClassLoader().getResource("jmetest/data/images/Monkey.jpg"), Texture.MinificationFilter.BilinearNearestMipMap, Texture.MagnificationFilter.Bilinear)); // rootNode.setRenderState(ts); }
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(); }
private void createSky() { detachChildNamed("Skydome"); float skyRadius = visibilityRadius * 1.1f; skydome = new Dome("Skydome", 5, 24, skyRadius); skyHeightOffset = skyRadius / 2; skydome.setModelBound(new BoundingSphere()); skydome.updateModelBound(); LightState lightState = display.getRenderer().createLightState(); lightState.setEnabled(true); // lightState.setTwoSidedLighting(true); lightState.setGlobalAmbient(ColorRGBA.white); skydome.setRenderState(lightState); skydome.setLightCombineMode(LightState.REPLACE); Texture domeTexture = TextureManager.loadTexture( "../MBWSClient/data/images/wolken.jpg", Texture.MM_LINEAR, Texture.FM_LINEAR); TextureState ts = display.getRenderer().createTextureState(); ts.setTexture(domeTexture); skydome.setRenderState(ts); // skydome.setTextureCombineMode(TextureState.REPLACE); attachChild(skydome); updateRenderState(); }
private Node createObjects() { Node objects = new Node("objects"); Torus torus = new Torus("Torus", 50, 50, 10, 20); torus.setLocalTranslation(new Vector3f(50, -5, 20)); TextureState ts = display.getRenderer().createTextureState(); Texture t0 = TextureManager.loadTexture( TestSketch.class.getClassLoader().getResource("jmetest/data/images/Monkey.jpg"), Texture.MM_LINEAR_LINEAR, Texture.FM_LINEAR); Texture t1 = TextureManager.loadTexture( TestSketch.class.getClassLoader().getResource("jmetest/data/texture/north.jpg"), Texture.MM_LINEAR_LINEAR, Texture.FM_LINEAR); t1.setEnvironmentalMapMode(Texture.EM_SPHERE); ts.setTexture(t0, 0); ts.setTexture(t1, 1); ts.setEnabled(true); torus.setRenderState(ts); objects.attachChild(torus); ts = display.getRenderer().createTextureState(); t0 = TextureManager.loadTexture( TestSketch.class.getClassLoader().getResource("jmetest/data/texture/wall.jpg"), Texture.MM_LINEAR_LINEAR, Texture.FM_LINEAR); t0.setWrap(Texture.WM_WRAP_S_WRAP_T); ts.setTexture(t0); Box box = new Box("box1", new Vector3f(-10, -10, -10), new Vector3f(10, 10, 10)); box.setLocalTranslation(new Vector3f(0, -7, 0)); box.setRenderState(ts); box.setModelBound(new BoundingBox()); box.updateModelBound(); objects.attachChild(box); box = new Box("box2", new Vector3f(-5, -5, -5), new Vector3f(5, 5, 5)); box.setLocalTranslation(new Vector3f(15, 10, 0)); box.setModelBound(new BoundingBox()); box.updateModelBound(); box.setRenderState(ts); objects.attachChild(box); box = new Box("box4", new Vector3f(-5, -5, -5), new Vector3f(5, 5, 5)); box.setLocalTranslation(new Vector3f(20, 0, 0)); box.setModelBound(new BoundingBox()); box.updateModelBound(); box.setRenderState(ts); objects.attachChild(box); box = new Box("box5", new Vector3f(-50, -2, -50), new Vector3f(50, 2, 50)); box.setLocalTranslation(new Vector3f(0, -15, 0)); box.setModelBound(new BoundingBox()); box.updateModelBound(); box.setRenderState(ts); objects.attachChild(box); ts = display.getRenderer().createTextureState(); t0 = TextureManager.loadTexture( TestSketch.class.getClassLoader().getResource("jmetest/data/texture/cloud_land.jpg"), Texture.MM_LINEAR_LINEAR, Texture.FM_LINEAR); t0.setWrap(Texture.WM_WRAP_S_WRAP_T); ts.setTexture(t0); box = new Box("floor", new Vector3f(-1000, -10, -1000), new Vector3f(1000, 10, 1000)); box.setLocalTranslation(new Vector3f(0, -100, 0)); box.setModelBound(new BoundingBox()); box.updateModelBound(); box.setRenderState(ts); objects.attachChild(box); return objects; }
/** * 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); }