Inicio     |     Sobre     |     GitHub     |     Games     |     Contato                        

terça-feira, 31 de maio de 2016

[Guia] jMonkey Básico 03: Olá Nó e Olá Ativos (Hello Node | Hello Assets)



Essa é a parte três do guia, aqui você terá acesso a dois algoritmos apresentados nos tutoriais para iniciantes em jMonkey, no primeiro algoritmo você cria dois cubos de cores diferentes, muda suas posições e utiliza um nó raiz para transformar e anexar outros nós. 


Código 01:


package jme3test.helloworld;

import com.jme3.app.SimpleApplication;
import com.jme3.material.Material;
import com.jme3.math.ColorRGBA;
import com.jme3.math.Vector3f;
import com.jme3.scene.Geometry;
import com.jme3.scene.Node;
import com.jme3.scene.shape.Box;

/* Como usar os nós para manipular objetos na cena.
 * Você pode girar, traduzir e dimensionar objetos, manipulando seus nós.
 * O nó raiz é especial: Somente o que está ligado ao nó raiz aparece na cena. */

public class HelloNode extends SimpleApplication {

    public static void main(String[] args){
        HelloNode app = new HelloNode();
        app.start();
    }

    @Override
    public void simpleInitApp() {

        /** cria uma caixa azul nas coordenadas (1,-1,1) */
        Box box1 = new Box(1,1,1);
        Geometry blue = new Geometry("Box", box1);
        blue.setLocalTranslation(new Vector3f(1,-1,1));
        Material mat1 = new Material(assetManager,
                "Common/MatDefs/Misc/Unshaded.j3md");
        mat1.setColor("Color", ColorRGBA.Blue);
        blue.setMaterial(mat1);

        /** cria uma caixa vermelha reta, acima da azul (1,3,1) */
        Box box2 = new Box(1,1,1);
        Geometry red = new Geometry("Box", box2);
        red.setLocalTranslation(new Vector3f(1,3,1));
        Material mat2 = new Material(assetManager,
                "Common/MatDefs/Misc/Unshaded.j3md");
        mat2.setColor("Color", ColorRGBA.Red);
        red.setMaterial(mat2);

        /** Criar um nó dinâmico em (0,0,0) e o anexa ao nó raiz */
        Node pivot = new Node("pivot");
        rootNode.attachChild(pivot); // colocar este nó na cena

        /** Prende as duas caixas para o nó *pivô*. (E momentaneamente ao nó raiz.) */
        pivot.attachChild(blue);
        pivot.attachChild(red);

        /** Gira o nó dinâmico */
        pivot.rotate(.4f,.4f,0f);
    }
}



Código 02:

package jme3test.helloworld;

import com.jme3.app.SimpleApplication;
import com.jme3.font.BitmapText;
import com.jme3.light.DirectionalLight;
import com.jme3.material.Material;
import com.jme3.math.Vector3f;
import com.jme3.scene.Geometry;
import com.jme3.scene.Spatial;
import com.jme3.scene.shape.Box;

/** Como carregar um modelo OBJ, e OgreXML, um material/textura, ou texto. */

public class HelloAssets extends SimpleApplication {

    public static void main(String[] args) {
        HelloAssets app = new HelloAssets();
        app.start();
    }

    @Override
    public void simpleInitApp() {

        // Importando um modelo 3D (.obj) de um determinado caminho
        Spatial teapot = assetManager.loadModel("Models/Teapot/Teapot.obj");
        Material mat_default = new Material(
            assetManager, "Common/MatDefs/Misc/ShowNormals.j3md");
        teapot.setMaterial(mat_default);
        rootNode.attachChild(teapot);

        // Criar uma parede com uma textura simples de test_data
        Box box = new Box(2.5f,2.5f,1.0f);
        Spatial wall = new Geometry("Box", box );
        Material mat_brick = new Material(
            assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
        mat_brick.setTexture("ColorMap",     assetManager.loadTexture("Textures/Terrain/BrickWall/BrickWall.jpg"));
        wall.setMaterial(mat_brick);
        wall.setLocalTranslation(2.0f,-2.5f,0.0f);
        rootNode.attachChild(wall);

        // Exibir uma linha de texto com uma fonte padrão
        guiNode.detachAllChildren();
        guiFont = assetManager.loadFont("Interface/Fonts/Default.fnt");
        BitmapText helloText = new BitmapText(guiFont, false);
        helloText.setSize(guiFont.getCharSet().getRenderedSize());
        helloText.setText("Eu Sou a CarolHCS");
        helloText.setLocalTranslation(300, helloText.getLineHeight(), 0);
        guiNode.attachChild(helloText);

        // Carrega o modelo de test_data (OgreXML + material + textura)
        Spatial ninja = assetManager.loadModel("Models/Ninja/Ninja.mesh.xml");
        ninja.scale(0.05f, 0.05f, 0.05f);
        ninja.rotate(0.0f, -3.0f, 0.0f);
        ninja.setLocalTranslation(0.0f, -5.0f, -2.0f);
        rootNode.attachChild(ninja);
        // Você deve adicionar uma luz para tornar o modelo visível
        DirectionalLight sun = new DirectionalLight();
        sun.setDirection(new Vector3f(-0.1f, -0.7f, -1.0f));
        rootNode.addLight(sun);

    }
}

Para o segundo código é necessário utilizar o arquivo jme3-test-data.jar, para adiciona-lo clique com o botão direito em seu projeto, escolha "Propriedades" ("Properties"), vá para "Bibliotecas" ("Libraries"), pressione "Adicionar Biblioteca" ("Add Library") e adiciona a biblioteca pré-configurada "jme3-test-data" library.


Referências para saber mais:

Nenhum comentário:

Postar um comentário