public void setupPortrayals() {
    // display.destroySceneGraph();

    // determine
    SimpleColorMap cm = new SimpleColorMap();
    cm.setLevels(0.0, HeatBugs.MAX_HEAT, Color.blue, Color.red);

    // specify that the "bugs" are going to be cones pointing straight up.
    TransformedPortrayal3D p = new TransformedPortrayal3D(new ConePortrayal3D());
    p.rotateX(90.0);
    bugPortrayal.setPortrayalForAll(p);

    // the heat can be tiles, meshes, or tiles with no change in height (NOZ).
    // Specify which one here.
    switch (heatmode) {
      case TILE:
        quadP = new TilePortrayal(cm, 1f / 2000);
        break;
      case MESH:
        quadP = new MeshPortrayal(cm, 1f / 2000);
        break;
      case NOZ:
        quadP =
            new TilePortrayal(cm); // no height changes, but we need to raise the bugs a little bit
        bugPortrayal.translate(0, 0, 1.0f);
        break;
    }
    heatPortrayal.setPortrayalForAll(quadP);
    // With this line we can tell the bug portrayal to use two triangles rather than
    // a rect to draw each cell.  See the documentation for ValueGrid2DPortrayal3D for
    // why this would be useful and when it is not.
    //      heatPortrayal.setUsingTriangles(true);

    heatPortrayal.setField(((HeatBugs) state).valgrid);
    bugPortrayal.setField(((HeatBugs) state).buggrid);

    // reschedule the displayer
    display.reset();

    // rebuild the scene graph
    display.createSceneGraph();
  }