View Single Post
# 5 29-09-2003 , 05:03 AM
nspiratn's Avatar
Registered User
Join Date: Dec 2002
Location: CA
Posts: 211
Well, I've busted my brains for the past few days and have finally come up with this. In case anybody is interested. PHEW!

1) the core of 3dsmax is HOOPS device interface (HDI).It is a commercial-grade graphics system providing the algorithms and data-structures necessary to incorporate 2D and 3D, vector and raster graphics into interactive CAD/CAM/CAE,Scientific Visualization, GIS, and many other types of engineering applications.

2) The geometric objects provided by 3ds max are parametric objects. They are defined by their user interface parameters(Radius, Segments count, Hemisphere setting, etc), rather than directly by the vertices and faces which make up a mesh surface. These parameters are stored into memory when 3dsmax saves the object. Modifiers manipulate these objects. Every modification is saved in a Modifier Stack which the user can come back to at any time and change any parameters required.

3) Now comes the interesting part. When a user runs 3dsMax, they're essentially using 'Plug-ins'. In 3ds Max, Functionality is implemented using plug-in classes which are object oriented. Plugins are programmed using MaxScript, which is very much like C++. All plug-in classes have one Base class that they use to communicate with 3dsMax itself. Plug-ins communicate with each other using the 'Reference Architecture" in 3DsMax as follows :

Say Plugin A depends on Plugin B. If plugin B changes, it notifies A(and any other plugins that might depend on it)of that change. Also, Plugin A in turn notifies that it has received a change notification.
The ability to make plug-ins independent OR work with each other is what makes 3dsMAx's architecture powerful.

4) In a 3dsMax scene, every Object is associated with a Node. This node manages information like transform controller, the material used, data about parent-child hierarchies, and grouping information which allow the object
to exist in the scene.

5) The Geometric pipeline is the system used by 3ds max that allows a node in the scene to be altered, through the application of modifiers.At the beginning of a pipeline is the Base Object. At the end of a pipeline is the world space state of the object. This world space state is what appears in the 3D viewports and is rendered.For the system to evaluate the state of the object at the end of the pipeline, it must apply each modification along the way, from beginning to end. This process can be very slow.

6) Performance :
To maximize the speed that the system can evaluate the state of a node, the system maintains a World space Cache and Validity Interval for each node in the scene. Whenever a node needs to perform an operation, the system checks the validity interval at that time to see if the cache is valid. If it is, the operation is performed using the cached representation. If it is not, the pipeline is evaluated and the cache is made valid at that time. The validity
interval is also updated to reflect the new cache. The operation is then performed.
As an additional mechanism to speed up processing, a pipeline is broken up into Channels. There are separate channels for geometry (vertices), topology (face or polygon structures), texture vertices (UV coordinates), sub-object selection, level of selection, and display control. This enhances the cache system of 3ds max.Instead of just caching one global state for the object, it can cache separate portions of it based on the channels.


~nspiratn