コード例 #1
0
  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();
      }
    }
  }
コード例 #2
0
ファイル: TrailManager.java プロジェクト: toloober/jme-demos
  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);
  }
コード例 #3
0
  /**
   * Load the texture linked by given file and set its wrap modes based on given values.
   *
   * @param file The <code>String</code> file location.
   * @param maxU The <code>Float</code> maximum u value.
   * @param maxV The <code>Float</code> maximum v value.
   * @return The loaded <code>Texture</code> instance.
   */
  private Texture loadTexture(String file, float maxU, float maxV) {
    // Add a locator according to the texture string.
    int last = file.lastIndexOf("/") + 1;
    if (last < 0) last = file.length();
    File path = new File(file.substring(0, last));

    try {
      if (path != null) {
        SimpleResourceLocator locator = new SimpleResourceLocator(path.toURI().toURL());
        ResourceLocatorTool.addResourceLocator(ResourceLocatorTool.TYPE_TEXTURE, locator);
      }
    } catch (URISyntaxException e) {
      e.printStackTrace();
    } catch (MalformedURLException e) {
      e.printStackTrace();
    }
    // Load URL.
    URL url = ResourceLocatorTool.locateResource(ResourceLocatorTool.TYPE_TEXTURE, file);
    // Load the texture and set the wrap mode.
    Texture map =
        TextureManager.loadTexture(url, this.miniFilter, this.magFilter, this.anisotropic, true);
    if (map != null) {
      if (maxU > 1) map.setWrap(Texture.WrapAxis.S, Texture.WrapMode.Repeat);
      else map.setWrap(Texture.WrapAxis.S, Texture.WrapMode.Clamp);
      if (maxV > 1) map.setWrap(Texture.WrapAxis.T, Texture.WrapMode.Repeat);
      else map.setWrap(Texture.WrapAxis.T, Texture.WrapMode.Clamp);
    }
    return map;
  }
コード例 #4
0
ファイル: BattleState.java プロジェクト: snowgit/snowman
 private Texture loadTexture(String name) {
   URL url =
       getClass()
           .getClassLoader()
           .getResource("com/sun/darkstar/example/snowman/data/texture/environment/" + name);
   return TextureManager.loadTexture(
       url, MinificationFilter.Trilinear, MagnificationFilter.Bilinear);
 }
コード例 #5
0
ファイル: Enemy.java プロジェクト: edewit/1942-remake
  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();
  }
コード例 #6
0
ファイル: TextureState.java プロジェクト: jmecn/learnJME3
 /** Constructor instantiates a new <code>TextureState</code> object. */
 public TextureState() {
   if (defaultTexture == null)
     try {
       defaultTexture =
           TextureManager.loadTexture(
               TextureState.class.getResource("notloaded.png"),
               Texture.MinificationFilter.Trilinear,
               Texture.MagnificationFilter.Bilinear,
               0.0f,
               true);
     } catch (Exception e) {
       logger.log(Level.WARNING, "Failed to load default texture: notloaded.png", e);
     }
 }
コード例 #7
0
  /**
   * 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);
  }
コード例 #8
0
ファイル: MainGameState.java プロジェクト: toloober/jme-demos
  /** 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));
  }
コード例 #9
0
  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);
  }
コード例 #10
0
ファイル: TestOctahedron.java プロジェクト: jmecn/learnJME3
  /**
   * 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);

  }
コード例 #11
0
  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();
  }
コード例 #12
0
 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();
 }
コード例 #13
0
  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;
  }
コード例 #14
0
  /**
   * 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);
  }
コード例 #15
0
  /**
   * 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);
  }