public void setPointReflection(double d) {
   pointReflectionSlider.setValue((int) (100 * d));
   if (cmVertices != null) cmVertices.setBlendColor(new Color(1f, 1f, 1f, (float) d));
 }
 public void setFaceReflection(double d) {
   faceReflectionSlider.setValue((int) (100 * d));
   if (cmFaces != null) cmFaces.setBlendColor(new Color(1f, 1f, 1f, (float) d));
 }
 public void setLineReflection(double d) {
   lineReflectionSlider.setValue((int) (100 * d));
   if (cmEdges != null) {
     cmEdges.setBlendColor(new Color(1f, 1f, 1f, (float) d));
   }
 }
Esempio n. 4
0
  public static SceneGraphComponent getSkyBox(JrScene scene) {
    Appearance rootApp = scene.getSceneRoot().getAppearance();
    if (rootApp == null || rootApp.getAttribute(SKY_BOX) == INHERITED) {
      return null;
    }
    CubeMap skyBox = (CubeMap) createAttributeEntity(CubeMap.class, SKY_BOX, rootApp, true);
    if (skyBox == null) return null;
    if (skyBox.getFront() == null
        || skyBox.getBack() == null
        || skyBox.getLeft() == null
        || skyBox.getRight() == null
        || skyBox.getTop() == null
        || skyBox.getBottom() == null) return null;
    SceneGraphComponent r = new SceneGraphComponent();
    IndexedFaceSetFactory ifsf = new IndexedFaceSetFactory();
    ifsf.setVertexCount(4);
    ifsf.setFaceCount(1);
    ifsf.setVertexCoordinates(new double[][] {{1, 1, 0}, {1, -1, 0}, {-1, -1, 0}, {-1, 1, 0}});
    ifsf.setFaceIndices(new int[][] {{0, 1, 2, 3}});
    double o = 0.005;
    ifsf.setVertexTextureCoordinates(
        new double[][] {{1 - o, 1 - o}, {1 - o, o}, {o, o}, {o, 1 - o}});
    ifsf.update();

    SceneGraphComponent front = new SceneGraphComponent();
    Appearance frontApp = new Appearance();
    createTexture(frontApp, POLYGON_SHADER, skyBox.getFront());
    front.setAppearance(frontApp);
    front.setGeometry(ifsf.getGeometry());
    front.setName("front");
    euclidean().translate(0, 0, 1.0).rotate(PI, 0, 1, 0).assignTo(front);

    SceneGraphComponent back = new SceneGraphComponent();
    Appearance backApp = new Appearance();
    createTexture(backApp, POLYGON_SHADER, skyBox.getBack());
    back.setAppearance(backApp);
    back.setGeometry(ifsf.getGeometry());
    back.setName("back");
    euclidean().translate(0, 0, -1.0).assignTo(back);

    SceneGraphComponent top = new SceneGraphComponent();
    Appearance topApp = new Appearance();
    createTexture(topApp, POLYGON_SHADER, skyBox.getTop());
    top.setAppearance(topApp);
    top.setGeometry(ifsf.getGeometry());
    top.setName("bottom");
    euclidean().translate(0, 1.0, 0).rotate(PI / 2, 1, 0, 0).rotate(-PI / 2, 0, 0, 1).assignTo(top);

    SceneGraphComponent bottom = new SceneGraphComponent();
    Appearance bottomApp = new Appearance();
    createTexture(bottomApp, POLYGON_SHADER, skyBox.getBottom());
    bottom.setAppearance(bottomApp);
    bottom.setGeometry(ifsf.getGeometry());
    bottom.setName("top");
    euclidean()
        .translate(0, -1.0, 0)
        .rotate(-PI / 2, 1, 0, 0)
        .rotate(PI / 2, 0, 0, 1)
        .assignTo(bottom);

    SceneGraphComponent left = new SceneGraphComponent();
    Appearance leftApp = new Appearance();
    createTexture(leftApp, POLYGON_SHADER, skyBox.getLeft());
    left.setAppearance(leftApp);
    left.setGeometry(ifsf.getGeometry());
    left.setName("left");
    euclidean().translate(-1.0, 0, 0).rotate(PI / 2, 0, 1, 0).assignTo(left);

    SceneGraphComponent right = new SceneGraphComponent();
    Appearance rightApp = new Appearance();
    createTexture(rightApp, POLYGON_SHADER, skyBox.getRight());
    right.setAppearance(rightApp);
    right.setGeometry(ifsf.getGeometry());
    right.setName("right");
    euclidean().translate(1.0, 0, 0).rotate(-PI / 2, 0, 1, 0).assignTo(right);

    r.addChildren(front, back, top, bottom, left, right);
    r.setName("skybox");
    euclidean().rotate(PI / 2, 0, 1, 0).rotate(PI, 1, 0, 0).scale(1000.0).assignTo(r);

    Appearance skyBoxApp = new Appearance();
    skyBoxApp.setAttribute(POLYGON_SHADER + "." + LIGHTING_ENABLED, false);
    skyBoxApp.setAttribute(POLYGON_SHADER + "." + AMBIENT_COLOR, WHITE);
    skyBoxApp.setAttribute(POLYGON_SHADER + "." + AMBIENT_COEFFICIENT, 1.0);
    skyBoxApp.setAttribute(POLYGON_SHADER + "." + DIFFUSE_COEFFICIENT, 0.0);
    skyBoxApp.setAttribute(POLYGON_SHADER + "." + SPECULAR_COEFFICIENT, 0.0);
    r.setAppearance(skyBoxApp);
    return r;
  }