Package com.ardor3d.scenegraph

Examples of com.ardor3d.scenegraph.Node


        _lightState.setLocalViewer(true);

        rand.setSeed(1337);

        // Now add all the lights.
        colornode = new Node("LightNode");

        for (int i = 0; i < 40; i++) {
            randomLight(i);
        }
        // Add the spheres.
View Full Code Here


            System.out.println("Problem setting up terrain...");
            ex1.printStackTrace();
        }

        // Setup labels for presenting example info.
        final Node textNodes = new Node("Text");
        _root.attachChild(textNodes);
        textNodes.getSceneHints().setRenderBucketType(RenderBucketType.Ortho);
        textNodes.getSceneHints().setLightCombineMode(LightCombineMode.Off);

        final double infoStartY = _canvas.getCanvasRenderer().getCamera().getHeight() / 2;
        for (int i = 0; i < _exampleInfo.length; i++) {
            _exampleInfo[i] = BasicText.createDefaultTextLabel("Text", "", 16);
            _exampleInfo[i].setTranslation(new Vector3(10, infoStartY - i * 20, 0));
            textNodes.attachChild(_exampleInfo[i]);
        }

        textNodes.updateGeometricState(0.0);
        updateText();

        _logicalLayer.registerTrigger(new InputTrigger(new KeyPressedCondition(Key.U), new TriggerAction() {
            public void perform(final Canvas source, final TwoInputStates inputStates, final double tpf) {
                updateTerrain = !updateTerrain;
View Full Code Here

    }

    @Override
    protected void initExample() {
        // make a scene node to hold our meshes.
        final Node scene = new Node();
        scene.getSceneHints().setCullHint(CullHint.Dynamic);
        _root.attachChild(scene);

        // Generate many boxes and place them in a 2D grid pattern, under the origNode.
        Mesh mesh;
        for (int i = 0, max = edge * edge; i < max; i++) {
            mesh = new StripBox("stripbox" + i, new Vector3(), .5, .5, .5);
            mesh.setTranslation(new Vector3(i % edge, i / edge, 0));

            mesh.setModelBound(new BoundingBox());
            mesh.setSolidColor(ColorRGBA.randomColor(null));
            origNode.attachChild(mesh);
        }

        // Create a single Mesh from the origNode and its children.
        final Mesh merged = MeshCombiner.combine(origNode);
        // attach to scene.. default will be to show the merged version first
        scene.attachChild(merged);

        // Use VBO, if indicated. This improves the rendering speed of the merged mesh.
        // Note that sometimes it is not efficient/possible to turn on VBO for tons of small meshes, but works well for
        // a single larger combined mesh.
        if (useVBO) {
            merged.getSceneHints().setDataMode(DataMode.VBO);
        }

        // and a texture, this will cover both the uncombined and combined meshes.
        final TextureState ts = new TextureState();
        ts.setTexture(TextureManager.load("images/ardor3d_white_256.jpg", Texture.MinificationFilter.Trilinear, true));
        scene.setRenderState(ts);

        // set a material state that applies our vertex coloring to the lighting equation
        final MaterialState ms = new MaterialState();
        ms.setColorMaterial(ColorMaterial.AmbientAndDiffuse);
        scene.setRenderState(ms);

        // position our camera to take in all of the mesh
        _canvas.getCanvasRenderer().getCamera().setLocation(edge / 2, edge / 2, 2 * edge);

        // |---------------- UI and control code below... ----------------|
        // Add a trigger on the M key to switch between merged and non-merged
        _logicalLayer.registerTrigger(new InputTrigger(new KeyPressedCondition(Key.M), new TriggerAction() {
            @Override
            public void perform(final Canvas source, final TwoInputStates inputState, final double tpf) {
                showMerged = !showMerged;
                if (showMerged) {
                    origNode.removeFromParent();
                    scene.attachChild(merged);
                } else {
                    merged.removeFromParent();
                    scene.attachChild(origNode);
                }
                updateMergedLabel();
            }
        }));

View Full Code Here

        ts.setTexture(TextureManager.load("images/ardor3d_white_256.jpg", Texture.MinificationFilter.Trilinear,
                TextureStoreFormat.GuessCompressedFormat, true));

        sphere.setRenderState(ts);

        final Node n1 = new Node("n1");
        n1.setTranslation(new Vector3(-50, 0, -200));

        _root.attachChild(n1);

        final Random rand = new Random(1337);
        for (int i = 0; i < 500; i++) {
            final Mesh sm = sphere.makeCopy(true);

            sm.setTranslation(new Vector3(rand.nextDouble() * 100.0 - 50.0, rand.nextDouble() * 100.0 - 50.0, rand
                    .nextDouble() * 100.0 - 50.0));
            n1.attachChild(sm);
        }

        final Node n2 = n1.makeCopy(true);
        n2.setTranslation(new Vector3(50, 0, -200));

        final MaterialState ms = new MaterialState();
        ms.setDiffuse(MaterialFace.FrontAndBack, ColorRGBA.RED);
        n2.setRenderState(ms);

        _root.attachChild(n2);
    }
View Full Code Here

        } catch (final IOException ex) {
            ex.printStackTrace();
        }

        _base = new Node("node");
        _root.attachChild(_base);

        final Node instancedBase = new Node("instancedBase");
        instancedBase.setRenderState(_shader);
        _base.attachChild(instancedBase);
        instancedBase.getSceneHints().setCullHint(CullHint.Dynamic);

        final Node unInstancedBase = new Node("unInstancedBase");
        unInstancedBase.setRenderState(_shader);
        _base.attachChild(unInstancedBase);
        unInstancedBase.getSceneHints().setCullHint(CullHint.Always);

        final int nrOfObjects = 500;

        generateSpheres(instancedBase, true, nrOfObjects);
        generateSpheres(unInstancedBase, false, nrOfObjects);

        _logicalLayer.registerTrigger(new InputTrigger(new KeyPressedCondition(Key.V), new TriggerAction() {
            public void perform(final Canvas source, final TwoInputStates inputStates, final double tpf) {
                vboMode = (vboMode + 1) % 3;
                if (vboMode == 0) {
                    t.setText("[V] VBO Off");
                    _base.getSceneHints().setDataMode(DataMode.Arrays);
                    // run this in the opengl thread
                    GameTaskQueueManager.getManager(_canvas.getCanvasRenderer().getRenderContext()).render(
                            new Callable<Void>() {
                                public Void call() throws Exception {
                                    final DeleteVBOsVisitor viz = new DeleteVBOsVisitor(_canvas.getCanvasRenderer()
                                            .getRenderer());
                                    _base.acceptVisitor(viz, false);
                                    return null;
                                }
                            });
                } else if (vboMode == 1) {
                    t.setText("[V] VBO On");
                    _base.getSceneHints().setDataMode(DataMode.VBO);
                } else if (vboMode == 2) {
                    t.setText("[V] VBO Interleaved On");
                    _base.getSceneHints().setDataMode(DataMode.VBOInterleaved);
                }
            }
        }));

        _logicalLayer.registerTrigger(new InputTrigger(new KeyPressedCondition(Key.I), new TriggerAction() {

            public void perform(final Canvas source, final TwoInputStates inputStates, final double tpf) {
                instancingEnabled = !instancingEnabled;
                if (instancingEnabled) {
                    t2.setText("[I] Instancing On");
                    instancedBase.getSceneHints().setCullHint(CullHint.Dynamic);
                    unInstancedBase.getSceneHints().setCullHint(CullHint.Always);

                } else {
                    t2.setText("[I] Instancing Off");
                    instancedBase.getSceneHints().setCullHint(CullHint.Always);
                    unInstancedBase.getSceneHints().setCullHint(CullHint.Dynamic);

                }
            }
        }));
View Full Code Here

        skybox = buildSkyBox();
        skybox.getSceneHints().setAllPickingHints(false);
        _root.attachChild(skybox);

        // Setup labels for presenting example info.
        final Node textNodes = new Node("Text");
        _root.attachChild(textNodes);
        textNodes.getSceneHints().setRenderBucketType(RenderBucketType.Ortho);
        textNodes.getSceneHints().setLightCombineMode(LightCombineMode.Off);

        final double infoStartY = _canvas.getCanvasRenderer().getCamera().getHeight() / 2;
        for (int i = 0; i < _exampleInfo.length; i++) {
            _exampleInfo[i] = BasicText.createDefaultTextLabel("Text", "", 16);
            _exampleInfo[i].setTranslation(new Vector3(10, infoStartY - i * 20, 0));
            textNodes.attachChild(_exampleInfo[i]);
        }

        textNodes.updateGeometricState(0.0);
        updateText();

        _logicalLayer.registerTrigger(new InputTrigger(new KeyPressedCondition(Key.V), new TriggerAction() {
            public void perform(final Canvas source, final TwoInputStates inputStates, final double tpf) {
                if (!inMemoryTerrainData.isRunning()) {
View Full Code Here

    @Override
    protected void initExample() {
        _canvas.setTitle("Atlas Example");

        // Use a separate node for packing/combining, otherwise we will get the text packed as well
        boxNode = new Node("boxes");
        _root.attachChild(boxNode);

        resetBoxes();

        // Setup text labels for presenting example info.
        final Node textNodes = new Node("Text");
        _root.attachChild(textNodes);
        textNodes.getSceneHints().setRenderBucketType(RenderBucketType.Ortho);
        textNodes.getSceneHints().setLightCombineMode(LightCombineMode.Off);

        final double infoStartY = _canvas.getCanvasRenderer().getCamera().getHeight() - 20;
        for (int i = 0; i < _exampleInfo.length; i++) {
            _exampleInfo[i] = BasicText.createDefaultTextLabel("Text", "", 12);
            _exampleInfo[i].setTranslation(new Vector3(10, infoStartY - i * 16, 0));
            textNodes.attachChild(_exampleInfo[i]);
        }

        textNodes.updateGeometricState(0.0);
        updateText();

        // Pack textures into atlas
        _logicalLayer.registerTrigger(new InputTrigger(new KeyPressedCondition(Key.F), new TriggerAction() {
            public void perform(final Canvas source, final TwoInputStates inputStates, final double tpf) {
View Full Code Here

        // Need to setup fog cause the water use it for various calculations.
        setupFog();

        // Collect everything we want reflected in the water under a node.
        final Node reflectedNode = new Node("reflectNode");
        reflectedNode.attachChild(createObjects());
        buildSkyBox();
        reflectedNode.attachChild(skybox);
        _root.attachChild(reflectedNode);

        final Camera cam = _canvas.getCanvasRenderer().getCamera();

        // Create a new WaterNode with refraction enabled.
        waterNode = new WaterNode(cam, 4, false, true);
        // Setup textures to use for the water.
        waterNode.setNormalMapTextureString("images/water/normalmap3.dds");
        waterNode.setDudvMapTextureString("images/water/dudvmap.png");
        waterNode.setFallbackMapTextureString("images/water/water2.png");

        // setting to default value just to show
        waterNode.setWaterPlane(new Plane(new Vector3(0.0, 1.0, 0.0), 0.0));

        // Create a quad to use as geometry for the water.
        waterQuad = new Quad("waterQuad", 1, 1);
        // Hack the quad normals to point up in the y-axis. Since we are manipulating the vertices as
        // we move this is more convenient than rotating the quad.
        final FloatBuffer normBuf = waterQuad.getMeshData().getNormalBuffer();
        normBuf.clear();
        normBuf.put(0).put(1).put(0);
        normBuf.put(0).put(1).put(0);
        normBuf.put(0).put(1).put(0);
        normBuf.put(0).put(1).put(0);
        waterNode.attachChild(waterQuad);

        waterNode.addReflectedScene(reflectedNode);
        waterNode.setSkybox(skybox);

        _root.attachChild(waterNode);

        // Setyp textfields for presenting example info.
        final Node textNodes = new Node("Text");
        _root.attachChild(textNodes);
        textNodes.getSceneHints().setRenderBucketType(RenderBucketType.Ortho);
        textNodes.getSceneHints().setLightCombineMode(LightCombineMode.Off);

        final double infoStartY = _canvas.getCanvasRenderer().getCamera().getHeight() / 2;
        for (int i = 0; i < _exampleInfo.length; i++) {
            _exampleInfo[i] = BasicText.createDefaultTextLabel("Text", "", 16);
            _exampleInfo[i].setTranslation(new Vector3(10, infoStartY - i * 20, 0));
            textNodes.attachChild(_exampleInfo[i]);
        }

        textNodes.updateGeometricState(0.0);
        updateText();

        // Register keyboard triggers for manipulating example
        _logicalLayer.registerTrigger(new InputTrigger(new KeyPressedCondition(Key.SPACE), new TriggerAction() {
            public void perform(final Canvas source, final TwoInputStates inputStates, final double tpf) {
View Full Code Here

        final TextureState ts = new TextureState();
        ts.setEnabled(true);
        ts.setTexture(TextureManager.load("images/ardor3d_white_256.jpg", Texture.MinificationFilter.Trilinear,
                TextureStoreFormat.GuessCompressedFormat, true));

        n1 = new Node("n1");
        n1.setTranslation(new Vector3(0, 0, -200));
        _root.attachChild(n1);

        final Random rand = new Random(1337);

        final Sphere sphere = new Sphere("Sphere", 8, 8, 1);
        sphere.updateModelBound();

        for (int i = 0; i < 200; i++) {
            final Mesh sm = sphere.makeCopy(true);

            sm.setTranslation(new Vector3(rand.nextDouble() * 100.0 - 50.0, rand.nextDouble() * 100.0 - 50.0, rand
                    .nextDouble() * 100.0 - 50.0));
            sm.setRenderState(ts);
            n1.attachChild(sm);
        }

        n2 = new Node("n2");
        n2.setTranslation(new Vector3(0, 0, -200));

        final MaterialState ms = new MaterialState();
        ms.setDiffuse(MaterialFace.FrontAndBack, ColorRGBA.RED);
        n2.setRenderState(ms);
View Full Code Here

        imposter0.setRedrawRate(0.0); // No timed update
        imposter0.setCameraAngleThreshold(1.0 * MathUtils.DEG_TO_RAD);
        imposter0.setCameraDistanceThreshold(0.1);
        _root.attachChild(imposter0);

        final Node scene1 = createModel();
        scene1.setTranslation(0, 0, 0);
        imposter0.attachChild(scene1);

        final QuadImposterNode imposter1 = new QuadImposterNode("Imposter1", 128, 128, _settings.getDepthBits(),
                _settings.getSamples(), _timer);
        imposter1.setRedrawRate(0.0); // No timed update
        imposter1.setCameraAngleThreshold(1.0 * MathUtils.DEG_TO_RAD);
        imposter1.setCameraDistanceThreshold(0.1);
        _root.attachChild(imposter1);

        final Node scene2 = createModel();
        scene2.setTranslation(-15, 0, -25);
        imposter1.attachChild(scene2);

        final QuadImposterNode imposter2 = new QuadImposterNode("Imposter2", 64, 64, _settings.getDepthBits(),
                _settings.getSamples(), _timer);
        imposter2.setRedrawRate(0.0); // No timed update
        imposter2.setCameraAngleThreshold(1.0 * MathUtils.DEG_TO_RAD);
        imposter2.setCameraDistanceThreshold(0.1);
        _root.attachChild(imposter2);

        final Node scene3 = createModel();
        scene3.setTranslation(15, 0, -25);
        imposter2.attachChild(scene3);

        _logicalLayer.registerTrigger(new InputTrigger(new KeyPressedCondition(Key.SPACE), new TriggerAction() {
            public void perform(final Canvas source, final TwoInputStates inputStates, final double tpf) {
                showImposter = !showImposter;
View Full Code Here

TOP

Related Classes of com.ardor3d.scenegraph.Node

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.