For more than a decade and a half Okino
Computer Graphics has been dedicated to the task of developing an advanced,
photo-realistic 3D graphics toolkit with the power and flexibility of many of the current well known 3D packages.
Such a toolkit would allow third-party software developers to quickly integrate
advanced 3D rendering capabilities into their own software packages, thus alleviating the
added expense of developing such technology in-house. A short history of the toolkit's evolution can be read at the end of this
document.
The NuGraf Developer's 3D Toolkit is a powerful and comprehensive 3D
graphics framework providing full-featured hierarchical database management, primitive modeling and
high-quality "photo-realistic" rendering capabilities. The toolkit is designed
as a complete "drop-in" solution for third party software vendors seeking to
quickly and efficiently incorporate high quality 3D computer graphics into existing or new
software applications. Such software packages include CAD packages, furniture
visualization programs, modelers, architectural visualization programs, medical and
engineering analysis programs, or any program using a realtime, low quality renderer such
as OpenGL or DirectX.
The toolkit provides features and functionality commonly found in most standalone turn-key
rendering systems. Moreover, it provides this functionality in a
machine-independent library of routines which can be utilized by any end-user application
program. The library is accessed by a small number of 'C' language procedural functions,
each of which accepts a free-form stream of command options.
1.1 Distinguishing Features of the NuGraf Toolkit
Since its inception the NuGraf Toolkit has grown to encompass a
number of distinguishing features and technologies:
Although NuGraf is described as a drop-in C library, in actual fact
it should be regarded as a complete 3D application program but without any form of
graphical user interface. With the addition of a graphical interface the toolkit can be
used to quickly create stand-alone applications programs such as Okino's award-winning
"NuGraf". NuGraf incorporates an extensive list of database support routines, modeling
primitives and numerous system functions which allow complex interactive modeling and
rendering applications to be quickly developed.
Over a decade and a half (and counting) of development, testing and tuning. As such NuGraf is a
VERY stable software graphics platform.
Having being ported to numerous machine architectures and operating
systems, it can be said that NuGraf is highly portable. In addition, the ability to define
custom output drivers allows for output device independence.
The NuGraf Toolkit is also used as the core technology upon which
Okino's "NuGraf", PolyTrans, PolyTrans-for-Maya and PolyTrans-for-MAX products are based. NuGraf
is an advanced photo-realistic rendering, visualization and high quality 3D model
translation program available for Microsoft Windows. PolyTrans is similar in appearance but designed specifically for 3D model translation and
viewing.
NuGraf supports all well-known features of comparable high-end
animation, modeling and/or rendering systems. In particular, NuGraf's renderer implements
MIPmap texture filtering, a rich set of parametric primitives, 2D and 3D texture mapping,
high-quality anti-aliasing, soft shadows, environment mapping and countless shading
parameters.
NuGraf was written to work equally well from lowly PCs to high-end
workstations. NuGraf is fast and efficient, producing test images in mere
seconds, complex images in under a minute and very complex scenes in a few minutes. All
code has been carefully optimized during code development, not months or years later. In
addition to code optimization, much care has been taken in keeping memory usage to a
complete minimum (useful for PC-based machines).
The unique open-ended interface language allows new features to be
added to the toolkit without the need to add new function calls or to modify the structure
of existing NuGraf application programs.
Extensive error checking and error recovery. If any errors occur then
NuGraf will backtrack to a stable state before continuing. This feature is particularly
important and evident in the interface language.
With regards to the features and functionality of NuGraf's scanline
and ray trace renderers:
NuGraf can render any dataset given to it, due in part to the
countless checkpoints added to the software and the integrity of its rendering algorithms.
NuGraf incorporates highly optimized Z-Scanline
and ray trace renderers. Of particular interest is the scanline
memory allocator which manages memory on a per-object, per-polygon and per-vertex basis to
significantly reduce memory usage. As for the ray tracer, it has been developed to render
very large datasets quickly and with low memory usage (characteristics which are not
common to many commercial ray tracers). Speed optimizations have been an integral part of
the NuGraf development process since 1988. These optimizations often go unnoticed until
NuGraf is compared to other rendering systems which are slower or take considerably more
memory to render using the same dataset.
NuGraf incorporates a hybrid A-buffer/Z-Scanline rendering algorithm
which clips, sorts in Z and shades the polygon database on a pixel-by-pixel basis. This
allows transparency and area-based anti-aliasing effects to be accommodated. Every
fragment of a polygon that falls within the square boundaries of a pixel are accounted for
in the final pixel color. The NuGraf scanline renderer is considerably more complex than a
renderer which does not support transparency.
NuGraf incorporates an optimized, multi-threaded ray tracer which
supports all rendering attributes and options of the Z-Scanline renderer in addition to
ray traced shadows, transparency, reflections and refraction (including fresnel components
for accurate glass effects). A large part of the ray tracer's development has been
dedicated to creating a fast and efficient space partitioning algorithm which allows rays
to be quickly intersected with large polygonal datasets.
NuGraf excels in its support for 2D image and 3D procedural texture mapping. Texture can be easily and precisely added to any
object. Unlimited 2D textures, 3D textures and various material properties can also be
layered on top of each other. Moreover, the dozens of built-in 3D procedural textures and
their associated control parameters allow for unlimited variations in texture patterns.
NuGraf has completely automatic generation of shadow maps, texture
MIPmaps, planar reflection maps and 6-sided cubical environment maps. Other renderers
often require user intervention to manually create these maps, or else these renderers
revert to the slower ray tracing technique to handle shadows and reflections.
Unlike most photo-realistic rendering systems, the NuGraf Z-Scanline
renderer interpolates the texture coordinates at the four pixel corners rather than at the
pixel center. This allows the texture module to exactly determine what portion of a
texture map requires filtering. This technique guarantees automatic texture antialiasing
without any need for user involvement, which is particularly useful when using spherical
environment mapping.
NuGraf internally keeps track of the bounding box of each object.
While not of particular interest, the bounding boxes are used throughout the toolkit to
speed up numerous operations, such as in the culling process or in the scanline renderer's
dynamic memory allocator algorithm.