JavaFX™ 3D Model Browser

ModelBrowserJFX based on the JavaFX 8 3D API   -   Browse through your 3D models


ModelBrowerJFX 0.4.1

Early release of a long-term development.


  • Importers for the 3D model formats 3ds, COLLADA™, FXML, OBJ, STL, and X3D™
  • JavaFX FXMLLoader for 3D FXML files
  • FXML export of loaded scene graph
  • File system browser with single click selection
  • Scene graph tree of loaded 3D file with variation of draw mode and visibility
  • Mouse 3D navigation
  • Viewpoint creation for camera nodes of COLLADA, FXML, and X3D files
  • Common viewpoints for all loaded models
  • Shape3D picking
  • Center of rotation selection
  • Scene and viewing axes
  • Scene anti-aliasing
  • AquaFX support
  • User guide

Available model importers:

  • 3dsModelImporterJFX 0.7
  • ColModelImporterJFX 0.6
  • FxmlModelImporterJFX 0.5
  • ObjModelImporterJFX 0.8
  • StlMeshImporterJFX 0.7
  • X3dModelImporterJFX 0.4

  • FXMLLoader JavaFX 8-rc


The ModelBrowserJFX is released by InteractiveMesh and provided to you free of charge for academic, commercial, and personal use. includes jar, bat/sh-files, and license [download].

System requirements

JRE/JavaFX 8 [Java SE Downloads].

Maps/textures based on 'tif'-images require installed Java Advanced Imaging (JAI) or the cross-platform packages "jai_codec.jar" and "jai_core.jar" on the classpath. JAI 1.3.1 cross-platform packages:, last item on [JAI 1.3.1].

AquaFX is only supported on Mac OS X. The README-file informs how to enable it, download is available here [AquaFX].

JavaFX 8 restrictions/issues

  • Rendering of double-sided geometry with culling property set to CullFace.NONE might fail due to not flipped normals (RT-30623).
  • Transparency/opacity support is still under development (RT-28874, RT-34356).

Model importers restrictions/issues

  • Converting normals to smoothing groups supports only a single group per face but not multiple groups per face. See javafx.scene.shape.TriangleMesh.getFaceSmoothingGroups() for more details.
  • Smoothing groups are generated correctly only if the normals are non-redundant indexed.
  • Transparency is not active, see above.