maya-pbrt::how maya works

research people publications

overview on how maya works

The scenes in Maya are represented by directed acyclic graphs, or DAGs, which store the transformations and other data structures for every object in Maya. As a means to navigate the DAGs, Maya provides iterator classes which will go through the graphs either bredth first or depth first. Additionally, the developer may provide a filter, such as a "mesh" filter or a "light" filter, to retrieve all the lights in the scene or all the meshes in the scene.

It is important to note that the nodes that contain light data, or any object node in the Maya scene for that matter, contain two separate nodes at the same address. For instance, the developer may access the data of a light, such as the color information and cone angle of a spotlight, by using the constructor of a spotlight with the address of the node in the DAG. Additionally, the same address can be used with a transformation nodeto get all the information relating to the position and orientation of the light.

Unfortunately, the methods for accessing a mesh are not as simple as the lights. In a mesh, the developer has to worry about several different attributes. First off, a mesh is not necessarily composed of triangles, but PBRT requires a triangle mesh. Secondly, the same point may contain different normals or texture information depending upon which polygon associates with the point. Finally, the mesh may compose of several different types of materials. All these problems require a way to consolidate the data from Maya to a format for PBRT.

The solution is to first look at the mesh in terms of the different materials that compose the mesh. Then looking at each material in the mesh, you can get a corresponding polygon iterator for that material in that mesh. The polygon iterator allows you to get the polygons for each material in each mesh. From these polygons, Maya's triangulation methods are used of and the triangle's vertex information is considered to be unique to handle the multiple normal and multiple texture coordinate problem. In other words, for every triangle in the polygon, store the three vertices of the triangle as new points even though they maybe shared with other polygons.

The materials in Maya are just another open-ended graph structure. With this in mind, the materials in Maya utilize a "plug " design. These plugs are strings that can be searched by the developer to determine what data, if any, lies there. For instance, if the developer wants to search to find the color of certain material, they will search the material for the "color " plug. The plug may contain either more information, such as the location of a file for the texture or numerical data, or nothing at all. A different node represents each of these different types of data, and when trying to determine all the information within a material, the developer must determine which node attaches to which plug and pull the corresponding data.

As a whole, Maya provides an information rich environment that provides plenty of data for a third-party rendering environment. However, the providing results that the user intuitively expects can become increasingly difficult when you involve physical renderers that require tonemapping and that do not use ideal point or spot light sources.

::back::


university of central florida : graphics group