public void render(File file) {
    w = new World<RGBColor>();
    builder = new WorldBuilder<RGBColor>(w);
    builder.build(file);
    w.initialize();

    vp = w.getViewPlane();
    imf = new ImageFrame(vp.resolution, false, null);

    if (w.isDynamic()) {

      //            w.render(imf);
      //            imf.repaint();
      //            imf.finish();

      w.set();
      while (w.hasNext()) {
        w.render(imf);
        imf.repaint();
        w.step();
        SwingUtilities.invokeLater(
            new Runnable() {
              @Override
              public void run() {}
            });
      }
      imf.finish();
    } else {
      w.render(imf);

      String fileName2 = GuiUtilities.getOutputPngFileName(file.getName());
      PngFilm png = new PngFilm(fileName2, imf.getFilm());
      png.finish();

      imf.repaint();
      imf.finish();
    }
  }