****************************************** * Extensions of the Neutral File Format * * * * April 16, 1993 * ****************************************** Positional Light ================ Description: "l" X Y Z I R G B Format: l %g %g %g %g %g %g %g A light is now defined by it's XYZ position, intensity and color. Intensity is a value between 0 and 1 and color is defined as RGB with values between 0 and 1 like bachground color. Fill color and shading parameters ================================= Description: "f" red green blue Kd Ks Shine T index_of_refraction Ka Format: f %g %g %g %g %g %g %g %g %g A ambient component Ka was added to the original description of fill color and shading parameters. Ka should be between 0 and 0.3, the default value is 0.2. Bezier patch ============ Description: "pb" u_degree v_degree x00 y00 z00 x10 y10 z10 .. xmn ymn zmn // m==u_degree; m==v_degree Format: pb %d %d %g %g %g .. %g %g %g u_dgree and v_degree are the degrees of the Bezier patch in direction of parameters u and v. The description of the degrees is followed by the coordinates of the Bezier points. A Bezier patch is described by (u_degree+1)*(v_degree+1) points. The Bezier points are listed in columnwise order with u as line index and v as column index. NURBS ===== Description: "pn" u_degree v_degree u_count v_count u_points v_points u1 u2 ... u_u_points v1 v2 ... v_v_points x1 y1 z1 w1 .. xr vr wr zr // r = u_points * v_points [description of trimming curves] "pn_end" Format: pn %d %d %d %d %d %d %g %g .. %g %g %g .. %g %g %g %g %g .. %g %g &g &g [description of trimming curves] pn_end In the first line of a description of a non-uniform rational B-Spline patch the degree, the dimension of knot vectors and the number of control points in direction of parameter u and v are listed. This is followed by the listing of knot vectors, first in direction of u, then in direction of v. After that the control points (deBoor points) of the patch are listed. The deBoor points are described in homogeneous coordinates with the weight w as it's fourth component. The points have to be listed in linewise order with u as line index and v as column index. There is another kind of NURBS: "nonrational" NURBS. These have the same description as listed before, only with a new descriptor: "pnn" and without the weights "w..." in the control points. It is possible to list any number of trimming curves for a NURBS patch immediately after the description of the patch. Description of a trimming curve: t_ord t_count t_points t1 t2 .. t_t_count x1 y1 z1 w1 .. xr yr zr wr // r=t_points Format: %d %d %d %g %g .. %g %g %g %g %g .. %g %g %g %g t_ord is the order of the trimming curve, t_count is the dimension of the knot vector and t_points is the number of control points. The control points are listed after the description of the knot vector. The whole description of a NURBS patch including trimming curves has to be completed by the string "pn_end".