PolyTrans Import/Export Converters for Maya

PolyTrans-for-Maya is a heavily developed, supported and maintained version of PolyTrans that is integrated directly inside Maya. This plug-in system adds dozens of new 3D file formats directly accessible from inside Maya via a custom user interface (see snapshot at bottom of this page).

PolyTrans-for-Maya is also a mirror twin to the "PolyTrans-for-3dsMax" native plug-in system for 3ds Max, with both being actively developed together for the tightest bi-directional conversions between these two programs.

Importing 3D Files into Maya:

Import Converters and Runtime Usage

Exporting 3D Files Out from Maya:

Export Converters and Runtime Usage

And these links contain other cursory information:

How to invoke and use the Import Converters

How to invoke and use the Export Converters

Invoking PolyTrans via MEL Command Line Arguments

Important info about Okino .bdf File Transfer Format

Transferring data between Maya and 3ds Max

How Hierarchies Convert Between Maya, PolyTrans and Other 3D Programs

Potential Speedups of the PolyTrans to Maya Transfer Process

Important Notices:

1. If PolyTrans-for-Maya cannot locate one or more bitmap files during the automatic bitmap conversion process, then you will need to inform PolyTrans-for-Maya where your source bitmaps are located. This can easily be done via the Search-Paths dialog box inside PolyTrans-for-Maya.

2. If you find that imported and resampled animation function curves ‘have wobble’ in them, then you have complete control to tweak the resampling process via the distance and angle threshold parameters shown on the "Animation Options" dialog box. The lower you make these values the more the resampled curves will resemble the original animation curves; the higher you set these values the fewer keyframes will be created and the more the resampled animation curve will be averaged over its length. There are no absolute ideal values for these parameters and they are provided for your convenience.

3. If Maya appears to lock up during an import process while in the "Processing vertex normals" mode, then just wait and the conversion will complete. Maya is extremely slow to import vertex normals for certain models; this slowness is occurring inside Maya and not PolyTrans. Refer to the speed-up suggestionsn section which provides an in-depth overview of Maya’s performance problems.

4. If the final message box (after an import) reports that some uv texture coordinates could not be assigned to one or more specific models (Maya rejected them), then go and enable the "Always triangulate meshes prior to import" checkbox. This will always fix such problems. There are cases where certain vertices are duplicated in a polygon in order to have twin sets of uv texture coordinates; Maya will reject such polygons outright unless the object(s) are pre-triangulated.

Copyright (c) 1988-2020 Okino Computer Graphics, Inc.

For updates please visit the Okino WEB site at http://www.okino.com or email to support@okino.com.


PolyTrans Export Converters for Maya

Click here to learn how to export objects from Maya using the PolyTrans plug-in.

Click on one of these links for more information:

"Maya to PolyTrans dialog box" options

"Supported parameter conversions and mappings" options

Invoking PolyTrans via MEL Command Line Arguments

Click here to jump to the table of contents for this help file.


Export Conversion Process

The export process proceeds as follows:

1. The user loads in the PolyTrans-for-Maya plugin module via the plug-ins manager dialog box. This is displayed in Maya through these menu items: Window/General Editors/Plug-In Manager. On this dialog box enable the checkmarks beside the "ptio.mll" plug-in listing; this it the PolyTrans plug-in module for Maya.

2. To display the PolyTrans-for-Maya import/export converter dialog box, type "pt" in the Maya command line.

3. Click on the "Export" tab located just above the list box containing the import/export converters:

4. If you wish to modify the export options prior to starting one of the export converters then press the "Export Options" button located above the listbox. The "Maya to PolyTrans" dialog box will appear. These options control how the scene data will be exported from the Maya internal database to the PolyTrans internal database. Press "Ok" to continue. If you need to tell PolyTrans where your bitmaps are located (for automatic bitmap conversion), this can be done via the Search-Paths dialog box.

5. Click on one of the export converters listed in the listbox. A filename selector will appear with which you can choose the exported filename.

6. After the filename selector goes away, the scene data is sent from the Maya internal database to the PolyTrans internal database.

7. The corresponding PolyTrans export converter DLL is then loaded and executed. The data will then be exported from the PolyTrans internal database to the export file converter.


Maya to PolyTrans Dialog Box Options

"Maya to PolyTrans" (Export) Dialog Box Options

This dialog box controls the transfer of data from the internal Maya database to the PolyTrans internal database (the "export" process):

Main Options

Polygon Meshes

If this checkbox is checkmarked then mesh geometry will be exported from Maya.

Mesh Normals

If this checkbox is checkmarked then vertex normals will be exported along with the mesh geometry.

Texture Coordinates

If this checkbox is checkmarked then (u,v) vertex texture coordinates will be exported along with the mesh geometry.

Vertex Colors

If this checkbox is checkmarked then all the colors assigned to each and every vertex will be exported along with the mesh geometry.

Vertex colors can only be viewed in the shaded view windows of Maya, and only when the following series of steps are taken:

· Go into shaded mode by selecting "Shading/Smooth Shade All" from the view menu.

· Select the "Display/Custom-Polygon-Display/Square-Box" menu item from the main menu.

· On the "Custom Polygon Display Options" dialog box select these options:

· "Objects affected" = All

· "Color in shaded view" = check marked

· "Color material channel" = None

· Press "Apply" button on the "Custom Polygon Display Options" dialog box.

Skinning Weights

Enabling this option will turn on one of the most complex aspects of the PolyTrans-for-Maya export process, that of being able to export skinning weights associated with mesh data.

"Mesh skinning" is the process of deforming a single skin mesh with a skeleton or any hierarchical set of transform nodes. The contribution of each bone of the skeleton to the deformation of a vertex in the mesh is controlled by vertex weights.

Maya rigid or smooth blending deformation techniques are supported.

Only skinned meshes are supported for export, not skinned NURBS surfaces or skinned curves.

Typical destinations for skinned meshes are 3ds Max and DirectX.

NOTE: Enabling this option will forcibly enable the "Object Hierarchy" and "Output Branches with No Geometry" checkbox options. See below for an explanation.

Optimize Vertex Normal List

Optimize uv Texture Coordinate List

Optimize Vertex Colors List

These options determine if redundant vertex normals, uv texture coordinate and/or vertex colors will be removed from the exported Maya polygon mesh data after it has been sent to the internal PolyTrans database. These options are all enabled by default.

** Disable these options if exporting mesh morph targets. ** These options will most likely change the order of the coordinate lists and likewise the order of the index lists. Normally this is not a problem in scene conversion, but it can be a problem when mesh snapshots are being exported as morph targets (such as sending morph targets to LightWave).

Output NURBS Surfaces as Polygon Meshes

The PolyTrans software includes the ability to export trimmed NURBS surfaces (in pure form) to such file formats as IGES and Renderman RIB. PolyTrans also includes the ability to export a polygonalized version of a trimmed NURBS patch to all supported export file formats.

If this checkbox is un-checkmarked then trimmed NURBS surfaces will be transferred from the Maya internal database to the PolyTrans internal database from where they can be exported to file formats such as IGES and Renderman RIB.

If this checkbox is checkmarked then the export module will ask Maya to convert the trimmed NURBS to a triangle mesh which will be subsequently output to the PolyTrans database. Thus, all NURBS will be exported as triangles.

NURBS Trim Curves

If the above option is disabled (pure NURBS output enabled) then this checkbox determines whether trim curves will be output to the PolyTrans database along with the parent trimmed NURBS surfaces. Trim curves define the outer boundary of a NURBS patch as well as specifying internal trim holes and islands.

Materials

If this checkbox is checkmarked then materials will be exported along with any associated texture maps.

Delete Unreferenced Materials

If this option is enabled (checkmarked) then only materials which have been assigned to one or more objects will be exported. If this checkbox is disabled then all materials will be output regardless of whether they are assigned to an object or not.

Enable "Alpha Channel" Modulation

If a texture bitmap image includes an "alpha channel" (a 32-bit RGBA bitmap) then Maya will automatically use the alpha channel as the "transparency" of the bitmap; in other words, if the alpha value of a texture pixel is high then the texture map will appear opaque when applied to a material but as the alpha value of a pixel approaches 0 then the opacity of the texture map will decrease (it will become more transparent). This method is often used for decal texture mapping in which parts of the texture map are to appear transparent (around the decal).

If this option is enabled then it is assumed (during export) that Maya adhears to this usage of an alpha channel/matte for each texture. As such, the PolyTrans/NuGraf "alpha channel modulation" method will be enabled. This will allow PolyTrans/NuGraf to simulate this method of "texture transparency".

If this option is disabled then alpha channel modulation will be disabled in PolyTrans/NuGraf. Thus, the alpha channel of the texture map (the "A" of the RGBA texture) will be ignored.

Output Blinn Shaders as Phong Shaders

Specular highlights on objects are often simulated in 3D computer graphics using one of two mathematical techniques, either that of "Phong Highlights" or "Blinn Highlights". By far Phong is the most common used in every 3D software package while Blinn is much more rare. Thus, by default, this option is enabled so that any shaders inside Maya which use Blinn specular highlights are explicitly output instead as Phong specular highlights so that they are compatible with most destination 3D file formats and programs. However, if you are exporting to programs such as 3ds Max, which can accept Blinn highlights, then disable (turn off) this option so that Blinn highlights are output to the PolyTrans core database as pure Blinn highlights.

Cameras/Lights

If this checkbox is checkmarked then lights and cameras will be exported.

Clamp Maximum Light Intensity

This type-in box allows you to clamp the maximum light intensity exported from Maya. There have been cases where light intensities in a Maya scene are much larger than the nominal 0.0 to 10.0 range and thus cause the scene to look completely white in the destination program (because lights are unusually exported in the intensity range 0.0 to 1.0 for many programs). Enabling this checkbox and setting the type-in box will cause all light intensities to be capped at this value should they be larger.

Object Hierarchy

If this option is enabled (checkmarked) then the hierarchical relationship of objects in the scene will be exported.

NOTE: this option will always be re-enabled if the "Skinning weights" checkbox is enabled. This is because the processing and output of mesh skinning requires the object hierarchy of the skinning nodes to be output as well.

NOTE2: Enabling "Object animation" will also force this option to be re-enabled.

Output Branches with No Geometry

If this option is enabled (checkmarked) then any branches of the hierarchy which have no geometry at their leaf nodes will be output. For example, if you have a hierarchy of empty grouping nodes or IK nodes followed by locators at the leaf positions, then enabling this option will allow these empty branches to be output (including animation on the nodes).

If this option is disabled then empty branches will not be output.

NOTE: this option will always be re-enabled if the "Skinning weights" checkbox is enabled. This is because the processing and output of mesh skinning requires access to all nodes in the scene, any one of which can act as a skinning joint in Maya.

Edit Automatic Bitmap Conversion Search Paths

In specific circumstances you will need to inform PolyTrans where your source bitmap images are located so that automatic bitmap file conversion proceeds properly. If PolyTrans reports warnings that specific images could not be located during automatic bitmap conversion press this button so that the Search-Paths dialog box appears. Using this dialog box you can tell PolyTrans where your source bitmaps are located.

Enable # 2 Options

Confirm Potential File Overwrites

If this checkbox is enabled then a dialog box will prompt you if a file already exists on disk with the same filename that you are currently exporting to. You have the option at this point of choosing a new filename or pressing the "Cancel" button on the file selector. If this checkbox is disabled then all existing files will always be overwritten with no user confirmation.

Custom Attributes (meta data)

If this checkbox is enabled then "custom attributes" which are associated with each Maya node will be exported as Okino per-instance meta data items.

Flip from "Z" up to "Y" up Coordinate System

By default Maya uses the "Y" up coordinate system but in some cases a user will wish to reorient a scene so that "Z" axis is up instead. Since PolyTrans/NuGraf uses a Y-up default coordinate system, you can enable this option to flip the scene from Z-Up to Y-Up.

NOTE: This option is designed for the case where you have modeled your scene and animated the camera starting with a Z-Up Maya coordinate system, then wish to export to a Y-Up coordinate system. It is not designed for the case where your scene was modeled and the camera was animated in a Y-Up Maya coordinate system and you wish to use this option to 'flip the scene on its side'.

Output Explicit Rotational Pivot Points

If this option is enabled then the rotational pivot point of an object will be output along with its geometry and (optionally) its animation. The animation will be modified so that it is relative to the pivot point of the object.

If this option is disabled then a null pivot point will be output for the object (with a center of (0,0,0)) and instead the rotational pivot point will be embedded into the animation curves exported from Maya to PolyTrans. This is the default option.

Which option should you use? By default the explicit pivot points are not output because it can possibly lead to slightly simpler export files because all the pivot points are unity (0,0,0). However, if you need to perform additional animation work in the destination 3D software package then you will probably want to enable this option so that the pivot points remain in their original locations as there are in Maya.

Note: the playback of the animation with and without this option enabled will be identical in the destination program because it all bubbles down to the same mathematics once all the transforms are applied.

Output Independent NURBS Curves

If this option is enabled then all NURBS curves will be exported. These are the "independent" NURBS curves which have no relation to "NURBS trim curves" that are associated with the trimming operation on NURBS surfaces.

NOTE: It is recommended that this option be kept enabled. Some scenes require these NURBS curve nodes to be exported to partake in parent/child hierarchy relationships, or as sources of deformation changes.

Disable Maya User Interface During Export Processing (Maya 2011 or newer)

This is an option which can aid in speeding up an export process, for Maya 2011 or newer.

It has been found that Maya will update/repaint/redraw its user interface whenever the PolyTrans software temporarily provides Microsoft Windows control over its message queue (such as when the PolyTrans software needs to check for end-user button-press process cancellations). In certain situations this can seriously slow down the export process, such as when NURBS surfaces are being asked of Maya to become tessellated into meshes – in such cases Maya will redraw its OpenGL view window(s) after each NURBS surface is converted into meshes and hence turn a quick export process into a terribly slow one.

If this option is enabled then Maya’s user interface will not be updated during the export process and hence you will not see any screen refreshes or updates. This will in no way affect the PolyTrans export process.

Polygon Mesh Triangulation

Triangulate all polygons

If this checkbox is enabled then all exported meshes will be triangulated.

Triangulate concave polygons

If this checkbox is enabled then any exported mesh which has at least one polygon in it which is concave will cause the entire mesh to be triangulated.

Triangulate polys with 5 or more sides

If this checkbox is enabled then any exported mesh which has at least one polygon in it which has 5 or more sides will cause the entire mesh to be triangulated.

Animation Export Options

These options control the export of object and camera animation data.

For a short overview of how Maya internal animation data is exported via PolyTrans-for-Maya, please refer to the How & Why Animation is Exported from Maya section.

Global Animation Export Enable

If this option is enabled (check marked) then all of the animation options can be accessed. Turning this option off (disabled) is a simply way to quickly disable all animation export from Maya. This option is disabled by default because animation export increases the export time due to the matrix resampling that must be done at each frame.

Object Animation

If this option is enabled (check marked) then object animation will be output. The definition of "Object Animation" is changes to the object's location, orientation or size based on explicit changes to the object's transformation matrix. Thus, if the transformation matrix of an object changes from frame to frame, and that matrix represents the animation for the object, then that animation can be converted to explicit scale, rotation and translation keyframes lists for other animation packages. Please refer to the How & Why Animation is Exported from Maya section about how the matrix animation is turned into keyframe animation during the export process.

** Please be warned about cases where there is skew or mirroring in the transformation matrices. The PolyTrans exporter will print warning messages if these rare cases occur. Matrices with skew or mirrors in them cannot have the skew or mirror animated in other packages since traditional animation file formats only allow for scaling, rotation and translation attributes to be animated.

NOTE: Enabling this option will forcibly cause the "Object Hierarchy" option to be enabled as well.

Camera Animation

If this option is enabled (check marked) then camera animation will be output. The definition of "Camera Animation" is changes in the camera's explicit location, look-at location, roll vector (up direction) or field of view. Animation on a path is not supported unless you make the animation into explicit animation curves.

Light Animation

If this option is enabled (check marked) then light animation will be output. The definition of "Light Animation" is changes in the light's explicit location, orientation (or direction) and color. Animation on a path is not supported unless you make the animation into explicit animation curves.

Material Animation

If this option is enabled (check marked) then material animation will be output. The definition of "Material Animation" is changes in ambient, diffuse, specular or luminous color, transparency or the Phong power of the highlight.

Animation Sampling Options

As described in the How & Why Animation is Exported from Maya section, Maya's potentially complex animation data is converted to the simpler scale, rotation and translation of other software packages by matrix decomposition and resampling. The options in this section control how this process is achieved.

Frames Per Sample

This value defaults to 1 meaning that the Maya transformation matrices will be sampled at every keyframe, resulting in one keyframe of animation data for every frame to output. If this value is set to 2 then keyframes will be output for every other frame of animation data. And so forth. This value basically allows you to set the sampling frequency of the animation inside Maya.

Sample Only At Maya Key Locations

If this checkbox is enabled then the new samples will only be taken where there is existing Maya keyframes only. No intermediate keys will be sampled.

Output one file per frame

If this option is enabled (check marked) then multiple sequentially numbered static files will be output rather than a single file with keyframe animation defined. Each file will represent the contents of the static Maya scene evaluated at the corresponding frame number.

For example, if you have character morphing from pose # 1 to pose # 2 over 10 frames then you can use this option to export 10 sequentially numbered Wavefront .obj files (as an example), with each .obj file representing the morphed pose at each frame time.

Notes:

1. This option does not work for the Okino .bdf file format because the .bdf format is a direct snapshot of the internal Okino database and does not partake in the normal exporter mechanism.

2. You will be asked to disable any animation-enable options on the exporter options dialog box. For example, if you enable this option and export to DirectX format then you should disable the "Convert and Output Animation Data" and "Skinning Weights" on the DirectX export options dialog box.

3. If you wish to export skinned deformed meshes to each file, and have the model(s) physically deformed by the skeletons, then disable "Skinning Weights" on the PolyTrans-for-Maya "Export Options" panel.

3. If the "Frames to Output" option is set to "Time Slider" then 1 file will be output for each and every frame as defined by the limits of the time slider in the Maya user interface. If the option is set to "From/To" then the frequency of files generated will be set by the "Frames per Sample" type-in box; for example, if the "Frame Per Sample" is set to 5 then files will be generated every 5th frame of the frame range.

Perform keyframe reduction

Due to the method in which the matrices are decomposed into explicit scale, rotation and translation keyframes lists, one keyframe per frame, the exported keyframe animation lists can have an overabundance of keys defined.

If this option is enabled then an algorithm will be applied to the new exported keyframe lists to reduce the number of redundant keys. The type-in values determine the threshold criteria for keeping or removing a key from a list.

If this option is disabled then no keyframe reduction will be done. If you want very accurate animation export then do not enable this option, or else keep the threshold values at minimum values to keep the degree of reduction low.

Distance Threshold

This numeric value indirectly controls how many redundant keyframes are to be removed from the re-sampled keyframe list. It is applicable to the following types of keyframe lists: translation, scaling, Euler rotation and path translation. Higher values will cause more keyframes to be removed. This value is the maximum ‘distance’ the new keyframe list is allowed to deviate from the original re-sampled keyframe list. Take for example a sphere that is animated along a path; if this threshold value is set to 0.01 distance units (which is the default) then redundant keyframes of the animated path will be removed until such point that the sphere begins to deviate by more than 0.01 units from its ‘ideal’ location. In other words, if the value is set to 0.01 then you are guaranteed that the new reduced keyframe list will move the sphere along the same path in space, except that the sphere is allowed to deviate by 0.01 units from its original path. Smaller numbers will make the sphere adhere closer to its original path, but at the expense of retaining more keyframes.

Angular Threshold (degrees)

This is the same as the previous numeric value except that it applies to reduction of quaternion and Angle/axis rotation keyframe lists. The value is measured in degrees. For example, if set to 0.01 (the default) then redundant keyframes will be removed from a keyframe list until such point that a rotation angle begins to deviate from its ideal angle by more than 0.01 degrees. Small numbers will cause less deviation and more precise rotation conversions, but at the added expense of retaining more keyframes.

Force Animation Curves to be Linear

Maya always uses Bezier animation curves internally. However, if you want to use a "linear" interpolation curve then the in-tangent and/our out-tangent for a key can be set to "linear". All this does is to make sure the in-tangent points towards the last key, and/or the out-tangent points towards the next key, thus producing linear interpolation about that key (even though the interpolating curve is Bezier and not linear).

When animation curves are sampled and exported from Maya to the Okino scene database, the curves are are made to be Bezier. If you would like the exported curves to be stored in the Okino scene database as pure linear animation curves, and not Bezier curves, then enable this option. It will simply set the whole animation curve to be "linear" and to use a linear interpolator.

Frames to Output

This radio button set determines which frames will be resampled and output via PolyTrans.

Time Slider (Frames)

The frame selection will be chosen from those shown on the Maya user interface.

From # to #

The frame selection will be chosen by the two user specified values. Animation will be resampled and output from the first to last frames.


How Animation is Exported from Maya

The "How & Why" Maya Animation Export Explanation

Exporting object animation data out of Maya tends to be more complicated and difficult as compared to exporting animation data from other animation packages. This section will provide a quick overview of why animation export is more difficult with Maya and what is done by PolyTrans to overcome these conversion barriers.

In most animation packages object animation is performed by applying a scale, rotation and then translation transformation to each object, evaluated at each keyframe. These transformations are applied in the local coordinate system of the object, relative to its local axes (pivot point). The pivot point is used both to define the center of the scaling transformation as well as the 3 axes about which the local rotation (X, Y and Z) are applied.

However, Maya generalizes the concept of the pivot point and thus makes generalized animation export more difficult. Maya introduces the notion of a scaling pivot point for the scaling and a rotation pivot point plus orientation for the object's rotation.

A Maya transformation matrix is composed of the following components:

· Scale pivot point point around which scales are performed [Sp]

· Scale scaling about x, y, z axes [S]

· Shear shearing in xy, xz, yx [Sh]

· Scale pivot translation [St]. This is translation introduced to preserve existing scale transformations when moving pivot. This is used to prevent the object from moving when the object's pivot point is not at the origin and a non-unit scale is applied to the object.

· Rotate pivot point. This is the point about which rotations are performed [Rp]

· Rotation orientation. This is the rotation to orient local rotation space [Ro]

· Rotation [R]

· Rotate pivot translation [Rt]. This is the translation introduced to preserve existing rotate transformations when moving pivot. This is used to prevent the object from moving when the objects pivot point is not at the origin and the pivot is moved.

· Translate translation in x, y, z axes [T]

The final Maya transformation matrix to take the object from its local space to world-space is:

-1 -1

[Sp]x[S]x[Sh]x[Sp]x[St]x[Rp]x[Ro]x[R]x[Rp]x[Rt]x[T]

where 'x' denotes matrix multiplication and '-1' denotes matrix inversion

Now, why is this a problem? It is a problem because most 3D file formats and destination animation packages only allow for a single pivot point and axes, while Maya allows for a different pivot point and axes for both the scale and rotation transforms.

How is this solved by PolyTrans-for-Maya? Consider the fact that no matter how complex the above transformation matrix may be the object always animates with a specific scaling, rotation and translation in world-space coordinates from frame to frame. In other words, at any given frame the object is transformed from its original local coordinate system (the coordinates in which the mesh or NURBS data was created in) to its final world-space destination by an easily broken-down 4x4 transformation matrix, regardless of the complex algorithm shown above which represents /how/ the Maya transformation is ultimately computed.

Unlike other exporters in PolyTrans (such as DirectX, LightWave, 3D Studio .3ds) which output the object's pivot point and its list of keyframes for scaling, rotation and translation (let's call this traditional keyframe animation), the PolyTrans-for-Maya animation exporter uses a completely different technique to arrive at the keyframe lists and single pivot point.

The export of animation is done this way: for every frame of animation the 4x4 transformation of each animated object is computed and broken down into explicit scale, rotation and translation values. This broken down matrix will include all complex pivoting information described above (ie: the new animation curves will include the different pivoting information). The explicit scale, rotation and translation values are stored in a linear list, each entry corresponding to the different frame number. This list is then massaged by PolyTrans into traditional keyframe animation lists (Bezier or TCB interpolated curves). Thus, the final output is keyframe lists of scale, rotation and translation values that represent the same motion as that originally used and played back within Maya.

The major limitation of breaking down the matrix is if there is skewing or mirroring inside the matrix. Such skewing or mirroring must be thrown away when the final resampled animation curves are created because it is not possible to create "Skew" animation curves or "Mirror" animation curves in the world of animation conversion (animation is based on the traditional set of scaling, rotation and translation animation curves). A warning message will be printed if this rare case of skewing or mirroring is found in any matrix. You can often overcome these problems by "baking" the transformations into the mesh data ahead of time (so that any skews become part of the mesh data itself).

For camera animation no matrix decomposition needs to be done. Instead, the explicit camera look-from and look-at locations are turned into animation curves directly. The roll vector of the camera is derived from the Z axis rotation of the camera's rotation matrix and the field of view is computed with some rather nasty code which takes into account all of the Maya rendering and camera related window sizing variables (film grates, field-of-view, render resolutions, etc).


Supported Parameter Conversions and Mappings

Supported Export Parameter Conversions and Mappings

This section describes which Maya entities are exported to the PolyTrans converters.

Polygon Mesh Geometry

N-sided polygon meshes and thier related geometry will be exported from Maya, along with these mesh attributes:

· Vertex normals.

· Vertex (u,v) texture coordinates

· Vertex colors

· ‘Casts Shadows’ flag (‘castsShadows’ plug of a shapeNode)

· ‘Hidden’ flag (‘visibility’ plug of a shapeNode)

· Materials, assigned either to the mesh node itself or to individual polygons.

In addition, the exporter will remove any redundant vertex normals, texture coordinates and vertex colors to create a more refined database in PolyTrans.

NURBS Geometry

Trimmed NURBS are output in their natural, unmodified form. Alternatively, an export option can be enabled so that all NURBS surfaces become polygonalized.

Skinning Weights

"Mesh skinning" is the process of deforming a single skin mesh with a skeleton or any hierarchical set of transform nodes. The contribution of each bone of the skeleton to the deformation of a vertex in the mesh is controlled by vertex weights.

Maya rigid or smooth blending deformation techniques are supported. Only skinned meshes are supported for export, not skinned NURBS surfaces or skinned curves.

Cameras

Perspective and orthographic cameras are exported with the following parameters:

Exported Maya Camera Parameters

Look-From location

Look-At location

Look-Up location

Field of view for perspective cameras. Most importantly, the Maya "filmFit" is taken into account (types: horizontal, vertical, overscan and fill) so that the field of view in the destination animation package encompasses the same field of view as seen in Maya. The frame type in PolyTrans is set to TYPE4.

For orthographics cameras, the PolyTrans window width and height are set equal to the Maya ortho camera window width.

Clipping planes (near and far) from Maya.

Lights

The following light types and light parameters are converted:

Exported Maya Light Parameters

Point light

Directional light

Spot light

Ambient light

Transformation matrix decomposed into shine-from, shine-at locations, or shine-direction in the case of directional lights.

Color

Visibility plug of node

Intensity

Spot light cone angle

Spot light penumbra angle

Spot light drop off angle

‘Use ray traced shadows’

‘Use depth map shadows’, including depth map bias and depth map resolution.

Materials

The following table describes how the Maya material parameters are mapped to equivalent material parameters in PolyTrans:

Exported Maya Material Parameters

As PolyTrans/NuGraf has a rich set of shader parameters itself, these parameters are extracted from these supported Maya shaders: Phong, PhongE, Blinn, Lambert and Anisotropic. Layered shaders are not handled.

Diffuse surface color.

Diffuse shading coefficient

Specular color.

Incadesence color.

The diffuse, specular and incadesence are ‘re-normalized’ so that the largest red, green or blue component is 1.0 (full on); the re-normalizing coefficient is then used as the corresponding PolyTrans diffuse, specular or incadescent shading coefficient. When the shading coefficient and the new color is multiplied together, it results in the original Maya material color.

Phong shininess from Maya roughness or Phong cosine power.

Transparency (inverse of transparency will be assigned to the PolyTrans face and reflected opacity values).

Index of refraction (IOR).

Reflect shader ‘reflectivity’ (mapped to PolyTrans specular coefficient).

Texture Maps

The following are the various Maya texture modulation methods exported to PolyTrans

Exported Maya Texture Maps

Ambient color map

Diffuse color map

Specular color map

Incadescense color map

Transparency map

Opacity map (if the ‘invert’ flag is enabled on the transparency texture node)

Ray traced reflectivity map

Bump map. The bump map strength is divided by 4 (arbitrary) before output.

Diffuse shading coefficient texture map.

Spherical environment map with texture u,v offset and scaling.

Alpha channel modulation is enabled for the ambient, diffuse, specular and incadescense texture maps if this option is enabled on the ‘PolyTrans -> Maya’ export converter options dialog box.

Only a unique number of Okino ‘texture layers’ will be created by way of comparing texture map filenames and related sub-parameters.

If the diffuse color texture map was output, but not the ambient color texture map, then the ambient color will be locked to the diffuse color within the PolyTrans material shading system (this makes textured objects look better inside Okino’s NuGraf rendering software).

As for the texture definition itself, the following 2d bitmap texture parameters are supported:

Exported Maya Texture Parameters

u & v scaling

u & offset (relative to upper left of texture map).

u & v wrap-around flags

Animation Conversion

As short as the follows tables are, animation conversion is where half or more of the export converter's development has taken place… Animation is a very intensive coding process.

Exported Object Animation Channels

Scale as explicit X,Y, Z animation channels

Euler rotations as explicit X,Y, Z animation channels.

Translation as explicit X,Y, Z animation channels

Object pivot points

Exported Camera Animation Channels

Translation as explicit X,Y, Z animation channels

Look-at location as explicit X,Y, Z animation channels

Field-of-view

Bank angle around the Z axis

Exported Light Animation Channels

Translation as explicit X,Y, Z animation channels

Orientation as explicit X,Y, Z Euler rotation animation channels (for directional lights), or explicit X, Y, Z shine-at location for spot lights.

Light color

Exported Material Animation Channels

Diffuse, ambient, specular and luminous color.

Face opacity


PolyTrans Import Converters for Maya

Click here to learn how to import objects into Maya using the PolyTrans plug-in.

The following sections describe the options on the ‘PolyTrans to Maya’ dialog box:

"Enables" options

"Mesh" options

"Bitmap Conversion" options

"Curves" options

"Animation" options

"Tesselation (NURBS and polygon triangulation)" options

Also, the mapping from the PolyTrans internal database to the Maya internal database is described by clicking here.

You may also click here to learn how to invoke PolyTrans from a MEL script.

Click here to jump to the table of contents for this help file.


Import Conversion Process

The import process proceeds as follows:

1. The user loads in the PolyTrans-for-Maya plugin module via the plug-ins manager dialog box. This is displayed in Maya through these menu items: Window/Settings-Preferences/Plugin-Manager (Maya 3.0 or newer), or Window/General Editors/Plug-In Manager (Maya 2.51 or older). On this dialog box enable the checkmarks beside the "ptio.mll" plug-in listing; this it the PolyTrans plug-in module for Maya.

2. To display the PolyTrans-for-Maya import/export converter dialog box, type "pt" in the Maya command line.

3. Click on the "Import" tab located just above the list box containing the import/export converters:

4. If you wish to modify the import options prior to starting one of the import converters then press the "Import Options" button located above the listbox. The "PolyTrans to Maya" dialog box will appear. These options control how the scene data will be imported into the Maya internal database from the PolyTrans internal database. Press "Ok" to continue. If you need to tell PolyTrans where your bitmaps are located (for automatic bitmap conversion), this can be done via the Search-Paths dialog box.

5. Click on one of the import converters listed in the listbox. A filename selector will appear with which you can choose the filename(s) to import. Note that one or more files can be imported at the same time.

6. After the filename selector goes away, the scene data is sent from the PolyTrans internal database to the Maya internal database.

7. The corresponding PolyTrans import converter DLL is then loaded and executed. The data will then be imported from the PolyTrans internal database to the Maya database.

Click here to learn how to invoke PolyTrans from a MEL script.


Supported Parameter Conversions and Mappings

Supported Import Parameter Conversions and Mappings

This section describes which PolyTrans database entities are imported into the Maya database:

This section was itemized January 2000. It is likely that more parameters will be added over time, or that existing parameter conversions will be refined.

Polygon Geometry

All PolyTrans geometry, including n-sided polygon meshes with recursive holes, trimmed NURBS surfaces (see next section), bicubic patches and quadric surface will all be imported into Maya as polygons meshes. In addition, object hierarchy will be imported and recreated. If any polygon has a hole in it then the mesh will be triangulated (this is unlikely when importing from most 3D file formats).

The following PolyTrans object attributes will be imported along with the mesh geometry:

· Vertex normals. These are disabled for Maya 2.0 and Maya 2.5 because of some severe bugs in the core Maya software. The import of vertex normals will probably be available in Maya 2.51. Alternatively, the import converter allows new vertex normals to be automatically computed.

· Vertex (u,v) texture coordinates

· Vertex colors

· ‘Casts Shadows’ flag (‘castsShadows’ plug of a shapeNode)

· ‘Hidden’ flag (‘visibility’ plug of a shapeNode)

· Materials, assigned either to the transform node or to each group of polygons within a shapeNode.

And these are the currently unsupported PolyTrans geometric attributes:

· U/V tangent vectors are not imported. There is no equivalent in Maya.

In addition, the import converter allows the following geometric processing functions to be applied to the imported mesh geometry:

· Flip orientation of all normals.

· Unify the orientation of all polygons and normals.

· Weld all vertex coordinates and vertex normals together using a specified tolerance.

Curve Geometry

All varieties of spline and NURBS curves can be imported from the core PolyTrans database into Maya. Such curves are resampled to NURBS curves before being sent to the Maya core database.

NURBS Geometry

Trimmed NURBS has been fully implemented in the importer, as well as the exporter.

Skinning Weights

"Mesh skinning" is the process of deforming a single skin mesh with a skeleton or any hierarchical set of transform nodes. The contribution of each bone of the skeleton to the deformation of a vertex in the mesh is controlled by vertex weights.

Only skinned meshes are supported for import, not skinned NURBS surfaces or skinned curves. Typical sources of skinned mesh data are 3ds Max and DirectX.

Cameras

Perspective cameras are imported with the following parameters:

Imported Maya Parameters

Look-From location

Look-At location

Look-Up location

Field of view

Manual clipping override set to TRUE

PolyTrans automatically selects tight clipping planes

"filmFit" set to horizontal or vertical, depending on TYPE4 or TYPE5 camera frame types in PolyTrans

Camera background color set to the PolyTrans global background color.

Lights

The following light types and light parameters are converted:

Imported Maya Parameters

Point light

Directional light

Spot light

Transformation matrix. The directional light is moved to the outer limits of the world space extents.

Color

Visibility plug of node

Intensity

Spot light cone angle

Spot light penumbra angle

Spot light drop off angle

‘Use ray traced shadows’

‘Use depth map shadows’

Maya’s "ambient" light source is not used by the PolyTrans imported. This is because its ambient color output cannot be attenuated by a shader, such as can be done my many other 3d programs. Instead, the PolyTrans global ambient color is multiplied into each new shader’s local ambient color.

Materials

The following table describes how the PolyTrans material parameters are mapped to equivalent material parameters in Maya:

Converted Maya Material Parameters

Lambert ambient color is computed as the PolyTrans ambient shader color * ambient shader coefficient * global ambient color.

Lambert diffuse color derived from PolyTrans diffuse color directly.

Lambert diffuse coefficient derived from PolyTrans diffuse coefficient directly.

Depending on PolyTrans ‘lock specular’ flag, reflect shader’s specular color is either the PolyTrans specular color multiplied by the specular shading coefficient, or it is the diffuse color multiplied by the specular shading coefficient.

Lambert incadesence color derived from PolyTrans luminous color multiplied by the luminous shading coefficient.

Phong cosine power taken by PolyTrans shininess parameter.

Lambert transparency is 1.0 minus PolyTrans face opacity.

Lambert refractive index taken from PolyTrans IOR

Reflect shader ‘reflectivity’ taken from PolyTrans reflect shading coefficient.

Texture Maps

The following are the various PolyTrans texture modulation methods imported to Maya

Imported Maya Texture Maps

Ambient color map

Diffuse color map

Specular color map

Incadescense color map

Transparency map

Opacity map

Bump map

Spherical environment map (envSphere), plus rotation angles

As for the texture definition itself, the following 2d bitmap texture parameters are supported:

Imported Maya Texture Parameters

u & v scaling

u & offset (relative to upper left of texture map).

u & v wrap-around flags

When importing a scene which uses 2d bitmap images of a format not understoof by Maya, automatic bitmap conversion can be enabled during import to change these bitmaps into any one of the following supported Maya bitmap file formats:

Supported Maya Bitmap Formats for Automatic Bitmap Conversion

BMP, JPEG, Maya IFF, PIX, SGI RGB, Softimage PIC, Targa, TIFF.

Animation Conversion

The following are the animation channels converted from other software packages into Maya, via the PolyTrans core animation conversion engine.

Converted Object Animation Channels

Scale as explicit X,Y, Z animation channels

Euler rotations as explicit X,Y, Z animation channels. Proper conversion from angle/axis and quaternion rotations are made to Euler angles via keyframe resampling and reduction.

Translation as explicit X,Y, Z animation channels

Object pivot points

Converted Camera Animation Channels

Translation as explicit X,Y, Z animation channels

Orientation as explicit X,Y, Z Euler rotation animation channels. Proper conversion from angle/axis, quaternion rotations and look-from/look-at/look-up camera notation are made to Euler angles via keyframe resampling and reduction.

Focal length animation channel. Maya animates the focal length while other programs animate the field-of-view. A special resampler was written to convert field-of-view into the inverse focal length animation.

The following light animation channels are currently not supported in the Maya plug-ins but the core PolyTrans software does support them

Converted Light Animation Channels

Translation as explicit X,Y, Z animation channels

Orientation as explicit X,Y, Z Euler rotation animation channels (for directional lights). Proper conversion from angle/axis, quaternion rotations and shine-from/shine-at orientation notation are made to Euler angles via keyframe resampling and reduction.

Light color (light intensity animation must be embedded in the light color)

The following material animation channels are currently not supported in the Maya plug-ins but the core PolyTrans software does support them

Converted Material Animation Channels

Diffuse, specular, luminous and filter colors.

Face opacity


Configure File Search Paths

Configure Bitmap File Search Paths

This dialog box is accessed by choosing the "Edit Automatic Bitmap Conversion Search Paths" button on either the PolyTrans import or export options dialog boxes.

When PolyTrans does automatic bitmap conversion during an import or export process (such as converting Maya PIX files to DirectX compatible .ppm files), it must locate and open up the bitmap images. If the bitmap images have absolute filepaths then there will be no problem with this process. However, if the bitmaps use relative filepaths, or no filepaths at all, PolyTrans will not be able to locate them during the automatic bitmap conversion proces. To fix this problem, show this dialog box and add a new bitmap filepath that points to the directory where the bitmaps are located.


Enables Options

"Enables" Dialog Box Options

These check boxes control what type of data will be imported into Maya from the PolyTrans database.

Triangle Mesh

If this option is enabled (checkmarked) then all mesh (polygon) geometry will be imported from the file into Maya. If disabled then all mesh geometry will be ignored.

Mesh Normals

If this option is enabled (checkmarked) then any vertex normals that are assigned to polygon vertices will be imported.

Texture Coordinates

If this option is enabled (checkmarked) then any (u,v) texture coordinates that are assigned to polygon vertices will be imported. If this option is not enabled then texture maps will not appear on the polygon surfaces.

Vertex Colors

If this option is enabled (checkmarked) then any vertex colors that are assigned to polygon vertices will be imported. There are not too many cases where you will find scene data that has vertex colors assigned to the geometry. However, some file formats, such as OpenFlight and Okino’s BDF format do support vertex colors and such data can be imported through PolyTrans into Maya by enabling this option.

Vertex colors can only be viewed in the shaded view windows of Maya, and only when the following series of steps are taken:

· Go into shaded mode by selecting "Shading/Smooth Shade All" from the view menu.

· Select the "Display/Custom-Polygon-Display/Square-Box" menu item from the main menu.

· On the "Custom Polygon Display Options" dialog box select these options:

· "Objects affected" = All

· "Color in shaded view" = check marked

· "Color material channel" = None

· Press "Apply" button on the "Custom Polygon Display Options" dialog box.

Skinning Weights

Enabling this option will turn on one of the most complex aspects of the PolyTrans-for-Maya export process, that of being able to import skinning weights associated with mesh data.

"Mesh skinning" is the process of deforming a single skin mesh with a skeleton or any hierarchical set of transform nodes. The contribution of each bone of the skeleton to the deformation of a vertex in the mesh is controlled by vertex weights.

Only skinned meshes are supported for import, not skinned NURBS surfaces or skinned curves.

Typical sources of skinned mesh data are 3ds Max and DirectX.

Shading Parameter Modification Combo Boxes

These combo boxes provide hands-on control over how imported material shading parameters should be modified so that the imported model can be rendered nicely as it would have looked in the source 3D program. The two combo boxes and the single numeric type-in box provide you good control over the ambient, diffuse, specular, luminous and reflection shading coefficients imported into Maya, as well as the opacity of the material, its index of refraction (IOR) and Phong shininess value.

The first drop-down combo box selects which of these shading parameters you want to modify. Each shading coefficient has its own operation which can be selected (the second combo box) and an optional numeric type-in value (the third data entry text input). The following describes the various shading parameters that can be controlled:

Ambient Coefficient: This controls the amount of color reflected from an object based on the ambient light in a scene. A good default value is 0.1 through to 0.3 and ideally ranges from 0.0 to 1.0.

Diffuse Coefficient: This controls the amount of color reflected from an object based on the direct light shining on it. A good default value is 0.4 and ideally ranges from 0.0 to 1.0.

Specular Coefficient: This controls the intensity of the highlight color on an object. A good default value is 0.7 and ideally ranges from 0.0 to 5.0.

Luminous Coefficient: This controls how much color is added directly to an object, irrespective of any light which shines on it (the higher the value, the more the object will appear to glow). In general you should keep this value at 0.

Reflection Coefficient: This controls the ray trace reflectivity of an object. If set to 1.0 then the object will be 100% reflective and if set to 0.0 then the object will not be reflective at all.

Opacity: This is the inverse of transparency. 0.0 will make the object fully transparent, while at 1.0 the object will be fully opaque.

Index of Refraction (IOR): This is the ray traced index of refraction of an object. If the value is greater than 1.0 then a ray will refract as it passes from one material to another (as per Snell’s law), each of different IORs. Ideal ranges are 1.0 through to 3.0.

Phong Shininess: This controls the width of the specular highlight seen on an object. An ideal range is 6 (very wide) to 300 (very narrow). The default is 32.

For each material shading parameter, several actions can be performed on it during the import process:

Do Not Import: The shading parameter is set to 0, effectively making the shading channel appear black (for color channels).

Import Unchanged: The shading parameter is imported as is, with no change.

Set and Use Default: The shading parameter is set to some "good" default value (as determined by the import converter). This default value will be shown in the type-in box.

Set to Specific Value: The imported shading parameter will be overridden with the user specified value of the numeric type-in box.

Import and Crop by: The shading parameter is imported and will remain unchanged if it is less than the numeric type-in value shown on the dialog box. If it is greater, then the imported value will be clamped to be no greater than the numeric type-in value. This is a good operation, for example, if you do not wish for the ambient shading coefficient to be greater than 0.3.

Import and Scale by: The shading parameter is imported and multiplied by the numeric type-in value shown on the dialog box

Normalize Color and Coefficient: This option only applies for the ambient, diffuse, specular and luminous shading coefficients and their respective RGB colors. This option is a hybrid approach which tries to automatically "guess" at a proper shading coefficient value given the raw (and corresponding) color imported from the file. As mentioned, the shading coefficient is needed to create nice looking (nicely shaded) images in a photo-realistic rendering program. If this option is chosen, then the specific shading coefficient will be derived directly from the relative intensity of the imported color which corresponds to this shading coefficient (diffuse color for diffuse shading coefficient etc.). For example, if the imported diffuse color is (0.4, 0, 0), which is 40% of full-bright red, then the diffuse shading coefficient will be set to 0.4 and the diffuse color will be modified to be (1, 0, 0). When the new color (1,0,0) and the new shading coefficient (0.4) are multiplied together, it results in the original color imported from the file (0.4, 0, 0). In general you may wish to use the "Set and Use Default" option to get good rendered results.

Maya Import Speed-Ups & Slow-Downs

Since the dawn of Maya, Maya can be very slow to import specific types of files, from single objects with only 4 million polygons to scenes with many hundreds-of-thousands of nodes. There are known reasons why this slow performance occurs internally within Maya.

The methods and solutions by which Okino has overcome these Maya limitations is described in detail in this section.

Quick suggestions to speed up an import process into Maya:

1. Enable the "Keep Okino ‘#’ Unique Hash Suffixes on Object Names" checkbox. This can often speed up the import process considerably when there is a large number of nodes in the scene.

2. Keep "Use Geometry Instancing To Reduce Scene Complexity" enabled as well as the "Maximum Number of Instances per Geometry Item" checkbox. This can help speed up the import process when there is an excessively large number of nodes (instances and objects) in the source scene.

3. Optionally, on the "Mesh" import options panel, change the radio button to "Create new vertex normals based on angles". This will help overcome Maya’s problem of being slow to import mesh vertex normals. Doing this is independent of how many objects or instances are in the scene. Please make this change subjectively, only if you find that the importer status dialog box is stuck a lot of the time on "-- Processing Vertex Normals"

The following user interface options have been grouped together to better help you control a slow Maya import process.

Keep Okino ‘#’ Unique Hash Suffixes on Names of Object, Material, Light, etc.

In very simple terms, disabling this option will make Maya node names look "nicer" but by doing so it can slow down Maya considerably.

Let’s look at a real world example.

Original Okino node name from the source file:

"CC09-10-sport-layers.1 #1"

Converted Maya node name, checkbox disabled:

CC09_10_sport_layers_1

Converted Maya node name, checkbox enabled:

CC09_10_sport_layers_1__1

Technical Explanation: in Okino software all node names (objects, instances, cameras, lights, etc.) must be globally unique. This is achieved by adding #1, #2, #3, etc. to the end of node names within Okino software. However, within Maya, node names only need to be unique within their local scope. Disabling this option will strip off the #1, #2, #3, etc. from the Okino node names and instead let Maya itself make each node name unique.

As a visual example, the following screen snapshot shows 4 instanced spheres within 2 grouping folders, within the Okino stand-alone software:

With the checkbox disabled, the hierarchy looks like this in Maya:

And with the checkbox enabled, the hierarchy now looks like this in Maya. Note that the node naming is more consistent with the original Okino node naming because the Okino suffixes were NOT removed prior to them being sent to Maya:

Speed-Up Hint: A scene with an excessively large number of nodes (such as 300,000) was found to import significantly faster (mere minutes instead of hours) if this checkbox was enabled (which is the default).

Use Geometry Instancing To Reduce Scene Complexity

If this option is enabled (checkmarked) then the mechanism of "instancing" will be used to try and keep the size of the imported Maya scene as small as possible. For example, if the source scene has 1000 bolts all derived from the same mesh primitive data, and the 1000 items have been placed in the Maya scene graph via "instancing" then during import process only a single copy of the geometry mesh data will be imported, but with 1000 virtual copies made of it. These virtual copy instances merely act as indexes to the original mesh primitive data instead of being full copies, which can significantly reduce the size of the final output.

If this checkbox is disabled then unique and explicit copies of mesh data will be imported into the Maya scene graph regardless of whether each copy is exactly the same as previous copies already imported.

Speed-Up Hint: A scene with an excessively large number of nodes (such as 300,000) was found to load faster if this instancing checkbox was disabled.

Maximum Number of Instances per Geometry Item = #

When enabled, this limits the number of times a geometry item is allowed to be instanced. As explained below, Maya becomes increasingly slow as the number of instances are made from a single geometry object (a PDB file which takes a few seconds to import into Okino’s stand-alone software will take 4 hours 28 minutes to import into Maya when this UI checkbox is disabled vs. 2 mins 38 sec when this UI checkbox is enabled).

For example, if the source file wants to instance a screw 2000 items, but this type-in value is set to 20, then 20 virtual instances of the screw will be made while 1980 explicit geometry copies will be placed into the Maya scene. Ideally we would want to create 2000 instances but Maya is simply too slow to create and display 2000 instances of one geometry item.

How was this magic "20" number determined? Through analytical testing! A Protein Database (PDB) molecular file named "1aew.pdb" was imported into Maya 15 times (in ‘Ball & Stick" mode), each time varying this type-in parameter value from 1 to 1000. The PDB file has 32712 instances of a sphere and 29208 instances of a cylinder.

The following graph shows how long it took to import the PDB file for type-in parameter values ranging from 1 to 150 (values above 150 rocketed upwards to 753 seconds for a value of ‘1000’).

What this graph shows is that Maya generally has the fastest import times when the maximum number of instances per geometry object is limited to the lowly number of 20! This seems entirely odd and goes against common sense, but indeed Maya does slow down considerably as the number of instances per geometry object increases. For example, if the "Maximum Number of Instances per Geometry Item" option is disabled then Maya takes 4 hours and 28 minutes to import the PDB file (102 times slower than if the option was enabled and the type-in value set to "20"). One should consider that Okino’s own software only takes a few seconds to import and display this same PDB file.

Import and Create Materials

If this option is enabled (checkmarked) then materials will be created and assigned to the geometric objects in the scene. If disabled then no materials will be created.

Speed-Up Hint: As a minor suggestion, very large scenes which import all too slowly can be sped up by disabling this option, but it is not something we’d normally recommend. Creating Maya materials can be a slow operation if the number of materials grows too large, at which point Maya was never designed to be efficient.

Import and Create Bitmap Texture References

If this option is enabled (checkmarked) then all 2D bitmap textures will be assigned to their associated materials. If this option is disabled then no bitmap texture references will be created and none will be assigned to the Maya materials (this basically disables texture mapping). This option should be kept enabled at all times as there is no real benefit to disabling this option.

Disable Maya User Interface During Import Processing

This is an option which can aid in speeding up an import process, for Maya 2011 or newer. It should always be kept enabled.

It has been found that Maya will update/repaint/redraw its user interface whenever the PolyTrans software temporarily provides Microsoft Windows control over its message queue (such as when the PolyTrans software needs to check for end-user button-press process cancellations). This can seriously slow down the import process, such as when there are thousands to tens or thousands of objects or nodes in the scene to be imported – in such cases Maya will redraw its OpenGL view window(s) many times during the import process rather than only once after the import process has completed. For example, the Maya attribute editor will update at least once per second after each new object + material is created.

If this option is enabled then Maya’s user interface will not be updated during the import process and hence you will not see any screen refreshes or updates.

Enables Panel # 2

Object Hierarchy

If this option is enabled (checkmarked) then the hierarchical relationship of objects in the scene will be imported. This data will also use the scaling, rotation and translation data used by animation keyframe # 0. For a good explanation of object hiearchy, please refer to the section ‘ How Hierarchies Convert Between Maya, PolyTrans and Other 3D Programs’ .

Object Animation Data

If this option is enabled (checkmarked) then object animation data which is currently contained within the internal database will be imported into Maya.

Please note that this importer will most probably insert new nodes into the tree called ‘anti-pivot’ nodes. These represent the object pivot point locations from the imported data file.

Camera Animation Data

If this option is enabled (checkmarked) then camera animation data which is currently contained within the internal database will be imported into Maya.

Remove Grouping (NULL) Nodes if No Children

This will prevent grouping nodes (NULL nodes, yellow folders, as they are all known) to be imported into the Maya hierarchy if they do not contain any subsequent children objects and the NULL node itself is not animated. It is enabled by default and it used to make the hierarchy cleaner. You may want to disable this in special cases, such as if a run of NULL nodes are used to represent a skeletal hierarchy.

Compress PolyTrans Hierarchy During Import

If this option is enabled then PolyTrans will optimize its own internal object hierarchy tree when it is imported into Maya. Any combination of PolyTrans ‘Null Node’ (empty folder, empty instance) followed by a child geometry node (mesh or NURBS object) will be converted into an equivalent Maya Transform Node plus Shape Node pair. In Maya the Shape nodes will be invisible, so the resulting "compressed" hierarchy will look cleaner.

As explained in the subsequent help section titled ‘How Hierarchies Convert Between Maya, PolyTrans and Other 3D Programs’, PolyTrans uses a hierarchy system based on a DAG tree. In this hierarchical system only null nodes can be connected to other null nodes to form the hierarchy of the geometry tree; this form is very similar to the DAG node hierarchy used by all Alias products, including Maya. However, other popular 3D programs, such as 3D Studio and LightWave, do not adhear to pure DAG hierarchies; these programs allow objects to be connected to objects, whereas in PolyTrans and Maya objects (shape nodes) can only be connected to their corresponding transform nodes (null nodes), and transform nodes can only be connected to transform nodes. In other words, PolyTrans and Maya only allow geometry nodes to be leaf nodes (the bottom most nodes) of a hierarchy tree while internal nodes of the tree can only be Transform node (or empty folders/instances in PolyTrans lingo).

Thus, when PolyTrans imports from such non-DAG system programs as 3D Studio (.3ds) and LightWave (.lwo, .lws), it has to change the non-DAG hierarchy into a DAG compliant hierarchy before the hierarchy can be stored within the PolyTrans internal database. To some people it may appear that PolyTrans has messed up the imported .3ds/.lw hierarchy trees. In fact, the hierarchy trees will be identical functionally and mathematically (all objects from the .3ds/.lw file will be leaf nodes of the tree, rather than internal nodes of the tree). If this option is enabled then the Transform node hierarchy shown within the Maya user interface should look identical to the original 3D Studio or LightWave hierarchy (ie. no additional PolyTrans empty nodes should be visible).

Pivot Points

Pivot points are a fundamental component of an animation system. In the realm of the Okino animation system ‘pivot points’ define a local 3D coordinate system in the space of an object about which the scale, rotation and translation animation function curves will be applied. The pivot point in Okino’s scene graph is defined by a 3D point in space and a local coordinate system defined by 3 orthogonal XYZ axes; the pivot point is itself defined relative to the local coordinate system of the underlying mesh or geometry data.

Since Maya cannot accept an arbitrary pivot point and pivot orientation, PolyTrans has to resort to other methods to get this pivot point information imported into Maya.

First, some rules need to be defined for the following explanations. "Pivot point processing" only needs to be done under these circumstances for the two "Minimal" modes:

1) The source pivot point 4x4 matrix has a non-zero origin or non-aligned orientation axis. In other words, it has something "interesting" in it, or

2) The instance has animated channels associated with it, or

3) The (static) transformation matrix associated with an instance has "off-axis" scaling within it. Off-axis scaling is where rotation comes before scaling, which is basically an illegal or poorly supported situation for most 3D programs.

For a "grouping folder" (an Okino "empty instance"), which is deemed to have a valid pivot point matrix, a new child ‘anti-pivot’ node is added to the Maya hierarchy tree - the child node is assigned the inverse pivot matrix and the original parent transform node gets the animation data. This properly applies the anti-pivot effect to the subsequent children in the tree.

The following options specify how the Okino pivot point information is exported for instance-geometry nodes:

Embed pivots in *all* geometry data

Logic – regardless of the ‘3 rules’ explained above, this processing mode will be invoked on ALL instance-geometry nodes if any of them have a non-identity pivot matrix.

The inverse pivot matrix is multiplied into the raw mesh geometry vertices. In other words, the messy "pivot point" problem is made to disappear by having its 4x4 matrix physically multiplied into the mesh geometry vertices.

Embed minimal pivots in geometry data

Logic – same as above except that the processing mode will only be invoked when one of the "3 rules" explained above are valid. This leads to a cleaner conversion.

Output *all* anti-pivot transform nodes

Logic – regardless of the ‘3 rules’ explained above, this processing mode will be invoked on ALL instance-geometry nodes if any of them have a non-identity pivot matrix.

A new "anti-pivot" dummy node is introduced into the Maya hierarchy tree, between the mesh geometry object and the parent transform node (which has the animation on it). The inverse of the Okino pivot point matrix is assigned to the transformation matrix of this new anti-pivot dummy node. This new anti-pivot node acts to ‘pivot-in’ the geometry vertices prior to the animation data being applied to the geometry.

Thus, this mode "splices in" the pivot point matrix into the Maya hierarchy tree as a new transformation node rather than to multiply the pivot point matrix into the raw mesh geometry, as with the other modes.

Add minimal anti-pivot transform nodes

Logic – same as above except that the processing mode will only be invoked when one of the "3 rules" explained above are valid.

This is the default option since (1) it results in the fewest changes to the output hierarchy tree and (2) it does not physically affect the mesh geometry coordinate data.

Ignore all pivot point data (can cause problems)

This option prevents pivot point information from being sent to Maya. Normally you would never want to enable this option.

Atmospherics & Backgrounds

If this option is enabled (checkmarked) then fog, mist and background color schemes will be imported into Maya. If disabled then these effects will be ignored.

Cameras

If this option is enabled (checkmarked) then the parameters of the current default camera will be imported.

Custom Attributes (meta data)

If this checkbox is enabled then per-instance Okino meta data items will be imported as Maya per-node "custom attributes".

Lights

If this option is enabled (checkmarked) then ambient, point, directional and spot light sources will be imported.

Enable timing tests, seconds per # of nodes

This is an option used to help determine how Maya slows down considerably as the number of imported nodes increases. Enabling the checkbox will cause the importer to print out the number of seconds between node intervals, which is set by the type-in box. For example, if set to 10000 then the importer will print out the time it takes to import every 10000 nodes. If you plot these numbers then you will invariably find that Maya slows down considerably as the number of nodes increase to very large numbers.

Note: the timing test numbers have been formatted so that you can easily edit/extract just the node-count vs. time-in-seconds portion to a .txt file and feed it into Excel as a scatter-plot graph.

Enables Panel # 3

Texture Map "Alpha Channel" Handling and Routing Method

This combo box determines how the alpha channel of a 32-bit RGBA texture map is to be routed into the Maya material shader’s transparency or opacity plug. Normally you would set this to the "default" option, since some Okino importers (such as the OpenFlight importer) will allow the routing to be explicitly specified. However, for other importers such as SketchUp, the alpha channel mapping needs to be specified directly since the SketchUp program uses implied alpha mapping.

Quick example usage: if you want to import from a SketchUp file which uses embedded 32-bit RGBA texture maps, and the alpha channel of the RGBA texture map is being used as the transparency source, then set this combo box to "Route alpha channel of RGBA texture to shader's transparency plug". For example, if the texture map is of a tree bitmap, and the alpha channel determines which part of the mapped polygon is to appear transparent, then this combo box allows the alpha channel of the texture map to be routed into Maya’s transparency shader input plug.

The options are:

Use default routings defined by 3D importer

This option (which is the default) causes no overridden routing to occur. Only if the source importer defines a texture map routed to the opacity or transparency shader plug does such a texture map appear on the opacity or transparency shader plug, such as occurs with the OpenFlight importer.

Route alpha channel of RGBA texture to shader's transparency plug

The RGBA texture map is routed to the Maya material shader’s transparency input plug. This will cause the transparency of the object to be determined by the intensity of the "A" alpha channel of the 32-bit RGBA texture map.

Same as above, but check existence of a RGBA texture map first.

As it states, this is exactly the same as above. However, if the RGBA texture map cannot be located on disk, or if the texture cannot be determined as having an alpha channel (it is not 32-bit), then the routing is not performed.

Route alpha channel of RGBA texture to shader's 'opacity' plug

This is the same as the above option except that the alpha channel is routed as "opacity" and not "transparency. This is achieved by routing the RGBA texture map to the shader’s ".transparency" plug, as well as seting the shader’s ".alphaGain" to –1.0 and ".alphaOffset" to 1.0.

Same as above, but check existence of a RGBA texture map first.

Same as above, but for the opacity shader plug.

Dialog Boxes Shown During the Import Process

The following options control whether specific dialog boxes will be shown during the import process:

Always Ask If Viewport is to be Auto-Resized

If this option is enabled (checkmarked) then a dialog box will be presented to the user every time a scene is imported into Maya. This dialog box will ask the user whether the current camera viewport should be auto-resized around all of the imported objects. If this checkbox is diabled then this dialog box will not be shown after the import process is completed and no auto-resizing will be done.

Always ask to add default lights if none in scene

If this option is enabled (checkmarked) then a dialog box will be presented to the user every time a scene is imported into Maya if there are no lights in the scene. This dialog box will ask the user whether two or three lights are to be added to the scene automatically. If this checkbox is diabled then this dialog box will not be shown after the import process is completed and no lights will be added to the scene.

Show Import Converter Progress Dialog Box

If this option is enabled (checkmarked) then a small status dialog box will appear while a file is being imported into the core PolyTrans software.

Show PolyTrans to Maya Progress Dialog Box

If this option is enabled (checkmarked) then a dialog box will appear while the PolyTrans database is being imported into Maya. This is the second phase of an import process. This dialog box will describe which entity is currently being processed, the amount of memory currently being used and the overall completion status.

Show 'CAD Import Optimization Request' Dialog Box

After an import process is completed, a dialog box may pop up saying that PolyTrans has detected a large number of objects named "face", "body", etc. This normally occurs if you import from a CAD file format and you have not enabled the "Optimize Hierarchy" checkbox. That dialog box will warn you of this situation and it will suggest that you re-import the CAD file again with the "Optimize Hierarchy" checkbox enabled on the CAD importer.

If you decide to choose the "Never show this dialog box again" combo box option then the dialog box can once again be shown after an import process by enabling the "Show 'CAD Import Optimization Request' Dialog Box" shown above.

Maya Animation Parameters Imported from File

The following checkboxes control how various animation user interface aspects of Maya are modified according to animation timing and extents data imported from the file.

Time Units

If this option is enabled (checkmarked) then the Maya animation working time units will be updated to be equal to those imported from the file. For example, if the file uses 24 frames per second then the global animation time units will be set to ‘Film (24 fps)’ in Maya.

Playback Speed

If this option is enabled (checkmarked) then the animation frame rate from the imported file will be used to change the current global animation playback speed in Maya.

Minimum/Maximum Playback Times

If this option is enabled (checkmarked) then the start/end of the imported animation data will be used to modify the minimum/maximum playback animation time limits in Maya’s user interface.

Start/End Extent Times

If this option is enabled (checkmarked) then the start/end of the imported animation data will be used to modify the animation start/end time limits in Maya’s user interface.


Mesh Conversion Options

"Meshes" Dialog Box Options

When importing polygons, or NURBS surfaces converted to polygons, this dialog box specifies options relating to the import of the polygons.

Weld Adjacent Vertices Together

If this checkbox is enabled (check-marked) then a vertex welding operation will be applied to all polygon vertices. Vertex welding collapses adjacent vertices which are within a distance less than or equal to the threshold value specified on the dialog box. This welding operation should be performed if the "Create New Vertex Normals Based On Angles Between Adjacent Polygons" option (see below) is enabled. Note that welding of vertices can only occur within a single object and not between different objects.

Maximum Distance Between Two Vertices

If the distance between two vertices is less than or equal to this number, and the "Create New Vertex Normals Based On Angles Between Adjacent Polygons" checkbox is check-marked (enabled) then the two vertices will be collapsed (welded) into one.

Reverse Orientation of all Polygons and Flip Normals

If this checkbox is enabled (check-marked) then the orientation of all polygons will be reversed. You might want to enable this option if you are finding that the Maya renderer is displaying only the back-facing polygons rather than the front-facing polygons.

Make Polygon Orientations Consistent (Unify Normals)

For some 3d models, in particular those created using Autodesk’s AutoCAD, there is no consistent orientation of the polygons; ie: some polygons of a surface are oriented clockwise (the geometric normal points inward) while the remaining polygons are oriented counterclockwise (the geometric normal points outward). This is a problem for the "Assign Smoothing Groups to Mesh Objects" option below since all of the polygons must have the same orientation in order for the smoothed vertex normals to be computed properly.

If this option is enabled (checkmarked) then a special algorithm will be used to walk over the polygon mesh and reorient each polygon. Note, however, that adjacent polygons MUST share the same vertices for this algorithm to work; you can ensure that the vertices are shared by enabling the "Weld Adjacent Vertices Together" option above.

Always Triangulate Meshes Prior to Import

If this checkbox is enabled (check-marked) then all polygonal mesh data imported into Maya will first be triangulated (3 sided polygons). The default is disabled.

Source of Vertex Normals

This section determines the source for the vertex normals assigned to each vertex of each polygon. The vertex normals can either come from the imported file, or they can be generated by Maya based on the angles between adjacent polygons.

Vertex Normals From Imported Data (** Most Accurate)

If this radio button is selected then the vertex normals are read directly from the input file. Many 3d file formats support a vertex-per-normal-per-polygon.

NOTE: Maya v2.51 and newer is VERY slow for importing vertex normals. This is a fundamental problem with Maya that was never addressed when vertex normals were added for Maya v2.51. If you find that a model is taking a very long time to import, then abort the import process and change this option to "Create New Vertex Normals Based On Angles".

Create New Vertex Normals Based On Angles Between Adjacent Polygons

If this radio button is selected the Maya will compute the vertex normals automatically based on the relative angle between adjacent polygons. The angle is specified by the slider control; 0 degrees produces faceted models whereas 180 degrees produces perfectly smooth models. If you press the "All Hard Edges" button then the smoothing angle will be set to 0 degrees and the model will appear faceted. If you press the "All Soft Edges" button then the smoothing angle will be set to 180 degrees and the model will appear completely (overly) smooth.


Export: Bitmap Conversion Options

"Bitmap Conversion" Dialog Box Options

This dialog box controls how referenced bitmap files will be handled during the import into Maya. The three options are basically:

1. Do not modify the bitmap filename reference and do not perform any bitmap conversion. This is useful if your bitmaps are already in a format recognized by Maya and the path to the bitmaps have been specified to Maya via its ‘File/Configure Paths’ dialog box.

2. Perform bitmap conversion for those file formats not recognized by Maya and change the file extension of the bitmap. For example, if importing from a LightWave scene file which references a bitmap called "brick.iff" (in the Amiga IFF file format), then this dialog box can enable the import converter to convert the Amiga IFF bitmap file to a Maya recognized file format such as TIFF.

No Bitmap Conversion or Bitmap Filename Changes (Radio Button)

If this radio button is chosen then any bitmap reference imported into Maya will not be changed, its filename extension won’t be changed, the path to the bitmap will not be changed and no bitmap conversion will be done.

Convert all Bitmap File References To... (Radio Button)

Rather than convert referenced bitmap images to another file format this radio button (when selected) simply changes all the file extensions on bitmap files to a specific type. For example, if set to "TIFF" then all bitmap filenames imported into the Maya will be changed so that their file extensions end in ".tif". This is a useful option is you already have all of the referenced texture maps converted to the desired file format (either from a previous invocation of this import converter or by using a batch bitmap conversion program).

Auto-Convert Bitmap Files to Another Format (Radio Button)

If this radio button is selected then all 2d bitmap textures which are currently defined and referenced by the internal NuGraf/PolyTrans database scene will be automatically tagged then converted to a new user-specified 2d bitmap file format. For example, if you are importing a LightWave scene to Maya, and the LightWave file references IFF bitmap files then this option can be enabled so that the IFF images get converted to TIFF format automatically.

If the bitmap texture(s) cannot be found in the location specified by the pathname prepended to the texture filename then the export converter will search for the texture(s) in all directories specified in the Maya ‘Bitmaps’ file search paths (these can be modified by choosing the ‘File/Configure Paths’ dialog box and clicking the ‘Bitmaps’ tab).

Bitmap File Format (Combo Box)

This combo box lists the destination bitmap file format.

Bitmap Bits/Pixel: 2, 4, 8, 24 (Combo Box)

This combo lists determine the number of bits/pixel to write out to the new 2d bitmap file. The default is 24 bits. A color quantization algorithm will be used for the 2, 4 and 8 bits/pixel output formats. Not all bitmap file formats can accept 2-8 bits/pixel (in particular JPEG).

Dimensions: X = #, Y = #

These two drop-down list boxes determine the X and Y resolution for the converted bitmap file(s):

No Change = Do not change the X or Y size (default)

Closest = Use the next highest power-of-2 size

2, 4, 8, ... 256, 512 = Choose a specific size for the X or Y dimension

Confirm Potential Bitmap File Overwrites

If this checkbox is enabled (checkmarked) then the bitmap converter will confirm any potential overwrites of existing bitmap files on disk which have the same filename and extension as the one being written. If this option is disabled then no confirmation will be made.

Save Converted Bitmaps To...

These radio buttons determine where the new bitmap file will be written to. Note that enabling the ‘Replace all Bitmap File Paths With This Path:’ option or the ‘Strip File Paths From All Bitmap References’ option below will change the path prefix for the converted bitmap even though it was saved to disk in the location specified by one of these 3 radio buttons.

Directory Where Geometry Was Read From

The new bitmaps will be written to the directory where the original geometry file(s) were read from.

Maya ‘textures’ Directory

The new bitmaps will be written to the Maya ‘textures’ directory.

Specific + Browse

The new bitmaps will be written to the directory specified by the text box. This directory can be changed by press the ‘Browse’ button.

Strip File Paths From All Bitmap References

If this checkbox is check-marked then all bitmap file references will have their filename path removed from them. This is the default because Maya prefers to locate a bitmap file using the paths specified in its ‘File/Configure Paths’ dialog box rather than having an absolute (and possible non-portable) absolute path specified for a bitmap file. For example, if a bitmap reference was original ‘c:\myfiles\textures\brick.bmp’ then enabling this option will change the reference to ‘brick.bmp’. If this option is disabled then the filepath and filename to the bitmap reference will not be changed.

Replace all Bitmap File Paths With This Path:

This option allows all bitmap references imported into Maya to be prefixed with a new filepath. This might be useful, for example, if all of your bitmap files are located in one specific directory or if you wish to change the prefix on the imported bitmap references. This new path will override all other options on this bitmap conversion dialog box (in other words, it will replace a bitmap’s file path regardless of any other file path added to the bitmap via other options in this dialog box). To choose the filepath press the "Browse" button. To disable this option, click on the checkbox again so that it comes un-checkmarked.

Edit Automatic Bitmap Conversion Search Paths

In specific circumstances you will need to inform PolyTrans where your source bitmap images are located so that automatic bitmap file conversion proceeds properly. If PolyTrans reports warnings that specific images could not be located during automatic bitmap conversion press this button so that the Search-Paths dialog box appears. Using this dialog box you can tell PolyTrans where your source bitmaps are located.


Curves Options

"Curves" Dialog Box Options

These check boxes and combo boxes determine how NURBS and spline curves, or spline shapes (such as those from 3ds Max) will be imported as either NURBS curves or meshes. The NURBS curves are in no way related to the 2D trim curves of a NURBS surface.

Input independent 3D NURBS curves

The NuGraf/PolyTrans 3D database has a very extensive NURBS curve sub-system. Each NURBS curve object can have 1 or more NURBS curves associated with it. Multiple curves inside a single object can either be considered to form a single continuous "composite" curve, or each curve can be considered unique, closed, planar (in world space) and oriented such that the curves of the object can be directly converted into a trimmed NURBS surface (in other words, the first curve forms the boundary of the surface and subsequent closed curves form the holes).

The following options control how the various NURBS curve configurations can be converted during the import phase. An extensive internal NURBS curve conversion and cross-conversion system exists.

If 'renderable flag' enabled in NURBS curve primitive:

If the 'renderable' flag of a NURBS curve primitive is internally enabled, and the curve(s) form closed loops, then it is possible to convert the NURBS Curve primitive into a 3D format that is renderable: either a mesh or a trimmed NURBS surface. The following options define what will be done to NURBS Curves primitives during the import phase when their 'renderable' flag is enabled:

[No Change]

No change. The NURBS Curve primitive will be imported as-is.

Convert and Import as Polygon Mesh

The NURBS Curve primitive will be converted into a mesh object prior to import.

Convert and Import as Trimmed NURBS Surface

The NURBS Curve primitive will be converted into a corresponding trimmed NURBS surface (patch). If the conversion process cannot be made then it will be imported as a polygon mesh instead.

[NOTE: Maya does not provide a method to import uv-space trimmed NURBS surfaces. At this time the converted trimmed NURBS surfaces will be imported as equivalent converted meshes.]

If 'renderable flag' not enabled:

If the 'renderable' flag of a NURBS Curve primitive is not enabled then the curves will be considered just as plain curves that cannot be seen when rendered. In this case, the following options define what will be done to NURBS Curves primitives during the import phase when their 'renderable' flag is disabled:

[No Change]

No change. The NURBS Curve primitive will be imported as-is.

Import Composite NURBS Curve as a Single Curve

No change except in the case when the NURBS curve primitive is defined as a single composite curve made up of multiple curve segments. In this case the multiple curve segments will be temporarily converted to a single NURBS curve before import.

Input independent 3D spline shapes (as either NURBS or meshes)

The NuGraf/PolyTrans 3D database has a very extensive spline primitive sub-system. This primitive accommodates one or more spline curves per primitive. If the multiple spline curves are each closed then the overall Spline Shape is termed "renderable" and can be thus converted into a polygon mesh or a corresponding trimmed NURBS surface (patch). For example, the letter "B" can be defined by 3 Bezier curves, the first forming the outer boundary and the latter two forming holes. Note, that unlike the NURBS Curve primitive, each spline curve of the Spline Shape is composed of only a single curve segment (no composite spline curves are allowed).

The following options control how the various Spline Shape configurations can be converted during the import phase. An extensive internal Spline Shape conversion and cross-conversion system exists. The Spline Shape primitive also handles almost every major spline type (Bezier Spline, B-Spline, Cardinal Spline, Linear Spline, Tensioned Spline, TCB Spline), and their internal cross conversion (between spline types) or between the various spline types and a NURBS curve.

If 'renderable flag' enabled in spline shape primitive:

Convert and Import as Polygon Mesh

The Spline Shape primitive will be converted into a mesh object prior to import.

Convert and Import as Trimmed NURBS Surface

The Spline Shape primitive will be converted into a corresponding trimmed NURBS surface (patch). If the conversion process cannot be made then it will be imported as a polygon mesh instead.

[NOTE: Maya does not provide a method to import uv-space trimmed NURBS surfaces. At this time the converted trimmed NURBS surfaces will be imported as equivalent converted meshes.]

If 'renderable flag' not enabled:

Convert and Import as a NURBS Curve Object

Each spline curve of the Spline Shape primitive is resampled into a corresponding NURBS Curve segment and placed into a single NURBS Curve primitive. The 'renderable' flag of the new NURBS Curve primitive will be disabled. The final NURBS Curve primitive will look similar (within an error tolerance) to the original Spline Shape.


Animation Conversion Options

"Animation" Dialog Box Options

Animation Import Enables

Object Animation

If this option is enabled (checkmarked) then object animation data which is currently contained within the internal database will be imported into Maya.

Please note that this importer will most probably insert new nodes into the tree called ‘anti-pivot’ nodes. These represent the object pivot point locations from the imported data file.

Camera Animation

If this option is enabled (checkmarked) then camera animation data which is currently contained within the internal database will be imported into Maya.

Import as 'Target Cameras' via "Look-At" Constraints

If this checkbox is enabled then all cameras will be imported and created as a 'targeted camera', where there is a look-from location and a look-at location, similar to the targeted cameras of 3ds max and all Okino software. This is accomplished by adding a new look-at node to the scene and constraining the free Maya camera to point at the look-at node. Normally Maya uses "free" cameras that target their viewer via a set of pure rotations.

Light Animation

If this option is enabled (checkmarked) then light animation data which is currently contained within the internal database will be imported into Maya.

Material Animation

If this option is enabled (checkmarked) then material animation data which is currently contained within the internal database will be imported into Maya (ambient, diffuse, specular, luminous and filter material colors, as well as material opacity).

Default Euler Rotation Order:

Rotations in Maya must be specified as Euler angles. Rotations which are specified as quaternions in the core Okino scene graph must be converted to Euler angles during import to Maya. Also, Maya does not directly support repetitive-axis Euler orders (such as XYX, XZX, YXY, YZY, ZXZ, or ZYZ). When converting rotation animations from Okino to Maya, it is necessary to resample quaternions and repetitive-axis Euler angles into non-repetitive-axis Euler angles.

This option specifies which of the possible 6 Euler orders should be used as the target for that resampling.

Keep original Euler order when possible:

When active, this option indicates that the importer should preserve the Okino-assigned Euler orders whenever possible. This is intended to minimize the changes made to the rotation data on conversion. Any rotation data which was specified as Euler angles inside the core Okino scene graph, with an Euler order of either XYZ, XZY, YXZ, YZX, ZXY, or ZYX, can be imported into Maya without alteration.

When this option is disabled, all rotation data will be resampled on import into Maya. The resampled rotation data will have the Euler order specified by the "Default Euler Order" combo box. This can be used to ensure that all rotation animation data in the file has been converted into a specific Euler ordering.

Fix Up -180/180 Degree Euler Rotation Flips (Maintain Euler Curve Continuity)

This option fixes imported Euler rotation channels which flip back and forth between values close to 180 degrees and -180.0 degrees, from key to key. Normally this flipping will not pose a problem unless Maya "slows down" an animation for previewing in slow motion, and does sub-key interpolation (in such cases the objects may appear to randomly spin in the wrong direction at specific keys).

This option can only take effect when rotation curves are explicitly resampled during the import process.

Background Info:

There are several cases where the imported rotation animation needs to be "resampled" from one mathematical format to another, such as if the Euler order has to be changed, or when quaternion animation needs to be converted to Euler animation curves for Maya.

The resampling process first converts the imported rotation value(s) at each keyframe to a 4x4 rotation matrix, and then the matrix is decomposed into explicit (X, Y, Z) Euler rotation angles, of the desired Euler order. The Euler angles will always be in the range -180 to 180 degrees.

The primary disadvantage of the traditional Euler decomposition method comes about when the target program (DirectX, MotionBuilder, or Maya) attempts to view the animation in a "slow motion" mode. Since two adjacent frames might have values of, say, -179.9 and 179.9 (or vice versa) on one of the Euler angles, the sub-frame interpolation between these values will result in a quick spin through 359.8(!) degrees, rather than the intended 0.2 degree change. When a "slow motion" mode is not in effect, the user will traditionally never see the sub-frame interpolated values because the -179.9 and 179.9 rotations are absolute and correct values (needing no further interpolation between them).

Problem example: if the imported source rotations are 150.0 deg, 179.0, deg, 185.0 deg, 190.0 deg then after resampling the rotations will be 150.0 deg, 179.0 def, -175.0 deg, -170.0 deg. These are correct. However, programs like Maya, MotionBuilder and DirectX, during slow-motion playback where sub-frame interpolation is performed, will look at the 179.0 to -175.0 degree interval and create new interpolated values through a 354 degree rotation interval and not the shorter 6 degree rotation.

What This Option Does:

Enabling this option will allow an additional algorithm to be used which detects cases of "-180/180 degree Euler Flips" and attempts to fix them. This alternative algorithm will take the previous frame of animation into account when performing rotation resampling. It will attempt to decompose the rotation into a equivalent set of Euler angles which represents the smallest Euler-space change of values. This makes the algorithm very good for preventing -180/180 discontinuities in the Euler animation curves. This allows "slow motion" sub-frame interpolation to function as ideally expected.

One possible down-side to this alternative algorithm is that Euler angles are free to "drift" away from the normal -180/180 range. Let us suppose you have an animation of a spinning top. Under the traditional algorithm, the top might spin from 0 to 180, then a discontinuity effect occurs, causing the next frames to go from -180 to 0 to 180, and so forth. With this option enabled, the top would spin from 0 to 180, then from 180 to 360 to 540, and so forth. There are hypothetical scenarios where users might not want that to happen. If that is the case, disable this option to ensure that all angles are clamped to the -180/180 range.

Animation Resampling and Reduction Options

The documentation for the "Animation Resampling and Reduction Options" dialog box is now be accessed through these two methods:

1. Display the "Animation Resampling and Reduction Options" button on the "Animation" panel of the "Import Options" dialog box inside PolyTrans-for-Maya, then press the Help button located on that dialog box.

2. Or, start up the stand-alone PolyTrans or NuGraf software, select the "Animation Resampling and Reduction Options" menu item from the Edit/Preferences menu, then press the Help button.


NURBS Options

"Tessellation" Dialog Box Options

This panel controls how NURBS surfaces are imported into Maya. They can either be iimported as pure parametric NURBS surfaces, or converted to polygonal meshes. It also controls the triangulation of mesh data (not related to the NURBS import process).

NOTE: Maya cannot handle a lot of NURBS surfaces compared to other programs. What would be considered a "small" number of NURBS surfaces for the PolyTrans database will often bring Maya to its knees. In such cases, import the NURBS surfaces as polygonal meshes instead.

NURBS to Polygon Conversion Options

This import converter allows pure NURBS data to be imported from various file formats, including IGES and Wavefront OBJ. Trim curves are also supported. The following dialog box controls how the NURBS surface are imported into Maya.

Import Parametric NURBS Surfaces As:

Maya NURBS Surfaces

Setting this radio button causes pure parametric NURBS surfaces (patches) inside the source PolyTrans database to be imported into Maya as pure NURBS surfaces. Note: Maya tends to become very slow and unresponsive for a fairly small number of imported NURBS surfaces compared to the large number which PolyTrans can handle.

NURBS Trim Curves

If this option is enabled (checkmarked) then trim curves will be assigned to their associated NURBS surfaces, if the curves exist. If disabled then no trim curves will be assigned to the NURBS surfaces.

Polygonal Meshes

Setting this radio button causes the NURBS surfaces to be converted to a polygonal mesh prior to being imported into Maya. This is the default since it is often more dependable.

Reverse Orientation of Polygonalized NURBS Patches

If this checkbox is enabled then the orientation of all polygonzied NURBS surfaces will be reversed prior to import into Maya. This option should be enabled if only the ‘back side’ of a NURBS object is visible when rendered with the Maya renderer.

Surface Tolerance

Curve Tolerance

These sliders control the conversion of NURBS surfaces into polygons. The number of polygons used to approximate the true NURBS surface (or, its smoothness) is controlled by the ‘Surface Tolerance’ slider. Lower values will make the surface smoother but at the expense of a longer tessellation time and more resultant polygons. This slider represents the maximum allowable distance (tolerance) between the true NURBS patch and the tessellated polygonal surface; it is measured as a percentage of an object’s maximum bounding box size. For example, if a NURBS patch is being tessellated which is 10x10x10 units in size, and this slider is set to 0.2% then the resultant polygonalized surface will not deviate from the ideal NURBS surface by more than 0.02 units (2% of 10).

Also, the ‘Curve Tolerance’ slider is used to control the smoothness of the NURBS trimming curves. Smaller values will make trimmed curve regions smoother, but again at the expense of a longer tessellation time and more resultant polygons. This slider represents the maximum allowable distance (tolerance) between the true NURBS curve and the tessellated polygonal curve; it is measured as a percentage of an object’s maximum bounding box size (the object on which the curve lies). For example, if a NURBS patch is being tessellated which is 10x10x10 units in size, and this slider is set to 0.2% then the resultant polygonalized NURB curve will not deviate from the ideal NURBS curve by more than 0.02 units (2% of 10).

Polygon Triangulator Enables

These options select which polygon triangulator will be used when a polygon mesh must be converted into a set of triangles during import (this only happens when importing a mesh with holes, or a mesh with intersecting line segments). Three different types are available. All handle n-sided geometry with recursive holes, but some are better than others for different mesh topology. If all 3 are enabled, then each one will be used in succession if a predecessor triangulator could not triangulate the mesh data.

Triangulator 1

The first algorithm creates nicely triangulated meshes of n-sided concave polygons with optional holes but it cannot handle polygons with self intersecting edges or holes that intersect with the outer boundary. If it cannot triangulate the mesh data then triangulator 2 and then 3 will be executed next.

The following image shows the type of tessellation expected from triangulator # 1 and # 2:

Triangulator 2

The second algorithm is a more modern version of triangulator # 1. It should be able to handle all possible cases of triangulation, including self intersecting edges. This version will create new vertex locations when self intersecting edges are found, or it will remove vertices from the final triangulated mesh if it determines that such vertices are not required. If you want this triangulator to always work first, then disable triangulator # 1.

Triangulator 3

This triangulator can handle any topology of polygon, including butterfly polygons (those that fold back on themselves), self-intersecting polygons and polygons whose interior holes intersect with its exterior boundary. In general, the newer triangulator # 2 should be used by default; however, triangulator # 3 is better than # 2 if you wish to use trapezoidal decomposition of the mesh.

Triangulator 3: Assume Concave Polygons are Complex (slower)

If this option is enabled then triangulator # 3 will triangulate the polygon using a trapezoid scanline-based scheme which will allow any type of polygon to be triangulated but at the expense of creating less visually appealing triangle meshes. If disabled then the triangulator may not be able to triangulate butterfly polygons or simple polygons.

The following image shows the type of tessellation expected from triangulator # 3 for concave geometry with holes:


Invoking PolyTrans via MEL Command Line Arguments

PolyTrans-for-Maya includes an alternative method to invoke its import and export converters within Maya, via the MEL scripting language.

Invoking a PolyTrans Import Converter

The syntax to import a file into Maya via PolyTrans is:

ptload [options] "filename in quotes"

The optional [option] arguments are:

-show_importer_options

If this option is specified then the options dialog box for the PolyTrans importer (such as 3D Studio) will be shown. If not specified, the import options dialog box will not be shown.

-display_queued_messages

If this option is specified then any error or warning messages encountered during the import process will be displayed in a dialog box.

-ok_to_ask_user_to_autoresize_viewports

If this option is specified then you will be prompted with a dialog box asking whether the view ports should be auto-resized around the imported data. The corresponding option on the PolyTrans-for-Maya import options dialog box must also be enabled.

-ok_to_ask_to_add_default_light_sources

If this option is specified then you will be prompted with a dialog box asking whether 2 default light sources should be added to the scene (if there are none in the imported data). The corresponding option on the PolyTrans-for-Maya import options dialog box must also be enabled.

-dont_autoset_animation_length

If this option is specified then the import converter will not ask if the animation length inside Maya should be changed to match that of the imported file.

Examples:

ptload -show_importer_options "d:\\models\\file.3ds"

ptload "d:/models/scene.dxf"

Notes:

- You MUST surround the filename with double quotes.

- If you use the backslash character (\) in the filename then you must double them up (\\). See the example above. Alternatively, use the forward slash character for filenames (/).

Invoking a PolyTrans Export Converter

The syntax to export the Maya scene to PolyTrans is:

ptsave [options] "filename in quotes"

The exporter to use is specified with either the -exporter_file_type or the -exporter_match_string options described below. If neither of these two options are specified then Polytrans-for-Maya guesses at which exporter you want to invoke based on the file extension.

The optional [option] arguments are:

-show_exporter_options

If this option is specified then the options dialog box for the PolyTrans exporter (such as 3D Studio) will be shown. If not specified, the export options dialog box will not be shown.

-exporter_file_type ".3ds"

-exporter_match_string "3D Studio"

These two options tell PolyTrans-for-Maya which export converter you wish to invoke.

The first method, ‘-exporter_file_type’ specifies the export converter based on the file extension; for example, you would use ".3ds" to invoke the 3D Studio export converter. You must surround the file extension with double quotes. The list of supported file extensions can be found on the PolyTrans-for-Maya export list box.

To invoke an export converter without any guessing, use the "-exporter_match_string" option. The second argument to this option is a string which represents the name of the PolyTrans export converter. You must take this string from the text shown on the PolyTrans-for-Maya export list box. For example, if the list box has the string "Wavefront Files" then you can use this string as the second argument. Internally PolyTrans-for-Maya will compare your specified string against each of the supported export converters - if a match is made then that export converter will be invoked.

If neither of these options are specified then an export converter will be invoked based on its file extension.

Examples:

ptsave -exporter_match_string "3D Studio" "d:\\models\\file.3ds"

ptsave -exporter_file_type "3ds" "d:/models/scene.3ds"

Notes:

-You MUST surround the filename with double quotes.

- If you use the backslash character (\) in the filename then you must double them up (\\). See the example above. Alternatively, use the forward slash character for filenames (/).


Okino .bdf File Transfer Format Information

This help section describes the importance of the Okino .bdf Transfer File format to your data translations. This file format is the best way to move between Maya and other 3D packages which read/write the Okino .bdf Transfer File format directly, such as the Okino NuGraf software, the Okino stand-alone PolyTrans program, 3ds Max or Maya (both which have native PolyTrans plugin support). If you don’t use these programs then this section will have no bearing on your 3D data translations

First, it should be explained how PolyTrans works. An import/export process in PolyTrans proceeds in 2 stages. For export, the data must first be transferred from the internal Maya database to the internal PolyTrans database; the PolyTrans internal database is one of the most extensive of any 3D program as it can natively store data from most 3D packages, such as 3ds Max, LightWave, Maya, etc. Once the Maya data has been successfully mapped to equivalent entities inside the PolyTrans database, the selected export converter module (such as the PolyTrans Wavefront OBJ exporter) walks through the PolyTrans internal database and exports the data to its particular file format, in this case Wavefront OBJ. This 2 step process is necessary to make the PolyTrans exporters independent of whatever program they are accepting data from. For an import process, this 2 step process is reversed in such way that the import converters feed data to the PolyTrans internal database, then the PolyTrans internal database is mapped/copied into the Maya internal database.

Now that you understand the concept of the PolyTrans internal database, you will understand why the Okino .bdf File Transfer format is significant. In a nutshell, the Okino .bdf File Transfer format is a complete snapshot of the internal PolyTrans database saved to a disk file. Thus, this .bdf file contains the most complete description of the Maya translated database. Now, if two programs cannot be connected together directly (such as Maya and 3ds Max), then the .bdf file format can be used to create a pseudo-data pipeline between the two programs, just as if they were connected directly through the PolyTrans internal database.

Why is the .bdf file format so important to my data translation work?

The Okino .bdf Transfer File format will only have significance to you if you wish to transfer data to/from Maya and one of:

· The stand-alone NuGraf software

· The stand-alone PolyTrans program

· 3ds Max (which has native PolyTrans plug-in support).

· Or, any 3D program which has native .bdf file support (no others at this time).

Moving Data Between Maya and 3ds Max

In particular, those with Maya will want to use the .bdf file format at all times to move data to/from Maya and 3ds Max. Okino has developed a native plugin version of PolyTrans for both Maya and 3ds Max. Since 3ds Max can’t read/write Maya files, and Maya can’t read/write 3ds Max files, the .bdf file format is the best method to cleanly transfer data between these two programs. In essence, the .bdf format forms a conduit or data pipeline between the two programs just as if they were connected directly with the PolyTrans internal database forming the connecting bond.

To reiterate, to move Maya data to 3ds Max, stand-alone PolyTrans or NuGraf, export out a .bdf file from Maya then read it into these application programs. Vice versa, a .bdf file can be written out by any of these programs and read into Maya directly. Inside Maya and 3ds Max, the .bdf file is read/written using the special PolyTrans plugin modules for both Maya and 3ds Max.


How Hierarchies Convert Between Maya, PolyTrans and Other 3D Programs

One of the truly hardest parts of writing a good data translation system is the proper and clean conversion of object hierarchy. Object hierarchy defines the relationship of one connected object to another, such as a human hand connected to the forearm, connected to the upper arm and then connected to the torso.

3D computer graphics complicates hierarchy conversion with such issues as pivot points, different methods of applying or inheriting transformations and related animation curves and whether object nodes can be directly connected to other object nodes or whether they can be connected to ‘null nodes’ (joints) only.

The entire jist of this overview is to explain that Okino’s PolyTrans software does not allow object nodes to be connected directly to other object nodes. Many 3D software packages available today (3D Studio, LightWave, Maya, etc). began their lives in the early to mid 1980’s as other lesser 3D software programs (CAD-3D, Journeyman, Alias 1.0); in those days it was common to allow objects to be connected to objects. For our discussion, we define an ‘object’ as some type of data inside a 3D program which encapsulates raw geometry data, such as meshes, NURBS or quadrics. 3D Studio MAX and LightWave still allow objects to be connected to objects at the time of this writing.

When Okino began development of its NuGraf and PolyTrans software in 1988 it realized the limitations of allowing objects to be connected to objects: if you move a parent object then all children objects move with it. Programs such as 3D Studio MAX get around this limitation by internal hacks in which anti-transformations are applied to the object children to keep them stationary while the parent object is moved about the scene.

In 1988 Okino realized that a pure DAG hierarchy system would be much better to use to store object hierarchy. The idea came from the Alias Research ‘Power Animator’ software package of the time. In this system the hierarchy tree is formed by ‘null nodes’ (think of them as joint nodes) which form a type of ‘skeleton’. The relative location of each node defines the location and orientation of each joint in a hierarchy. Then, the objects themselves (which contain the geometry) are hung off each null node.

To put it another way, the hierarchy tree is defined by ‘null nodes’ (no geometry) and all object nodes (which contain the geometry) are always leaf nodes in the tree.

Or to put it in very simple terms, PolyTrans only allows null nodes to be connected to other null nodes. In addition, objects can only be connected to null nodes. 12 years after choosing this system, we were surprised to see that Maya implements a similar hierarchy DAG system, although using slightly different visual representation rules. In the latter part of this overview we will show how the PolyTrans hierarchy can be directly converted to equivalent Maya hierarchy for the same visual interpretation.

This can sound very confusing but the following diagrams are meant to provide a visual counter-explanation.

Hierarchy as Defined by 3ds Max (and LightWave)

In many 3D software packages which originated from the mid-1980’s the software would allow objects to be directly connected to other objects, objects to be connected to null nodes, or null nodes to be connected to other null nodes. This is exemplified by the following diagram:

To reiterate, null nodes are nothing more than an object node with no geometry associated with it; they are used to define a relative position and orientation in a hierarchy or skeleton to which other children can use as a new local coordinate system. In PolyTrans lingo these null nodes are called ‘Yellow Folders’, or ‘Empty Instances’. In 3ds Max these are called ‘Dummy Objects’ and in LightWave these are called ‘Null Objects’.

These null nodes often contain a 4x4 transformation matrix that define the relative location and orientation in the hierarchy. In addition, they sometimes contain a ‘pivot point’ definition which defines yet another local coordinate system about which the animation, scales and rotates are to applied. How the pivot point is defined is completely different in PolyTrans, Maya, 3ds Max and LightWave (if only we could have all sat down and had a meeting in 1985 to come up with a general solution!). PolyTrans has the most general pivot point system (a secondary 4x4 transformation matrix); 3ds Max and LightWave provide for a translation-only pivot point; Maya assumes the pivot points are located at the origin of each mesh.

Hierarchy as Defined by Okino’s PolyTrans and NuGraf

As mentioned above, Okino decided to implement its hierarchy system as a series of DAG nodes into a DAG tree (DAG means ‘directed acyclic graph’). In this system the hierarchy is defined by connected null nodes, and objects can only be the leaf nodes in the tree. This is a good system because objects can be moved without affecting any of their children. In addition, if any branch of the tree is to be moved then only the parent null node has to be selected and transformed. If you don’t want a specific portion of the hierarchy tree to be affected by transformations, then DAG trees implicitly allow for this.

The following diagram is a DAG equivalent to that same 3D Studio hierarchy diagram shown above. All we have done is to replace each object node with a new null node, and propagate the original object nodes to be children of the new null nodes.

This hierarchy behaves exactly the same as the original 3D Studio hierarchy. Several times per year we receive email saying that PolyTrans has bugs in it because the hierarchy has been mucked up. We assure all readers that the hierarchy will work the same in PolyTrans as it did in the source 3D software program.

Hierarchy as Defined by Maya

After we began development of the new PolyTrans-for-Maya software we quickly realized that Maya inherited (no pun intended) the same DAG hierarchy system as that used by the early Alias Research software packages, in particular Power Animator of the late 1980’s (from which the PolyTrans DAG hierarchy system was chosen).

Although opaque to users, Maya too only allows null nodes to be connected to other null nodes, and objects only to be connected to null nodes (in comparison with 3D Studio and LightWave which allows objects to be connected to objects).

In Maya, everything works on the principle of ‘Transform Nodes’ with optional child ‘Shape Nodes’. All the hierarchy nodes you see in the ‘Outliner’ or the ‘HyperGraph’ are actually just the Transform Nodes. These Transform Nodes contain the 4x4 transformation matrix, the assigned animation curves and the pivot point information. If there is geometry associated with the transform node then it is stored in a Shape Node which is made a child of the Transform Node; the material and textures are assigned to the Shape Node only. Normally the Shape Nodes are not shown in any display window inside Maya unless you enable the ‘Shape Nodes’ option.

The Maya hierarchy system is very similar to that in PolyTrans. Maya uses the concept of Shape Nodes connected to Transform Nodes whereas PolyTrans uses the concept of Object Nodes (equivalent to Shape Nodes) connected to Empty Instances (Transform Nodes). In PolyTrans the object nodes (turquoise icons in the user interface Selector Window) are always visible whereas in Maya they are implicitly made hidden. To make the imported PolyTrans hierarchy look cleaner within Maya, the PolyTrans Object Nodes are converted into children Shape Nodes of a corresponding Maya Transform Node; this will make the hierarchy appear cleaner.

Another nice benefit of this clean-up process is that the imported hierarchy into Maya will now appear to be exactly the same as it did in 3D Studio or LightWave. The relationship of the nodes, and the naming of the nodes will be the same in Maya as they appeared in 3D Studio or LightWave; however, Maya internally makes the distinction of having the object nodes be hidden children of the main Transform nodes which form the hierarchy tree.

It should also be noted that in certain cases PolyTrans may have to introduce new Transform Nodes into the Maya hierarchy tree when animation is present. As mentioned previously, Maya does not have the same capabilities to import pivot point information as other 3D programs, especially if the pivot is associated with a Transform Node with no child Shape Node. If a node-pair contains a Shape Node then PolyTrans will embed the inverse pivot point in the mesh vertices or NURBS Cvs; if a Transform Node exists with no corresponding Shape Node geometry them PolyTrans must add a new child Transform Node called an ‘anti-pivot’ node which will contain the inverse pivot point location and orientation. All of this is necessary to place the proper pivot points into the hierarchy graph when animation data is present.


Potential Speedups of the PolyTrans to Maya Transfer

Potential Speedups of the PolyTrans to Maya Transfer Process:

Since the 1999 release cycle of Maya 2.0 it has been actively known to Okino, and to our customers, that the import of very large files can be extremely slow in Maya. The problem tends to come about due to:

- The slow processing of vertex normals via the Maya programming API

- A high number of objects or nodes in the scene

- A non-linear slowdown as the number of instances of a geometry item increases past the tiny count of 20.

- And to a much lesser degree, the slow processing of materials when there are numerous materials in the scene.

As explained in the "history" section further below, Maya was designed for interactive character animation but over the years people have come to try and import unduly large CAD files into the program without the basic understanding that Maya cannot handle such data in a blind manner. These speed issue can be overcome by using the following Okino instigated methods.

Please also refer to the PolyTrans-of-Maya import options "Enables # 1" panel where specific checkboxes are outlined in terms of the following suggested speed-up methods.

A Quick Synopsis to speeding up a Maya import process

1. Close all Maya dialog editors prior to any import. That includes the Maya attribute, material and hyper-graph editors. It is a known problem that every time PolyTrans-for-Maya creates a new Maya material definition, the Maya editors are visually updated. Tcauses the import process to slow down considerably. By default the PolyTrans-for-Maya software will lock out any Maya user interface updates (thus, speeding it up considerably), using a back-handed and non-documented windows messaging pump filtering method.

2. For truly huge files, close all applications other than Maya. Importing large files tends to cause Maya to consume large amounts of memory as compared with other similar animation programs. Free up as much physical memory as possible for Maya to utilize.

If your machine begins to "page swap" then you’re really out of luck, as page swapping will slow your machine to a crawl – the only recourse is to get more memory. Don’t try to import scenes for which you simply don’t have enough physical memory.

3. Keep "Use Geometry Instancing To Reduce Scene Complexity" enabled as well as the "Maximum Number of Instances per Geometry Item" checkbox. This can help speed up the import process when there is an excessively large number of nodes (instances and objects) in the source scene. Read the "Enables # 1" section (and its graph) on how we came to use the default number of "20".

4. Ensure that the "Keep Okino ‘#’ Unique Hash Suffixes On Handle Names" checkbox remains enabled. This can help speed up the import process when there is an excessively large number of nodes (instances and objects) in the source scene. Read the "Enables # 1" section for a visual explanation of this checkbox. For example, a SketchUp file imported 8 times faster with this option disabled, for a scene with hundreds of thousands of nodes.

5. If the import status dialog box often gets stuck on "Processing Vertex Normals" then you are experiencing one of Maya’s fundamental problems – slow vertex normal import. When you sense that this is happening revert to the old-fashioned "Smoothing groups" method of vertex normal import. This is a non-ideal, approximated method to get vertex normals onto your mesh data within Maya, but it is far faster.

Note, however, that this "smoothing group" method can actually slow down the import process when there are millions of nodes in the Maya scene (as analytically measured by Okino).

- Press the "Import Options" button on the PolyTrans-for-Maya dialog box,

- Click on the "Mesh" panel tab,

- Change the radio button to "Create new vertex normals based on angles".

Unfortunately this approximated method is not always the technically best method when dealing with CAD data. CAD data ideally needs the original vertex normals from the source dataset but Maya just becomes too slow when importing large numbers of vertex normals (as explained further below).

6. Use Okino’s "Hierarchy Optimizer" to overcome slowdowns due to excessively large number of objects.

Maya, 3ds Max, Cinema-4D and LightWave will all crawl to a stop when importing a large number of objects (usually starting around the 10,000 node level). On the other hand, Okino’s internal conversion pipeline is made to efficiently handle well over 500,000 object nodes without slowing down. Okino’s primary "reason to be" is to bridge this gap, allowing very large source files to be streamed into these lesser-efficient animation programs. This is achieved through Okino’s unique and proprietary "Hierarchy, parts and object count optimization system".

Please refer to "Worst-Case Study # 2" further below as an excellent example of how this optimizer can speed up an import process from being 1 hour to only 1 minute.

This optimizer is enabled by default on all Okino CAD importers and some other importers with known high-node-count problems (such as DWF-3D and VRML2 file formats).

However, very large CAD models may still have too many instances even after the Okino optimizer has been executed (please refer to Worst-Case Study # 2 below as a prime example). In such rarer cases, the optimizer should be executed one or two more times. It will make a WORLD of difference to the import process times for Maya.

Without getting into extended details,

§ Press the "Options…" button located beside the "Hierarchy optimization" checkbox found in most key Okino importers.

§ On the dialog box which appears next, change the "Number of times to run this optimization process" from its default 1 to 2, or even 3. Remember to change this back to "1" for future imports.

§ Let the CAD import process proceed again.

7. For really big and slow datasets, optimize the scene first in Okino’s stand-alone software using this method:

- Start up Okino’s stand-alone software.

- Import the large file. After import, right click the mouse to quickly stop the (potentially) slow viewport redraws. Zoom up the camera view only.

- Execute "Optimize Number of Objects and Folders" from the "Win" menu of the upper-right "Selector Window".

- Look at the scene statistics in the "Scene Statistics Spreadsheet" dialog box available from the main File or Translate! menus. You will want to eventually get the number of instances down to a "reasonable" level, which is partly subjective. Numbers in the 200’s up to the low 1000’s is most ideal for Maya, and not in the 10’s of thousands or hundreds of thousands of instances.

- If you feel that the scene still redraws too slowly within Okino software (which is a good indicator of whether Maya will slow down and die during an import process), execute the "Optimize Number of Objects and Folders" menu command one more time. You don’t want to execute it more than 2 times via this menu command.

- Save the scene to the Okino .bdf file format. This is Okino’s native file format.

- Start up Maya and PolyTrans-for-Maya. Import the Okino .bdf file. If the import times are still too slow then make sure you have followed steps 1, 2 and optionally 3 in this section above.

8. As a worst case scenario, disable the "Mesh Normals", "Texture Coordinates" and "Import and Create Materials" checkboxes on the "Import Options" dialog box, Enables panel of PolyTrans-for-Maya.

- This will speed up the import process because two of the slowest bottlenecks within Maya will be disabled – that of very slow import of vertex normals and of assigning material definitions.

- You may want to start off by just disabling Material import. Maya can slow down when a large number of materials are defined in the scene (such as more than 200).

Cursory Side Notes:

1. You can make your own timing graphs (to analyze the import speed of Maya) by enabling the "Enable timing tests" checkbox on the "Enables-2" panel. The final status dialog box will provide a list of total node counts vs. total time in seconds. You can easily edit this file in a text editor so there is only the numbers and commas per line, after which you can load it into Microsoft Excel (as a comma-separated text file) to create a "Scatter plot" graph.

2. Keep the "Optimize Hierarchy" checkbox enabled on each Okino CAD importer – it is also known as "Optimize scene" or "Compress & Optimize Number of Objects" on other Okino importers.

3. Keep the "Topology = Bodies" radio button or list box option enabled, if not grayed out (unavailable), on Okino’s BREP solids-based CAD importers. This is accessible from the "Expert" mode and "Advanced Options" in some Okino CAD importers such as SolidWorks, Solid Edge, Inventor, etc. If you use the "Topology = Faces" option, especially without the "Hierarchy Optimizer" option enabled, then you’ll get a very large number of objects which will take a long time to import.

Worst Case Study # 1 – STL file with 4 million polygons, one object definition

This is one of the pathologically worst examples of Maya’s slow import of mesh vertex normals. This STL file import would otherwise be considered a trivial example for import into any other program other than Maya.

Input File = A simple STL file with 4.8 million polygons (a stock Okino STL test file)

The following are the times it took just to send the raw polygon data to Maya, not including any time to import and clean-up the STL file. It can’t get much simpler than this:

12 seconds = Just polygonal data. No vertex normals or materials

124 seconds = Import of the polygon data AND the vertex normals + materials. That is 10.3 times slower just by having the vertex normals sent into the Maya scene graph.

17 seconds = Same as the "124" seconds import run except that the Maya setFaceVertexNormals() function was prevented from being executed. This means that 86% of the 124 seconds is being unduly spent in the very inefficient Maya setFaceVertexNormals() function. This has been the culprit since Okino’s original 1999 emails to Alias|Wavefront.

16 seconds = Import of the polygon data but with approximated vertex noirmals using Maya "smoothing groups" (in which Maya computes the normals on the fly).

For comparison, the import of the same file into the equivalent newest version of 3ds Max x64 took only 11 seconds (including the creation of the explicit vertex normals).

NOTE: these tests produced similar results over the prior 14 years of the known problem with the Maya setFaceVertexNormals() function, and was tested with the inclusion of the "MAYA-4444" service pack fix (which appears to do nothing).

Worst Case Study # 2 – SketchUp File with 149000 Instances (A Slow Maya Import)

Okino’s primarily focus since the late 1980’s has been to act as a "stepping stone", allowing the most massive of 3D scenes to be imported into programs which simply cannot handle such datasets. The following is one prime, real world example. This would be equivalent to many CAD file imports which have very high node and instance counts.

After months of Maya testing using various files and import options, it was found that Maya slows down, more and more, if the number of instances made of a geometry item increases past 20. This seems absurdly low, but in fact this was analytically measured. Please refer to the "Enables # 1" section (and its graph) on how we came to use the default number of "20".

Hence, this SketchUp file with over 149000 instances was an excellent candidate to show how slow Maya can become if no special action is take during the import process and how it can be sped up considerably through the PolyTrans-for-Maya "special treatment" import methods.

Input file = Temple model, 78MB SketchUp file (very large)

Original file statistics:

148911 geometry instances (but, many are deeply recursive via ‘red folders’)

15795 object definitions (therefore, 9.4 to 1 instancing ratio)

3.34 million unique polygons

47.8 million polygons due to all instancing

Okino .bdf file size = 232MB

What needs to be done is that Okino’s "Hierarchy Optimizer" needs to be executed two more times to bring the original 148911 instance count down to a more reasonable 7355 instances (that method is outlined further up in this section of the help file).

After one execution of the Okino hierarchy & part count optimizer:

124373 instances (the first level of instancing recursions was removed)

6221 object definitions

3.2 million unique polygons

47.8 million polygons due to all instancing

Okino .bdf file size = 210MB

After another second execution of the Okino hierarchy & part count optimizer:

7355 instances

1770 object definitions

29.1 million unique polygons

47.8 million polygons due to all instancing

Okino .bdf file size = 834MB

Thus, this final optimized scene has 20.2 times less instances than the original (7355, down from 148911) but more explicit polygon data (non-instanced).

Basically Maya slows down in a non-linear manner as the node count increases – the higher the node count, the slower Maya becomes. Refer to the graph below and its associated comments.

Import processing timing & memory tests:

Variation of the SketchUp Source File (Hierarchy Optimized None, 1 or 2 Times) | Number of Unique Okino Instances & Objects in the Source Scene | Actual Number of Maya Nodes Created (Transforms + Instances) | Number of Unique Polygons to Import | PolyTrans-for-Maya – Default Import Options | PolyTrans-for-Maya – Materials disabled | PolyTrans-for-Maya – Instancing disabled | PolyTrans-for-3dsMax (default options, no mesh welding)
Original File Import | 148911, 15795 | 1.12 million | 3.34 mil | 1hr 5mins | 40mins | 1hr 52mins | 3mins 6sec (with instancing enabled), 12mins (with no instancing)
One level of optimization | 124373, 6221 | 417,000 | 3.2 mil | 2mins 42sec | 1mins 57sec | 13min 28sec | 44 sec
Two levels of optimization | 7355, 1770 | 21,000 | 29.1 mil | 1min 22sec | 2mins 42sec | 4mins 23sec | 14 sec

Notes:

1. "Default Import Options", in particular, refers to

a. Explicit vertex normals imported

b. Instancing enabled.

c. Maximum number of instances per geometry item capped to "20"

d. "Keep Okino ‘#’ Unique Hash Suffixes On Handle Names" is enabled

e. Materials imported

f. Maya UI disabled.

2. "Instancing disabled" means that the default import options were used except that only instancing was disabled.

3. "Materials disabled" means that the default import options were used except that only material import was disabled.

4. Timings do not include the import parsing time for the SketchUp file or any Okino .bdf loading times into the Okino scene graph. They do not also include any Maya view window display times. The tests are only to determine the Okino scene graph to Maya scene graph timings and nothing else.

5. All Maya editors were closed during the timing tests.

The following graph plots the total import time (on the vertical axis) vs. the total number of nodes imported (along the horizontal axis). Notice the non-linear slow down of Maya as the number of nodes increases well past 200000 nodes. The first 200k nodes only takes 62 seconds whereas the next 200k nodes takes 269 seconds (4x slower), the next 200k nodes takes 566 seconds (9x slower), the next 200k nodes takes 721 seconds (11.6x slower) and the last 200k nodes takes 1719 seconds (28x slower). The graph is a portion of the 1hr 5mins, "Original File Import – Default Import Options" 1.12mil node import test.

Worst Case Study # 3 – A Molecular PDB file with 32713 Atoms

This example is of a molecular PDB file with 32713 atoms and 29208 bonds. It is quite a large PDB file compared to most others. This is a good example to compare Maya’s instanced vs. non-instanced import times.

Results:

1. Disabling instancing causes the import process to slow down considerably.

2. Disabling materials speeds up the import process considerably.

Import processing timing & memory tests:

Variation of the SketchUp Source File (Hierarchy Optimized None, 1 or 2 Times) | Number of Unique Okino Instances & (Objects in the Source Scene) | Actual Number of Maya Nodes Created (Transforms + Instances) | Number of Unique Polygons to Import | PolyTrans-for-Maya – Default Import Options | PolyTrans-for-Maya – Materials disabled | PolyTrans-for-Maya – Smoothing Groups for Normals | PolyTrans-for-Maya – Instancing disabled | PolyTrans-for-3dsMax (default options, no mesh welding)
1aew.pdb molecular file | 66294 (2) | 128k | 18.79mil [ 0 ] | 2mins 54sec [ 3mins ] | 32 sec [21 sec] | 6mins 46sec [2mins 28sec] | 8mins 7sec [5mins 29sec] | 12 sec with instancing, 42 sec without instancing

As a short synopsis, the fastest import time occurred using default import options for the procedural geometry and no material assignments (21 seconds). The slowest import time occurred for polygonal geometry and instancing disabled (8mins 7 sec)

· The timing numbers within [ ] brackets are for geometry imported as procedural spheres and cylinders (no polygons are imported, only procedural geometry).

· The timing numbers not within [ ] brackets are for geometry imported as explicit polygons.

When instancing is enabled, and the spheres + cylinders are imported as polygons, then the number of total polygons to import is only 576. But if instancing is disabled then the number of total polygons to import increases to 18.79 million (because every sphere and cylinder is imported as their own copy of geometry).