Also Known As: Parallel Ray Trace
|Maximum Image Size||NA|
|Multiple Images Per File||NA|
|Supporting Applications||PRT ray trace application, others|
|See Also||NFF, POV, QRT, Radiance|
Description of 3D scenes for ray-tracing or other rendering applications.
A simple ray tracing format, notable because it is one of the few formats designed to support parallel processing.
Vendor specifications are available for this format.
Code fragments are available for this format.
PRT (Parallel Ray Trace) is the format associated with the PRT ray-tracing application created by Kory Hamzeh. It is apparently based loosely on Eric Haines' Neutral File Format (NFF). Its main distinguishing characteristic is that the PRT application was designed to support parallel rendering, that is, rendering by a number of machines at once, over a network.
Other than the fact that PRT files consist of a number of ASCII lines, there is little mandatory structure. Lines consist of keywords and parameters.
The following keywords may be found in a PRT file:
Each file must start with the following:
from %g %g %g at %g %g %g up %g %g %g angle %g resolution %d %d
The parameters are listed below:
|from||Eye location in XYZ world coordinates|
|at||Center of the image, in XYZ world coordinates|
|up||Vector indicating which direction is up|
|angle||Angle of image in degrees|
|resolution||Resolution in pixels in both the x and y directions|
The following information is extracted from the documentation supplied by Kory Hamzeh, the creator of PRT, and explains the keywords listed above:
A light source is defined as follows:
light X Y Z
light %g %g %g
This keyword defines the position of the light sources. All light sources must be defined before any objects are defined.
A background color is defined as follows:
background R G B y
background %g %g %g y
The background color is in RGB. The last field is used for color cueing (not yet implemented) and must always be 'y'.
A surface property is defined as follows:
surface Rr Rg Rb Ks Fr Fg Fb T Ar Ag Ab Dr Dg Db Sr Sg Sb P Ior
surface %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g
The reflective color triplet. This value should always be 1 1 1 (unless you want this surface to reflect a different percentage per color component).
The specular component. This value is the percentage of light that is reflected from this object. A value of 0 means no reflection, and a value of 1 means a perfect reflector (mirror).
The refractive color triplet. This value should always be 1 1 1 (unless you want this surface to refract a different percentage per color component).
Transparency value. The amount of light that can go through this object; a value of 0 means a totally opaque object. A value of 1 means a totally transparent object.
The ambient color for this object; this means the color of an object if it were fully shadowed. All objects are assigned this color before any shading algorithm is started.
The diffuse color component
This value is the color of the specular highlights. Usually, it should be 1 1 1.
The Phong cosine power for highlights. The higher the number (for example 100), the smaller the highlight.
Index of refraction
A cylinder or cone is defined as follows:
base.x base.y base.z base_radius
apex.x apex.y apex.z apex_radius
cone %g %g %g %g %g %g %g %g
A sphere is defined as follows:
sphere center.x center.y center.z radius
sphere %g %g %g %g
A hollow sphere is defined as follows:
sphere center.x center.y center.z radius thickness
sphere %g %g %g %g %g
A polygon is defined as follows:
vert1.x vert1.y vert1.z
[etc. for total_vertices vertices]
A polygon is defined by a set of vertices. With these databases, a polygon is defined to have all points coplanar. A polygon has only one side, with the order of the vertices being counterclockwise as you face the polygon (right-handed coordinate system). The first two edges must form a non-zero convex angle, so that the normal and side visibility can be determined.
polygon %d [ %g %g %g ] <- for total_vertices vertices
A ring is defined as follows:
ring center.x center.y center.z p1.x p1.y p1.z p2.x p2.y p2.z or ir
A ring is a flat coplanar round-shaped object. For a ring object, you must specify the following: center, two points on the surface of the ring, the inner radius, and the outer radius. If the inner radius is non-zero, then the ring has a hole in the middle with the given radius.
ring %g %g %g %g %g %g %g %g %g %g %g
A quadratic is defined as follows:
quadric center.x center.y center.Z
min.x min.y min.z max.x max.y max.z
a b c d e
f g h i j
You can ray trace any quadratic object by specifying the center, minimum, maximum, and coefficients. This is a very powerful object type. It can do ellipsoids, hyperbolas, and any other quadratic surface.
In the model shown above, the fields "a" through "j" are the coefficients.
quadric %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g %g
You may define a group of objects (and surface properties) to an instance and assign a name to that instance. When the instance is used, all the objects in that instance are placed relative to the given origin. Note that instances by themselves do not create any objects; the objects are created when the instance is referenced. Instances cannot be nested.
An instance is defined as follows:
instance nameofthisinstance [ objects and surface properties ] end_instance
where nameofthisinstance is a user-assigned name such as, for example, tile_pattern.
An instance is referenced as follows:
instance_of nameofinstance loc.x loc.y loc.z
where nameofinstance is the name assigned to a previously defined object instance, and loc.x, loc.y, loc.z represent the location of this object group.
For further information about the PRT format, see the specification included on the CD-ROM. You can also contact:
Kory Hamzeh / Avatar
6217 Melba Avenue
Woodland Hills, CA 91367
Email: [email protected]