Example usage for javax.media.j3d DirectionalLight DirectionalLight

List of usage examples for javax.media.j3d DirectionalLight DirectionalLight

Introduction

In this page you can find the example usage for javax.media.j3d DirectionalLight DirectionalLight.

Prototype

public DirectionalLight(Color3f color, Vector3f direction) 

Source Link

Document

Constructs and initializes a directional light.

Usage

From source file:SimpleCombine.java

/**
 * Add some lights so that we can illuminate the scene. This adds one
 * ambient light to bring up the overall lighting level and one directional
 * shape to show the shape of the objects in the scene.
 * /*from  www .  j  a  v  a 2s.  c  o m*/
 * @param b
 *            BranchGroup that the lights are to be added to.
 */
protected void addLights(BranchGroup b) {
    BoundingSphere bounds = new BoundingSphere(new Point3d(0.0, 0.0, 0.0), 100.0);
    Color3f lightColour1 = new Color3f(1.0f, 1.0f, 1.0f);
    Vector3f lightDir1 = new Vector3f(-1.0f, -1.0f, -1.0f);
    Color3f lightColour2 = new Color3f(1.0f, 1.0f, 1.0f);
    Vector3f lightDir2 = new Vector3f(1.0f, -1.0f, -1.0f);
    DirectionalLight light1 = new DirectionalLight(lightColour1, lightDir1);
    light1.setInfluencingBounds(bounds);
    DirectionalLight light2 = new DirectionalLight(lightColour2, lightDir2);
    light2.setInfluencingBounds(bounds);
    b.addChild(light1);
    b.addChild(light2);
}

From source file:SimpleSwitch.java

/**
 * Add some lights so that we can illuminate the scene. This adds one
 * ambient light to bring up the overall lighting level and one directional
 * shape to show the shape of the objects in the scene.
 * /*from  ww  w.  j  av  a2s  .c  om*/
 * @param b
 *            BranchGroup that the lights are to be added to.
 */
protected void addLights(BranchGroup b) {
    BoundingSphere bounds = new BoundingSphere(new Point3d(0.0, 0.0, 0.0), 100.0);
    Color3f lightColour1 = new Color3f(1.0f, 1.0f, 1.0f);
    Vector3f lightDir1 = new Vector3f(0.0f, -1.0f, 0.0f);
    Color3f lightColour2 = new Color3f(1.0f, 1.0f, 1.0f);
    Vector3f lightDir2 = new Vector3f(0.0f, 1.0f, 0.0f);
    DirectionalLight light1 = new DirectionalLight(lightColour1, lightDir1);
    light1.setInfluencingBounds(bounds);
    DirectionalLight light2 = new DirectionalLight(lightColour2, lightDir2);
    light2.setInfluencingBounds(bounds);
    b.addChild(light1);
    b.addChild(light2);
}

From source file:SimpleIndexedQuadSmooth.java

/**
 * Add some lights so that we can illuminate the scene. This adds one
 * ambient light to bring up the overall lighting level and one directional
 * shape to show the shape of the objects in the scene.
 * // w  w  w  . j av a  2s . co  m
 * @param b
 *            BranchGroup that the lights are to be added to.
 */
protected void addLights(BranchGroup b) {
    //Create a bounding sphere to act as the active bounds
    //of the lights
    BoundingSphere bounds = new BoundingSphere(new Point3d(0.0, 0.0, 0.0), 100.0);
    //Create the colours and directions
    Color3f lightColour = new Color3f(1.0f, 1.0f, 1.0f);
    Vector3f lightDir = new Vector3f(-1.0f, -1.0f, -1.0f);
    Color3f ambientColour = new Color3f(0.2f, 0.2f, 0.2f);
    //Create the lights
    AmbientLight ambientLight = new AmbientLight(ambientColour);
    ambientLight.setInfluencingBounds(bounds);
    DirectionalLight directionalLight = new DirectionalLight(lightColour, lightDir);
    directionalLight.setInfluencingBounds(bounds);
    //Add the lights to the branch
    b.addChild(ambientLight);
    b.addChild(directionalLight);
}

From source file:SimpleTextureGen.java

/**
 * Add some lights so that we can illuminate the scene. This adds one
 * ambient light to bring up the overall lighting level and one directional
 * shape to show the shape of the objects in the scene.
 * //from ww w  .j a  v a 2s.co m
 * @param b
 *            BranchGroup that the lights are to be added to.
 */
protected void addLights(BranchGroup b) {
    BoundingSphere bounds = new BoundingSphere(new Point3d(0.0, 0.0, 0.0), 100.0);
    Color3f lightColour1 = new Color3f(1.0f, 1.0f, 1.0f);
    Vector3f lightDir1 = new Vector3f(-1.0f, -1.0f, -1.0f);
    Color3f lightColour2 = new Color3f(1.0f, 1.0f, 1.0f);
    Vector3f lightDir2 = new Vector3f(0.0f, 0.0f, -1.0f);
    Color3f ambientColour = new Color3f(0.2f, 0.2f, 0.2f);
    AmbientLight ambientLight1 = new AmbientLight(ambientColour);
    ambientLight1.setInfluencingBounds(bounds);
    DirectionalLight directionalLight1 = new DirectionalLight(lightColour1, lightDir1);
    directionalLight1.setInfluencingBounds(bounds);
    b.addChild(ambientLight1);
    b.addChild(directionalLight1);
}

From source file:SimpleKeyNav.java

/**
 * Add some lights to the scene graph/* w w w.  j  a v  a 2  s  . c  o  m*/
 * 
 * @param b
 *            BranchGroup that the lights are added to
 */
protected void addLights(BranchGroup b) {
    // Create a bounds for the background and lights
    // Set up the global lights
    Color3f ambLightColour = new Color3f(0.5f, 0.5f, 0.5f);
    AmbientLight ambLight = new AmbientLight(ambLightColour);
    ambLight.setInfluencingBounds(bounds);
    Color3f dirLightColour = new Color3f(1.0f, 1.0f, 1.0f);
    Vector3f dirLightDir = new Vector3f(-1.0f, -1.0f, -1.0f);
    DirectionalLight dirLight = new DirectionalLight(dirLightColour, dirLightDir);
    dirLight.setInfluencingBounds(bounds);
    b.addChild(ambLight);
    b.addChild(dirLight);
}

From source file:PictureBall.java

public PictureBall() {

    // Create the universe
    SimpleUniverse universe = new SimpleUniverse();

    // Create a structure to contain objects
    BranchGroup group = new BranchGroup();

    // Set up colors
    Color3f black = new Color3f(0.0f, 0.0f, 0.0f);
    Color3f white = new Color3f(1.0f, 1.0f, 1.0f);
    Color3f red = new Color3f(0.7f, .15f, .15f);

    // Set up the texture map
    TextureLoader loader = new TextureLoader("K:\\3d\\Arizona.jpg", "LUMINANCE", new Container());
    Texture texture = loader.getTexture();
    texture.setBoundaryModeS(Texture.WRAP);
    texture.setBoundaryModeT(Texture.WRAP);
    texture.setBoundaryColor(new Color4f(0.0f, 1.0f, 0.0f, 0.0f));

    // Set up the texture attributes
    //could be REPLACE, BLEND or DECAL instead of MODULATE
    TextureAttributes texAttr = new TextureAttributes();
    texAttr.setTextureMode(TextureAttributes.MODULATE);
    Appearance ap = new Appearance();
    ap.setTexture(texture);/*from w w w. j  a va  2 s . c om*/
    ap.setTextureAttributes(texAttr);

    //set up the material
    ap.setMaterial(new Material(red, black, red, black, 1.0f));

    // Create a ball to demonstrate textures
    int primflags = Primitive.GENERATE_NORMALS + Primitive.GENERATE_TEXTURE_COORDS;
    Sphere sphere = new Sphere(0.5f, primflags, ap);
    group.addChild(sphere);

    // Create lights
    Color3f light1Color = new Color3f(1f, 1f, 1f);
    BoundingSphere bounds = new BoundingSphere(new Point3d(0.0, 0.0, 0.0), 100.0);

    Vector3f light1Direction = new Vector3f(4.0f, -7.0f, -12.0f);
    DirectionalLight light1 = new DirectionalLight(light1Color, light1Direction);
    light1.setInfluencingBounds(bounds);
    group.addChild(light1);

    AmbientLight ambientLight = new AmbientLight(new Color3f(.5f, .5f, .5f));
    ambientLight.setInfluencingBounds(bounds);
    group.addChild(ambientLight);

    // look towards the ball
    universe.getViewingPlatform().setNominalViewingTransform();

    // add the group of objects to the Universe
    universe.addBranchGraph(group);
}

From source file:ScenegraphTest.java

protected BranchGroup createSceneBranchGroup() {
    BranchGroup objRoot = super.createSceneBranchGroup();

    // create some lights for the scene
    Color3f lColor1 = new Color3f(0.7f, 0.7f, 0.7f);
    Vector3f lDir1 = new Vector3f(-1.0f, -1.0f, -1.0f);
    Color3f alColor = new Color3f(0.2f, 0.2f, 0.2f);

    AmbientLight aLgt = new AmbientLight(alColor);
    aLgt.setInfluencingBounds(createApplicationBounds());
    DirectionalLight lgt1 = new DirectionalLight(lColor1, lDir1);
    lgt1.setInfluencingBounds(createApplicationBounds());
    objRoot.addChild(aLgt);/*  w w  w .  j  a v a 2s. c o m*/
    objRoot.addChild(lgt1);

    // create a rotator to spin the whole model around the Y axis
    TransformGroup objTrans = new TransformGroup();
    objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
    objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);

    Transform3D yAxis = new Transform3D();
    Alpha rotationAlpha = new Alpha(-1, Alpha.INCREASING_ENABLE, 0, 0, 4000, 0, 0, 0, 0, 0);

    RotationInterpolator rotator = new RotationInterpolator(rotationAlpha, objTrans, yAxis, 0.0f,
            (float) Math.PI * 2.0f);
    rotator.setSchedulingBounds(createApplicationBounds());
    objTrans.addChild(rotator);

    // build the model itself using helper methods
    addHead(objTrans);
    objTrans.addChild(createArm(0, 0, -Math.PI * 0.5));
    objTrans.addChild(createArm(0, Math.PI, Math.PI * 0.5));

    objRoot.addChild(objTrans);

    return objRoot;
}

From source file:ModelClipTest2.java

public BranchGroup createSceneGraph() {
    // Create the root of the branch graph
    BranchGroup objRoot = new BranchGroup();

    // Create a Transformgroup to scale all objects so they
    // appear in the scene.
    TransformGroup objScale = new TransformGroup();
    Transform3D t3d = new Transform3D();
    t3d.setScale(0.4);//from ww  w.j  ava  2s . c o  m
    objScale.setTransform(t3d);
    objRoot.addChild(objScale);

    // Create lights
    BoundingSphere bounds = new BoundingSphere(new Point3d(0.0, 0.0, 0.0), 100.0);

    //Shine it with two colored lights.
    Color3f lColor0 = new Color3f(1.0f, 1.0f, 1.0f);
    Color3f lColor1 = new Color3f(0.5f, 0.0f, 0.5f);
    Color3f lColor2 = new Color3f(0.7f, 0.7f, 0.0f);
    Vector3f lDir1 = new Vector3f(-1.0f, -1.0f, 1.0f);
    Vector3f lDir2 = new Vector3f(0.0f, 0.0f, -1.0f);

    AmbientLight lgt0 = new AmbientLight(true, lColor2);
    DirectionalLight lgt1 = new DirectionalLight(lColor1, lDir1);
    DirectionalLight lgt2 = new DirectionalLight(lColor2, lDir2);
    lgt0.setInfluencingBounds(bounds);
    lgt1.setInfluencingBounds(bounds);
    lgt2.setInfluencingBounds(bounds);
    objScale.addChild(lgt0);
    objScale.addChild(lgt1);
    objScale.addChild(lgt2);

    // Create a Transformgroup for the geometry
    TransformGroup objRot = new TransformGroup();
    Transform3D t3d1 = new Transform3D();
    AxisAngle4f rot1 = new AxisAngle4f(0.0f, 1.0f, 0.0f, 45.0f);
    t3d1.setRotation(rot1);
    objRot.setTransform(t3d1);
    objScale.addChild(objRot);

    //Create a cylinder
    PolygonAttributes attr = new PolygonAttributes();
    attr.setCullFace(PolygonAttributes.CULL_NONE);
    Appearance ap = new Appearance();
    Material mat = new Material();
    mat.setLightingEnable(true);
    ap.setMaterial(mat);
    ap.setPolygonAttributes(attr);

    Cylinder CylinderObj = new Cylinder(0.5f, 2.2f, ap);
    objRot.addChild(CylinderObj);

    //Create a box
    Box BoxObj = new Box(0.8f, 0.8f, 0.8f, ap);
    objRot.addChild(BoxObj);

    // This Transformgroup is used by the mouse manipulators to
    // move the model clip planes.
    TransformGroup objTrans = new TransformGroup();
    objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
    objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
    objRot.addChild(objTrans);

    // Create the rotate behavior node
    MouseRotate behavior = new MouseRotate(objTrans);
    objTrans.addChild(behavior);
    behavior.setSchedulingBounds(bounds);

    // Create the zoom behavior node
    MouseZoom behavior2 = new MouseZoom(objTrans);
    objTrans.addChild(behavior2);
    behavior2.setSchedulingBounds(bounds);

    //Create Model Clip
    ModelClip mc = new ModelClip();
    boolean enables[] = { false, false, false, false, false, false };
    Vector4d eqn = new Vector4d(0.0, 1.0, 1.0, 0.0);
    mc.setEnables(enables);
    mc.setPlane(1, eqn);
    mc.setEnable(1, true);
    mc.setInfluencingBounds(bounds);
    objTrans.addChild(mc);

    // Let Java 3D perform optimizations on this scene graph.
    objRoot.compile();

    return objRoot;
}

From source file:StereoGirl.java

public BranchGroup createSceneGraph(int i) {
    System.out.println("Creating scene for: " + URLString);
    // Create the root of the branch graph
    BranchGroup objRoot = new BranchGroup();
    try {//w w w . ja  va  2s  .com

        Transform3D myTransform3D = new Transform3D();
        myTransform3D.setTranslation(new Vector3f(+0.0f, -0.1f, -1.2f));
        TransformGroup objTrans = new TransformGroup(myTransform3D);
        objTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
        Transform3D t = new Transform3D();
        TransformGroup tg = new TransformGroup(t);
        tg.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
        tg.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
        objTrans.addChild(tg);

        URL url = new URL(URLString);
        ObjectFile f = new ObjectFile();
        f.setFlags(ObjectFile.RESIZE | ObjectFile.TRIANGULATE | ObjectFile.STRIPIFY);
        System.out.println("About to load");
        Scene s = f.load(url);
        tg.addChild(s.getSceneGroup());
        System.out.println("Finished Loading");
        BoundingSphere bounds = new BoundingSphere(new Point3d(0.0, 0.0, 0.0), 100.0);
        Color3f light1Color = new Color3f(.9f, 0.8f, 0.8f);
        Vector3f light1Direction = new Vector3f(4.0f, -7.0f, -12.0f);
        DirectionalLight light1 = new DirectionalLight(light1Color, light1Direction);
        light1.setInfluencingBounds(bounds);
        objTrans.addChild(light1);
        // Set up the ambient light
        Color3f ambientColor = new Color3f(1.0f, .4f, 0.3f);
        AmbientLight ambientLightNode = new AmbientLight(ambientColor);
        ambientLightNode.setInfluencingBounds(bounds);
        objTrans.addChild(ambientLightNode);

        MouseRotate behavior = new MouseRotate();
        behavior.setTransformGroup(tg);
        objTrans.addChild(behavior);
        // Create the translate behavior node
        MouseTranslate behavior3 = new MouseTranslate();
        behavior3.setTransformGroup(tg);
        objTrans.addChild(behavior3);
        behavior3.setSchedulingBounds(bounds);

        KeyNavigatorBehavior keyNavBeh = new KeyNavigatorBehavior(tg);
        keyNavBeh.setSchedulingBounds(new BoundingSphere(new Point3d(), 1000.0));
        objTrans.addChild(keyNavBeh);

        behavior.setSchedulingBounds(bounds);
        objRoot.addChild(objTrans);
    } catch (Throwable t) {
        System.out.println("Error: " + t);
    }
    return objRoot;
}

From source file:Drag.java

/**
 *  Create the scenegraph for this program.
 *///from w w  w .  j a va 2 s.com
public BranchGroup createSceneGraph() {

    // Define colors
    Color3f white = new Color3f(1.0f, 1.0f, 1.0f);
    Color3f black = new Color3f(0.0f, 0.0f, 0.0f);
    Color3f red = new Color3f(0.80f, 0.20f, 0.2f);
    Color3f ambientRed = new Color3f(0.2f, 0.05f, 0.0f);
    Color3f ambient = new Color3f(0.2f, 0.2f, 0.2f);
    Color3f diffuse = new Color3f(0.7f, 0.7f, 0.7f);
    Color3f specular = new Color3f(0.7f, 0.7f, 0.7f);
    Color3f bgColor = new Color3f(0.05f, 0.05f, 0.2f);

    // Create the branch group
    BranchGroup branchGroup = new BranchGroup();

    // Create a Transformgroup to scale all objects so they
    // appear in the scene.
    TransformGroup objScale = new TransformGroup();
    Transform3D t3d = new Transform3D();
    t3d.setScale(0.4);
    objScale.setTransform(t3d);
    branchGroup.addChild(objScale);

    // Create the bounding leaf node
    BoundingSphere bounds = new BoundingSphere(new Point3d(0.0, 0.0, 0.0), 100.0);
    BoundingLeaf boundingLeaf = new BoundingLeaf(bounds);
    objScale.addChild(boundingLeaf);

    // Set up the background
    Background bg = new Background(bgColor);
    bg.setApplicationBounds(bounds);
    objScale.addChild(bg);

    // Create the ambient light
    AmbientLight ambLight = new AmbientLight(white);
    ambLight.setInfluencingBounds(bounds);
    objScale.addChild(ambLight);

    // Create the directional light
    Vector3f dir = new Vector3f(-1.0f, -1.0f, -1.0f);
    DirectionalLight dirLight = new DirectionalLight(white, dir);
    dirLight.setInfluencingBounds(bounds);
    objScale.addChild(dirLight);

    // Create the red appearance node
    Material redMaterial = new Material(ambientRed, black, red, specular, 75.0f);
    redMaterial.setLightingEnable(true);
    Appearance redAppearance = new Appearance();
    redAppearance.setMaterial(redMaterial);

    // Create the white appearance node
    Material whiteMaterial = new Material(ambient, black, diffuse, specular, 75.0f);
    whiteMaterial.setLightingEnable(true);
    Appearance whiteAppearance = new Appearance();
    whiteAppearance.setMaterial(whiteMaterial);

    // Create the transform node
    TransformGroup transformGroup = new TransformGroup();
    transformGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
    transformGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
    transformGroup.addChild(new Cube(redAppearance).getChild());
    //   transformGroup.addChild(new Corners(whiteAppearance).getChild());
    objScale.addChild(transformGroup);

    // Create the drag behavior node
    MouseRotate behavior = new MouseRotate();
    behavior.setTransformGroup(transformGroup);
    transformGroup.addChild(behavior);
    behavior.setSchedulingBounds(bounds);

    // Create the zoom behavior node
    MouseZoom behavior2 = new MouseZoom();
    behavior2.setTransformGroup(transformGroup);
    transformGroup.addChild(behavior2);
    behavior2.setSchedulingBounds(bounds);

    // Create the zoom behavior node
    MouseTranslate behavior3 = new MouseTranslate();
    behavior3.setTransformGroup(transformGroup);
    transformGroup.addChild(behavior3);
    behavior3.setSchedulingBounds(bounds);

    // Let Java 3D perform optimizations on this scene graph.
    branchGroup.compile();

    return branchGroup;
}