Aug 29, 2014

36. Line

Line is one of the built-in mesh shapes.




Line requires the starting point and ending point, both being Vector3f objects. We can also set Line properties such as the line width.


        // *** 1. Start (Line objects)
        Line line = new Line(Vector3f.ZERO,new Vector3f(1,1,0));
        line.setLineWidth(5);
        Line line1 = new Line(Vector3f.ZERO,new Vector3f(1,-1f,0));
        line1.setLineWidth(5);
        Line line2 = new Line(Vector3f.ZERO,new Vector3f(1,0,3));
        line2.setLineWidth(3);
        // *** 1. End



Three Geometries are created from the line shapes. We have to use a String identifier and mesh object.


        // *** 2. Start (Geometry objects)
        Geometry gline = new Geometry("upLine",line);
        Geometry gline1 = new Geometry("downLine",line1);
        Geometry gline2 = new Geometry("horizLine",line2);
        // *** 2. End



The three lines are set to different colors.


        // *** 3. Start (3 Materials, Different Colors)
        Material mat = new Material(assetManager,
                "Common/MatDefs/Misc/Unshaded.j3md");
        mat.setColor("Color", ColorRGBA.Blue);
        Material mat1 = new Material(assetManager,
                "Common/MatDefs/Misc/Unshaded.j3md");
        mat1.setColor("Color", ColorRGBA.Red);
        Material mat2 = new Material(assetManager,
                "Common/MatDefs/Misc/Unshaded.j3md");
        mat2.setColor("Color", ColorRGBA.Green);
        gline.setMaterial(mat);
        gline1.setMaterial(mat1);
        gline2.setMaterial(mat2);
        // *** 3. End



We clone the last 3 Geometries, and Scale and Translate them. If you did not scale them, it would be hard to see them.


        // *** 4. Start (clones with scale and translations)
        Geometry gline3 = new Geometry("line3");
        Geometry gline4 = new Geometry("line4");
        Geometry gline5 = new Geometry("line5");
        gline3 = gline.clone();
        gline3.setLocalScale(20);
        gline3.setLocalTranslation(x, y, 0);
        gline4 = gline1.clone();
        gline4.setLocalScale(20);
        gline4.setLocalTranslation(x, y, 0);
        gline5 = gline2.clone();
        gline5.setLocalScale(20);
        gline5.setLocalTranslation(x, y, 0);
        // *** 4. End



package mygame;

import com.jme3.app.SimpleApplication;
import com.jme3.material.Material;
import com.jme3.math.ColorRGBA;
import com.jme3.math.Vector3f;
import com.jme3.renderer.RenderManager;
import com.jme3.scene.Geometry;
import com.jme3.scene.shape.Line;

public class JMonkey36 extends SimpleApplication {
    public static void main(String[] args) {
        JMonkey36 app = new JMonkey36();
        app.start();
    }

    @Override
    public void simpleInitApp() {
        setDisplayFps(false);
        setDisplayStatView(false);
        viewPort.setBackgroundColor(ColorRGBA.White);
        // *** 1. Start (Line objects)
        Line line = new Line(Vector3f.ZERO,new Vector3f(1,1,0));
        line.setLineWidth(5);
        Line line1 = new Line(Vector3f.ZERO,new Vector3f(1,-1f,0));
        line1.setLineWidth(5);
        Line line2 = new Line(Vector3f.ZERO,new Vector3f(1,0,3));
        line2.setLineWidth(3);
        // *** 1. End
        // *** 2. Start (Geometry objects)
        Geometry gline = new Geometry("upLine",line);
        Geometry gline1 = new Geometry("downLine",line1);
        Geometry gline2 = new Geometry("horizLine",line2);
        // *** 2. End
        // *** 3. Start (3 Materials, Different Colors)
        Material mat = new Material(assetManager,
                "Common/MatDefs/Misc/Unshaded.j3md");
        mat.setColor("Color", ColorRGBA.Blue);
        Material mat1 = new Material(assetManager,
                "Common/MatDefs/Misc/Unshaded.j3md");
        mat1.setColor("Color", ColorRGBA.Red);
        Material mat2 = new Material(assetManager,
                "Common/MatDefs/Misc/Unshaded.j3md");
        mat2.setColor("Color", ColorRGBA.Green);
        gline.setMaterial(mat);
        gline1.setMaterial(mat1);
        gline2.setMaterial(mat2);
        // *** 3. End
        int x = settings.getWidth()/4; // 2dgui traslated
        int y = settings.getHeight()/4; // to (x,y)
        
        // *** 4. Start (clones with scale and translations)
        Geometry gline3 = new Geometry("line3");
        Geometry gline4 = new Geometry("line4");
        Geometry gline5 = new Geometry("line5");
        gline3 = gline.clone();
        gline3.setLocalScale(20);
        gline3.setLocalTranslation(x, y, 0);
        gline4 = gline1.clone();
        gline4.setLocalScale(20);
        gline4.setLocalTranslation(x, y, 0);
        gline5 = gline2.clone();
        gline5.setLocalScale(20);
        gline5.setLocalTranslation(x, y, 0);
        // *** 4. End
        
        rootNode.attachChild(gline);
        rootNode.attachChild(gline1);
        rootNode.attachChild(gline2);
        
        guiNode.attachChild(gline3);
        guiNode.attachChild(gline4);
        guiNode.attachChild(gline5);
    }

    @Override
    public void simpleUpdate(float tpf) {
    }

    @Override
    public void simpleRender(RenderManager rm) {
    }
}



No comments:

Post a Comment