home *** CD-ROM | disk | FTP | other *** search
/ RISC DISC 3 / RISC_DISC_3.iso / resources / etexts / gems / gemsv / ch7_6 / nff. < prev    next >
Text File  |  1995-01-28  |  4KB  |  138 lines

  1. Neutral File Format (NFF)
  2.  
  3. The NFF is originally described by Eric Haines in the Standard
  4. Procedural Database (SPD).  In this note, we describe a modified
  5. version of NFF.  The NFF is designed as a minimal scene description
  6. language.  The language was designed in order to test various
  7. rendering algorithms. It is meant to describe the geometry and basic
  8. surface characteristics of objects, the placement of lights, and the
  9. viewing frustum for the eye.  Some additional information is provided
  10. for esthetic reasons (such as the color of the objects, which is not
  11. strictly necessary for testing the efficiency of rendering
  12. algorithms).
  13.  
  14. Presently the following entities are supported by the modified NFF:
  15.      A simple perspective frustum
  16.      A background color description
  17.      A positional (vs. directional) light source description
  18.      A surface properties description
  19.      Triangle descriptions
  20.  
  21. NFF files contain lines of text.  For each entity, the first field defines
  22. its type.  The rest of the line and possibly other lines contain further
  23. information about the entity.  Entities include:
  24.  
  25. "v"  - viewing vectors and angles
  26. "b"  - background color
  27. "l"  - positional light location
  28. "f"  - object material properties
  29. "pp" - triangular patch primitive
  30.  
  31.  
  32. These are explained below.
  33.  
  34. Viewpoint location 
  35.  
  36. Template:
  37.     "v"
  38.     "from" Fx Fy Fz
  39.     "at" Ax Ay Az
  40.     "up" Ux Uy Uz
  41.     "angle" angle
  42.     "hither" hither
  43.     "yon" yon
  44.     "resolution" xres yres
  45.  
  46. Type Specification:
  47.     v
  48.     from float float float
  49.     at float float float
  50.     up float float float
  51.     angle float
  52.     hither float
  53.     yon float
  54.     resolution integer integer
  55.  
  56. Description:
  57.     From:  the eye location in XYZ.
  58.     At:    a position to be at the center of the image, in XYZ world
  59.        coordinates.  A.k.a. "lookat".
  60.     Up:    a vector defining which direction is up, as an XYZ vector.
  61.     Angle: in degrees, defined as from the center of top pixel row to
  62.        bottom pixel row and left column to right column.
  63.     Hither: distance of the hither plane from the eye.
  64.     Yon: distance of the yon plane from the eye.
  65.     Resolution: in pixels, in x and in y (currently ignored).
  66.  
  67. Note that no assumptions are made about normalizing the data (e.g. the
  68. from-at distance does not have to be 1).  Also, vectors are not
  69. required to be perpendicular to each other.
  70.  
  71. For all databases, the aspect ratio is 1.0.
  72.  
  73. A view entity must be defined before any objects are defined.
  74.  
  75. Background color
  76.  
  77. Template:
  78.     "b" R G B
  79.  
  80. Type Specification:
  81.     b float float float
  82.  
  83. Description:
  84.    Background color is given R,G and B values between 0 and 1.    
  85.  
  86. Positional light
  87.  
  88. Template:
  89.     "l" X Y Z IpR IpG IpB
  90.  
  91. Type Specification:
  92.     l float float float float float float
  93.  
  94. Description:
  95. A light is defined by its XYZ position.  All light entities must be
  96. defined before any objects are defined.  Light source position and its
  97. Red, Green and Blue components, in the range 0.0 to 1.0 are specified.
  98. Upto NUM_LIGHT_SOURCES light sources can be specified.
  99.  
  100. Fill color and shading parameters
  101.  
  102. Template:
  103.     "f" OdR OdG OdB Kd Ka c1 c2 
  104.  
  105. Format:
  106.     f float float float float float float float float
  107.  
  108. Description:
  109. OdR, OdG and OdB specify the object's diffuse color (RGB triple) in the
  110. range 0.0 to 1.0. Kd is the diffuse reflection coefficient, Ka the ambient
  111. reflection coefficient, c1 and c2 are the parameters for the attenuation
  112. function fatt (d) = 1/(1+c1*d+c2*d*d) used for the light source where "d" is
  113. the distance of a point from the light source (See the textbook by Foley,
  114. van Dam, Feiner and Hughes, Chapter 16 or the newer book, Chapter 14).
  115. Usually, 0 <= Kd <= 1 and 0 <= Ka <= 1, and Kd and Ka are independent.
  116.  
  117. Triangular patch  
  118.  
  119. Template:
  120. "pp" total_vertices
  121. vert1.x vert1.y vert1.z norm1.x norm1.y norm1.z
  122. [etc. for total_vertices vertices]
  123.  
  124. Format:
  125.     pp integer
  126.     [float float float float float float] <-- for total_vertices vertices
  127.  
  128. Description:
  129. All objects are considered one-sided.  A patch is defined by a set of
  130. vertices and their normals.  With these databases, a patch is defined
  131. to have all points coplanar.  A patch has only one side, with the
  132. order of the vertices being counterclockwise as you face the patch
  133. (right-handed coordinate system).  The first two edges must form a
  134. non-zero convex angle, so that the normal and side visibility can be
  135. determined.  Note that, since only triangular patches are supported
  136. total_vertices shown must always be 3.
  137.  
  138.