Home Downloads Docs Support Order FAQ


Point Oven 3DS Max


Introduction

Point Oven is a commercial suite of plugins designed to bake vertex and fcurve data to streamline pipelines, and to transfer data between different applications. Point Oven can be used to simplify your existing 3DS Max scenes by baking complex deformations, or to share data with other users who have Point Oven but may use a different 3D application. Point Oven currently supports XSI, Maya, 3DS Max, Lightwave and 3DS Max.

The 3DS Max Point Oven plugins allow you to export several different file formats:

MDD Files
Mdd files are used by Point Oven to store deformation data. When an MDD file is exported, Point Oven saves the position of every vertex on the chosen mesh for every frame of the animation specified. Once baked, the mesh can be stripped of all deformers and animation, and have just the Point Oven MDD reader plugin applied. This will then read the data for the specified frame and deform the mesh to the correct position.
For high resolution poly meshes this can be alot of data to read/write and thus MDD files can be quite large, however, the Point Oven MDD reader plugin only loads the data for the specified frame, minimising memory requirements. The data is stored as binary for speed and efficiency and thus can't be read in a text viewer.

LWO2 Files
LWO2 or LWO is the standard object file format used by Lightwave 3D. Point Oven uses this file format to transfer objects/meshes with multiple UV maps between the supported applications. It is important for Lightwave users to make sure they remove all 2 point polygons and skelegons from any lwo file they wish to use with Point Oven on other programs.

Scene files (LWS, FXS, PSC)
LWS is the Lightwave scene file format, FXS is the 3DS Max scene file format, and PSC is the native Point Oven scene file format. These are all formats that share the same principle of referencing objects and storing motion information. This means that if you had a simple scene with a cube animating up and down, these files would store a path to the cube LWO2 to import, and the fcurve motion data of it moving up and down. If you export the motion via an mdd file, the motion isn't stored in the scene file, instead the scene file references the mdd file to apply to the object. At no point is the mesh information stored in any of these files. LWS and FXS files are ascii formats and can be loaded into a text editor, where as PSC is a binary format.



Baking


The baker plugin is the first of the Point Oven tools you are likely to use and can be found under the utility Tab in more->Point_Oven. It is with this you can bake your mesh and fcurve data to the various supported file formats. When you run the Point Oven Baker plugin you will be presented with the baking interface which I will explain in sections:



Initial parameters




Most of the interface is broken into sections but the first few controls are global controls that effect all other options. These global controls are Start time, End time and Scale. These inform Point Oven which part of the timeline to bake and export, and the scale control is a global scale that all deformations and transforms will be multiplied by. The scale contyrol is very useful when exporting to other applications which have a different world scale than 3DS Max.



MDD parameters




The mdd parameters allow you to activate mdd file baking of meshes, and to specify where the files are to be stored. The items to be baked are based on the current selection, any non mesh items will be ignored. Point Oven will name the mdd files according to the items you are baking. The frame range for the Baking process will be taken from the in and out frames set in global Start time and End time.



Scene parameters




The scenes block is where you specify which scene formats you wish to export and where to save them. The controls on this tab are fairly self explanatory, just enable the formats you want to export and specify a file path by either typing in the path or by pressing the button to the right of the text box to browse to the path.
You may not wish to save any scene files, if this is the case you can skip this block.



Motion parameters




Along side the baking of geometry, Point Oven can also bake fcurves and convert them for use with the other supported packages. Point Oven refers to this as motion processing, and thus the Motion parameters give you control over what is processed and how it is stored. For motions to be processed, the “Enable Motions” check box must be activated. Once active you must also activate the types of objects to export motions for, you have a choice between, Cameras, Lights, Nulls, and Mesh objects. If you happen to enable Cameras and there aren't any to be processed, Point Oven will simply ignore this flag.

By default, Point Oven will embed the motion of the item into the scene file providing that a scene file has been setup to bake to.



Reading MDD files


Now that you have some mdd files you can apply them to objects in 3DS Max with the Point Oven Reader plugin. The Point Oven plugin can be found in the modifiers list in 3DS Maxs modifiers mode. Once the Point Oven Reader plugin is applied to the object this interface will be presented:




To apply your MDD file simply browse to the file using the "Set" button. Once there is a valid path the geometry will displace and animate when scrubbing the time line. Point Oven dynamically loads the data to maximise memory efficiency, so playback is governed by how much geometry you are displacing, and how fast your network/disk is.

The Time Offset and End Behaviour controls allow you to control the playback of the MDD file. Offset shifts the entire MDD animation forward or backwards by the number of frames specified. You can also animate the offset allowing looping and other highly customisable effects. End Behaviour allows you to set what the MDD player will do at the end of the MDD file animation. Here you can tell it to stop playing, loop, or ping-pong. These effects are possible through animating the offset parameter, but End Behaviour gives you a much faster and easier approach to this. By combining animated offsets and loop end behaviour you can get some really crazy results!

Interpolation allows you to choose how the MDD file is interpolated at subframe steps. Subframe steps are required when using motion blur or using a different fps in the scene to the MDD file. An example of this is if you bake an MDD file from a scene at 25 frames per second, and then load it into a scene at 30 frames per second, Point Oven will try and scale the MDD file by 1.2. The scale by 1.2 makes frame 16 frame 19.2! In this case Point Oven interpolates frame 20 and 19 to get an approximated value for frame 19.2. The linear mode will simply use 0.8 of the value at frame 19 and 0.2 of the value at frame 20, where as the spline interpolation maps a spline across 3 frames of the MDD file thus getting a non linear subframe value. The spline method is better for objects that are rotating very fast, but is more computationally expensive.

The MDD Reader interface also provides the user with three read only parameters that display information about the data the MDD file contains. These are the number of frames of animation, the amount of vertices in the mdd file mesh, and the frames per second the MDD was baked at. This data is very useful for identifying you have the correct MDD file.



LWO import and export

LWO mesh files can be imported and exported using the standard 3DS Max import and export file menu. When importing or exporting a panel will appear asking you to close it. This panel is intended to have LWO specific options added to it at a later date but for now simply close it and the LWO import or export will commence.

Layered LWO files are supported and will be imported as seperate objects.




MDD file format

The MDD file format is very simple and here is a brief description for TD's and developers who are interested in adding tools to a pipeline built around MDD.

The first thing to note is that the MDD file format is Motorola Big Endian byte order as opposed to the Intel Little Endian standard. So however you implement the structure below, you must come up with an algorithm to flip the bytes during file IO.



The data structure is like so:

typedef Struct{

int totalframes;

int totalPoints;

float *Times; //time for each frame

float **points[3];

}mddstruct;



and the data is written like so:



totalframes

totalPoints

Times

while(!totalframes)

{

while(!totalPoints)

{

write point[frame][point][axis];

point++;

}

frame++;

}