Ejemplo n.º 1
0
  /**
   * Method to access appearance of axes in 3D
   *
   * @param initValue false if appearance has to be changed according to user value
   */
  public static void setAxisAppearanceValues(Object initValue) {
    int[] colors = J3DUtils.get3DColorAxes();

    for (int i = 0; i < axisApps.length; i++) {
      Color userColor = new Color(colors[i]);

      if (axisApps[i] == null) {
        axisApps[i] = new J3DAppearance(TransparencyAttributes.NONE, 0.5f, userColor);

        // Turn off face culling so we can see the back side of the labels
        // (since we're not using font extrusion)
        PolygonAttributes polygonAttributes = new PolygonAttributes();
        polygonAttributes.setCullFace(PolygonAttributes.CULL_NONE);

        // Make the axis lines 2 pixels wide
        LineAttributes lineAttributes = new LineAttributes();
        lineAttributes.setLineWidth(3.0f);

        ColoringAttributes colorAttrib = new ColoringAttributes();
        colorAttrib.setColor(new Color3f(userColor));
        colorAttrib.setCapability(ColoringAttributes.ALLOW_COLOR_READ);
        colorAttrib.setCapability(ColoringAttributes.ALLOW_COLOR_WRITE);
        axisApps[i].setColoringAttributes(colorAttrib);
        axisApps[i].setPolygonAttributes(polygonAttributes);
        axisApps[i].setLineAttributes(lineAttributes);
        axisApps[i].setCapability(Appearance.ALLOW_COLORING_ATTRIBUTES_READ);
        axisApps[i].setCapability(Appearance.ALLOW_COLORING_ATTRIBUTES_WRITE);

        RenderingAttributes ra = new RenderingAttributes();
        ra.setCapability(RenderingAttributes.ALLOW_VISIBLE_READ);
        ra.setCapability(RenderingAttributes.ALLOW_VISIBLE_WRITE);
        ra.setVisible(J3DUtils.is3DAxesOn());
        axisApps[i].setRenderingAttributes(ra);
      } else if (initValue == null) // redoing color only when it was changed in GUI
      axisApps[i].set3DColor(null, userColor);
    }
  }
Ejemplo n.º 2
0
  /**
   * Method to access appearance for cells in 3D
   *
   * @param initValue no null if appearance has to be changed according to user value. Using this
   *     mechanism to avoid the creation of new Boolean() just for the checking
   */
  public static void setCellAppearanceValues(Object initValue) {
    Color3f userColor = new Color3f(new Color(User.getColor(User.ColorPrefType.INSTANCE_3D)));

    if (cellApp == null) {
      cellApp = new J3DAppearance(TransparencyAttributes.SCREEN_DOOR, 0, null);

      RenderingAttributes ra = new RenderingAttributes();
      ra.setCapability(RenderingAttributes.ALLOW_VISIBLE_READ);
      ra.setCapability(RenderingAttributes.ALLOW_VISIBLE_WRITE);
      ra.setVisible(J3DUtils.is3DCellBndOn());
      cellApp.setRenderingAttributes(ra);

      // Set up the polygon attributes
      PolygonAttributes pa = new PolygonAttributes();
      pa.setCullFace(PolygonAttributes.CULL_NONE);
      pa.setPolygonMode(PolygonAttributes.POLYGON_LINE);
      cellApp.setPolygonAttributes(pa);

      //            TextureAttributes texAttr = new TextureAttributes();
      //            texAttr.setTextureMode(TextureAttributes.MODULATE);
      //            //texAttr.setTextureColorTable(pattern);
      //            cellApp.setTextureAttributes(texAttr);

      LineAttributes lineAttr = new LineAttributes();
      lineAttr.setLineAntialiasingEnable(true);
      cellApp.setLineAttributes(lineAttr);

      // ** Data for cells
      ColoringAttributes ca = new ColoringAttributes();
      ca.setCapability(ColoringAttributes.ALLOW_COLOR_WRITE);
      ca.setCapability(ColoringAttributes.ALLOW_COLOR_READ);
      ca.setColor(userColor);
      cellApp.setColoringAttributes(ca);
      cellApp.setCapability(Appearance.ALLOW_COLORING_ATTRIBUTES_READ);
      cellApp.setCapability(Appearance.ALLOW_COLORING_ATTRIBUTES_WRITE);
    } else if (initValue == null) // redoing color only when it was changed in GUI
    {
      ColoringAttributes ca = cellApp.getColoringAttributes();
      Color3f curColor = new Color3f();
      ca.getColor(curColor);
      if (!userColor.equals(curColor)) ca.setColor(userColor);
    }
  }