(Java)Membuat Animasi Gerak pada object_JMonkey Engine

Banyak orang untuk bermimpi dan mimpi itu terkadang mengherankan, ada yang mimpi memiliki istri cantik, ada yang bermimpi memiliki rumah mewah dan ada yang bermimpi menjadi seorang poligami. mimpi wajib ada di setiap orang dan semua orang, terus apa yang harus agan lakukan, agar mimpi itu terwujud?. di pagi hari ane banyak melihat update status tmen ane di jejaring sosial..tiiitttttt(sensor). semua itu bertema tentang mimpi mereka, ane sampe ketawa sendiri membaca semua itu, ya kalo di bilang anak gaul, itulah mimpi ane terus apa mimpi loe.

pagi yang cerah dan jiwa yang bersih, kita akan memulai bermain animasi gerak pada object, oh ya sebelumnya mungkin agan heran, ane selalu update postingan setiap hari, terkadang 2 postingan dan terkadang lebih, itu lah mimpi ane, karena ane yakin dengan kerja keras dan doa dari orang tua, isya allah semua itu akan berjalan dengan baik, sebnarnya konspe animasi gerak ini di lakukan dengan 2 objek, yang satu file animasi yang di buat di engine agan dan yang satu file kontrol yang di buat di atas code java, dan semua itu mutlak harus bersinkronisasi. mari kode di bawah ini, dan langsung di praktekkan di kanvas agan.

oh ya sebelumnya silakan download animasi engine berekstesi XML DiSini.

Masukka 2 file xml tersebut dalam aseet- model

animationpackage

Buka file class main.java dan tuliskan code di bawah ini :

 package mygame;

import com.jme3.animation.AnimChannel;
import com.jme3.animation.AnimControl;
import com.jme3.animation.AnimEventListener;
import com.jme3.animation.LoopMode;
import com.jme3.app.SimpleApplication;
import com.jme3.input.KeyInput;
import com.jme3.input.controls.ActionListener;
import com.jme3.input.controls.KeyTrigger;
import com.jme3.light.DirectionalLight;
import com.jme3.math.ColorRGBA;
import com.jme3.math.Vector3f;
import com.jme3.renderer.RenderManager;
import com.jme3.scene.Node;

/**
 * test
 * @author normenhansen
 */
public class Main extends SimpleApplication implements AnimEventListener {
  private AnimChannel channel;
  private AnimControl control;
  Node player;
  public static void main(String[] args) {
    Main app = new Main();
    app.start();
  }
 
  @Override
  public void simpleInitApp() {
    viewPort.setBackgroundColor(ColorRGBA.Green);
    initKeys();
    DirectionalLight dl = new DirectionalLight();
    dl.setDirection(new Vector3f(-0.1f, -1f, -1).normalizeLocal());
    rootNode.addLight(dl);
    player = (Node) assetManager.loadModel("Models/oto.mesh.xml");
    player.setLocalScale(0.5f);
    rootNode.attachChild(player);
    control = player.getControl(AnimControl.class);
    control.addListener(this);
    channel = control.createChannel();
    channel.setAnim("stand");
  }
 
  public void onAnimCycleDone(AnimControl control, AnimChannel channel, String animName) {
    if (animName.equals("Walk")) {
      channel.setAnim("stand", 0.50f);
      channel.setLoopMode(LoopMode.DontLoop);
      channel.setSpeed(1f);
    }
  }
 
  public void onAnimChange(AnimControl control, AnimChannel channel, String animName) {
    // unused
  }
 
  /** Custom Keybinding: Map named actions to inputs. */
  private void initKeys() {
    inputManager.addMapping("Walk", new KeyTrigger(KeyInput.KEY_SPACE));
    inputManager.addListener(actionListener, "Walk");
  }
  private ActionListener actionListener = new ActionListener() {
    public void onAction(String name, boolean keyPressed, float tpf) {
      if (name.equals("Walk") && !keyPressed) {
        if (!channel.getAnimationName().equals("Walk")) {
          channel.setAnim("Walk", 0.50f);
          channel.setLoopMode(LoopMode.Loop);
        }
      }
    }
  };
    @Override
    public void simpleUpdate(float tpf) {
        //TODO: add update code
    }

    @Override
    public void simpleRender(RenderManager rm) {
        //TODO: add render code
    }
}

/*
 Animasi Pemicu Setelah User Input

Ada animasi ambien seperti binatang atau pohon yang Anda mungkin ingin untuk memicu di loop acara utama. Dalam kasus lain, animasi yang dipicu oleh interaksi pengguna, seperti input kunci. Anda ingin memainkan animasi berjalan ketika pemain menekan tombol tertentu (di sini spasi), pada saat yang sama seperti avatar melakukan tindakan berjalan dan perubahan lokasi.

Menginisialisasi pengontrol input baru (di simpleInitApp ()).
Tuliskan metode convenience initKey () dan menyebutnya dari simpleInitApp ().
Tambahkan pemetaan kunci dengan nama sebagai tindakan yang ingin Anda memicu.
Berikut misalnya, Anda memetakan Berjalan ke tombol Spacebar.
Tambahkan pendengar masukan untuk tindakan Walk.
   initKeys private void () {
     inputManager.addMapping ("Berjalan", KeyTrigger baru (KeyInput.KEY_SPACE));
     inputManager.addListener (ActionListener, "berjalan");
   }
 */


/*
Exercises

Exercise 1: Two Animations

Make a mouse click trigger another animation sequence!

Create a second channel in the controller
Create a new key trigger mapping and action (see: Hello Input)
Tip: Do you want to find out what animation sequences are available in the model? Use:
for (String anim : control.getAnimationNames()) { System.out.println(anim); }
Exercise 2: Revealing the Skeleton (1)

Open the skeleton.xml file in a text editor of your choice. You don't have to be able to read or write these xml files (Blender does that for you) – but it is good to know how skeletons work. "There's no magic to it!"

Note how the bones are numbered and named. All names of animated models follow a naming scheme.
Note the bone hierarchy that specifies how the bones are connected.
Note the list of animations: Each animation has a name, and several tracks. Each track tells individual bones how and when to transform. These animation steps are called keyframes.
Exercise 3: Revealing the Skeleton (2)

Add the following import statements for the SkeletonDebugger and Material classes:

     import com
 */

Run

HelloAnimation

Animasi Pemicu Setelah User Input

/*

Ada animasi ambien seperti binatang atau pohon yang Anda mungkin ingin untuk memicu di loop acara utama. Dalam kasus lain, animasi yang dipicu oleh interaksi pengguna, seperti input kunci. Anda ingin memainkan animasi berjalan ketika pemain menekan tombol tertentu (di sini spasi), pada saat yang sama seperti avatar melakukan tindakan berjalan dan perubahan lokasi.

Menginisialisasi pengontrol input baru (di simpleInitApp ()).
Tuliskan metode convenience initKey () dan menyebutnya dari simpleInitApp ().
Tambahkan pemetaan kunci dengan nama sebagai tindakan yang ingin Anda memicu.
Berikut misalnya, Anda memetakan Berjalan ke tombol Spacebar.
Tambahkan pendengar masukan untuk tindakan Walk.
   initKeys private void () {
     inputManager.addMapping (“Berjalan”, KeyTrigger baru (KeyInput.KEY_SPACE));
     inputManager.addListener (ActionListener, “berjalan”);
   }

Exercises

Exercise 1: Two Animations

Make a mouse click trigger another animation sequence!

Create a second channel in the controller
Create a new key trigger mapping and action (see: Hello Input)
Tip: Do you want to find out what animation sequences are available in the model? Use:
for (String anim : control.getAnimationNames()) { System.out.println(anim); }
Exercise 2: Revealing the Skeleton (1)

Open the skeleton.xml file in a text editor of your choice. You don’t have to be able to read or write these xml files (Blender does that for you) – but it is good to know how skeletons work. “There’s no magic to it!”

Note how the bones are numbered and named. All names of animated models follow a naming scheme.
Note the bone hierarchy that specifies how the bones are connected.
Note the list of animations: Each animation has a name, and several tracks. Each track tells individual bones how and when to transform. These animation steps are called keyframes.
Exercise 3: Revealing the Skeleton (2)

Add the following import statements for the SkeletonDebugger and Material classes:

import com

Advertisements

Published by

jarcode

hello I am jarcode

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s