Chapter 7. Libraries

This document describes the layer structure of Realsoft 3D libraries. You need this information to find the libraries you need to link to your plugins and applications.

Every feature in Realsoft 3D is based on one or more other features. For example, all classes in Realsoft depend on a number of other classes, such as their super class. The same applies to everything else like instances and libraries.

This dependancy chaining must always be one directional. If class A uses class B, then class B must be totally unaware about the existence of class A. Two libraries, classes or instances may newer explicitely refer to each other. Another way of saying this is that all features in the program must are built in top of other features. This rule simply stems from the reusability requirement and if it didn't hold then it wouldn't be possible to remove a feature without breaking functionality below it.

Built-in Libraries

The following table describes how built-in libraries are layered in Realsoft 3D

User Interface Layer

r3wid2 Dynamic GUI customization system
r3wid High level GUI classes, such as main window, etc.
r3win Tool bars, tools, and other high level GUI classes for Realsoft3D.
r3winc Basic window classes for Realsoft3D
r3primgad Geometry specific gadgets (views for geometric primitives)
r3iagad Interactor specific gadgets (views for interactor models)
r3gad2 Basic user interface gadgets and views classes for models defined by r3code
r3gad Basic user interface gadgets and views classes for models defined by r3code

Model Layer (functionality)

r3code2 Realsoft3D class, standalone renderer and other top level functionality classes.
r3r3lay Classes for managing multiple projects and specifying Realsoft3D file format
r3ias Interactors for creating geometric objects from users input
r3ia Basic interactors for creating geometric objects from users input.
r3wire Real time rendering specific classes for wire frame and OpenGL rendering.
r3layer Classes for managing geometric objects, materials, etc. in projects.
r3constr Constructor objects, such as rotate constructor, move constructor, 3d lattice, point translator etc.
r3obj Geometric objects, such as NURBS, SDS, etc.
r3code Basic functionality for describing scenes (materials, post effects, etc.)
r3raytr Photo realistic renderer
r3shade Shading system for photo realistic rendering
r3frio Input / output specific classes for photo realistic rendering.
r3dtype Image formats (window image, ram image, image file formats, such as TGA, BMP, etc.)
r3pl r3d r3supp Scripting (r3pl), basic 3D functionality (r3d) and memory managment (r3supp).

Kernel Layer

r3oops Realsoft 3D object oriented programming system, implementing platform independent API to an underlying operating system. Sempahores, threads, widgets etc.

Plug-in libraries

Plugin libraries are usually vertically oriented in that they plug-in both functionality and user interface classes. For example, 'metaball' plug-in library plugs in all the metaball functionality classes (geometry, tool, interactor, property gadget etc.) - everything which has anything to do with metaballs.

Note: If you need to use classes in a plugin library, don't call their registry functions directly, because plugin classes are registered by the kernel library (see R3LibraryInit() function). Instead, make sure the plugin is loaded by calling:

    R3BOOL R3LoadPluginLibrary(R3APP *app, char *library);

where 'library' is the name of the plugin without the system specific prefix or postfix. For example:

    R3LoadPluginLibrary(app, "r3invkin");

The following table lists some plugins shipped with Realsoft 3D. Note: the list is not complete and may vary depending on the version.

r3opengl OpenGL rendering
r3constr Scripting constraint
r3creator Creator object
r3fieldev Field evaluator
r3fileinst File Instance
r3fprint Footstep
r3interpolator Interpolator, for rendering hairs etc.
r3link Real3D Link Object
r3metab Metaball tool set
r3pointdisplacer Various deformators, such as point displacer
r3sdsplus SDS tools
r3blur Blur post effect
r3detedg Edge detection post effect
r3dither Dithering post effect
r3fog Fog post effect
r3glow Glow post effect
r3gradient Gradien post effect
r3ligspr  
r3line Post effect
r3satura Saturation post effect
r3tblur Time blur post effect
r33dp 3D Painting Tool Set
r3analytictools Analytic tools
r3deformtools Interactive deformation tools
r3map Material mapping tool set
r3nurbs NURBS tool set
r3nurbstools Various NURBS tools
r3sdstools SDS tool set (SDS tool tab)
r3selpainter Selection painter tool
r3jpeg JPEG image format
r3ppm PPM image format
r3iff IFF image format
r3flc FLC animation format
r3avi AVI animation format
r3ico Microsoft .ICO image format
r3cineon Cineon file format
r3hook Special purpose image format
r3tga TrueVision Targa Image format
r3tt True Type font tool set
r33ds 3DS Object File Format
r3boujou Boujou motion capture import
r3dxf DXF file format
r3jsio JavaScript based file format
r3rplio RPL based file format
r3v3io Real 3D file format (import only)
r3js JavaScript scripting
r3invkin Inverse Kinematics object
VRMLPlugin VRML file format from Soft-Artists
IGESPlugin IGES file format from Soft-Artists
scratches VSL material effect from Schmeling Consulting
objformat WaveFront .OBJ file format
r3icarus Icarus motion capture import
r3rz3 Realwiz MatchMover motion capture import