Documentation: Web | PDF
License: NCSA Open Source
The 3D Utilities are a Java library and set of tools built on top of OpenGL to load, save, view, manipulate, and compare 3D file content from a variety of formats. Including supported formats from NCSA Portfolio, the 3D Utilities contains loaders for 3DS, AC, BYU, COB, DAE, DXF, FACET, GEO, GTS, IOB, JVX, KMZ, LWS, MS3D, NFF, OBJ, OFF, PHD, PLG, PLY, POLY, Q3O, RAW, SDML, STP, STL, TET, TM, TRI, VTK, WRL, X, and X3D. Data loaded from the 3D files are returned in a simple Mesh data structure containing the models vertices and faces.
The 3D Utilities package was created by a need to load, view/manipulate, and compare 3D files from among the many formats that exist today. The open source project is based around a single simple data structure for representing 3D objects, a polygonal mesh. Though a variety of data structures exist to represent 3D data, the polygonal mesh is by far one of the simplest and as such is fairly easy for most people to deal with. In addition, being a fairly low level representation of a 3D surface most other 3D representations can be converted to this representation while the inverse can often be non-trivial.
By fixing our 3D data representation we provide a uniform means of constructing a library of file loaders, model viewers, manipulation methods, and comparison measures. Of particular importance is the effort to construct a large open library of 3D file loaders. To our knowledge there does not exist an active open source library for loading 3D data. Java 3D attempted to provide such a functionality some time ago by providing a “Loader” interface by which developers could construct new file loaders. Over the years however very few loaders have been made and distributed. It is possible that the complexity of the very flexible scene graphs used by Java 3D made it a hindrance for all but the more advanced programmers to attempt constructing file loaders. Coupled with the effort required to construct loaders for the many file formats available, many of which being propriety with closed specifications, likely did not help the situation.
It is this projects hope that by “keeping things simple” and imposing this simple mesh data structure we can succeed where others have failed. We hope to encourage programmers at large, both advanced and novice, to contribute file loaders. At the same time we hope to provide a free means of loading a large numbers of 3D formats to developers (in particular new programmers, students, who often re-implement a simple loader to incorporate models in their projects). By developing the library in Java we hope to provide this functionality across platforms and over the web.
Source code is available from our Subversion repository at:
and can be checked out as follows:
svn checkout https://isda.ncsa.illinois.edu/svn/nara/trunk/3DUtilities
If you wish to contribute code to the project please contact firstname.lastname@example.org.