home *** CD-ROM | disk | FTP | other *** search
- ****************************************************************************
- * *
- * DBW_Redner Command Script *
- * Format *
- * *
- ****************************************************************************
- * *
- * For Distribution with RISC OS versions of DBW_Render *
- * *
- ****************************************************************************
-
-
-
- Creating a .DAT file
- ~~~~~~~~~~~~~~~~~~~
-
- A command script file for DBW_Render is an !Edit file consisting of a number
- of commands. Each command takes one line. The commands available are as
- follows:
-
- R Set resolution (optional - default is 12.0 hours).
- N Global index of refraction (optional, default = 1.0).
- Z Produce 2D histogram rather than image (default is image).
- a Overriding ambient proportion factor (default not overridden).
- A Set antialiasing parameters (default no antialiasing).
- F Lens focus and aperture for depth of field (default infinite)
- M Set global diffuse lighting parameters (default off).
- & Define scan-line region of image to generate.
- *,! comment, ignored.
- b Set background color.
- w Define a wave source.
- g Define a color blend texture.
- n Define a snowfall texture.
- k Define a 3D checkerboard texture.
- H Set global haze parameters (default no haze).
- f Define fractal surface parameters.
- m Define a marble texture.
- d Define a wood texture.
- p Define a pebbly texture.
- e Set the eye (camera) view parameters.
- l (lower case 'L') Define a directional light source.
- L Define a spherical light source.
- { Start an extent.
- } Terminate an extent.
- s Specify a spherical object.
- t Specify a planar triangular object.
- x Specify a fractal triangular object.
- q Specify a planar parallelogram object.
- r Specify a planar ring (annular) object.
-
- All color values consist of three numbers that range from 0 to 1.
- The color components are specified BLUE, GREEN, RED.
-
- All position/direction values are three numbers ranging in whatever
- numbering system you want. The numbers are X, Y, Z order. Assuming
- you are looking into the screen in the negative Z direction,
- positive X is to the right, positive Y is up, and positive Z is out
- from the screen.
-
- Okay, on to the specifics of the parameters that each command
- character requires. First are listed all the general
- (environmental) commands, then are listed the commands that create
- objects to be rendered in the scene.
-
-
- Global index of refraction (optional, default = 1.0)
- N INDEX
- This single value is taken to be the index of refraction of
- "the air", or put another way of the space between and outside
- of all objects.
-
-
- Set resolution (optional, default = 12.0 hours)
- R RESOLUTION
- The RESOLUTION value controls the MAXIMUM amount of time that a
- full screen (400 scanlines) is allowed to take. This number
- should typically be between 1.0 and 30.0 hours. The more time
- you give the program the better the picture will be that you
- get.
-
-
- Produce 2D histogram, rather than true image
- Z FLAG
- Normally, the contents of the .TMP file that the ray tracer
- produces is a binary pixel version of the described scene.
- However, for the purposes of doing performance tuning of an
- antialiased scene, you can include the command "Z 1" in the
- script file. If done, the image file that the ray tracer
- generates will not be the color scene that it normally is, but
- instead will be a sort of 2D histogram of how much computation
- each pixel in the scene consumed, displayed as a gray scale
- (the brighter the pixel, the more computation). Note that this
- command is only meaningful if non-default values for the "A"
- command have been used. By default, basically an equal amount
- of time is spent on each pixel, (thus an image with Z set to 1
- would come out a flat gray) but the "A" command tells the ray
- tracer to concentrate on certain types of details in the scene
- to produce alias-free images. Using the Z command with a
- parameter of 1 will allow you to see just where the ray tracer
- decided to spend more time, smoothing edges, etc.
-
-
- Set overriding ambient proportion factor
- a FACTOR
- As described below, each object in the scene contains
- parameters that control how bright the object appears if no
- light is shining on it. Thus you can set some objects to
- appear brigher when in shadow that other objects. As an
- alternative, you can specify the "a" command with a parameter
- from 0 to 1, and this will cause the ambient color of all
- objects in the scene to be a fraction of their diffuse
- brightness. When the "a" command is used, the BGR ambient
- values for each object are ignored (but they must still be
- specified). A reasonable starting point would be to set FACTOR
- from between .1 and .2.
-
- Set antialiasing parameters
- A COUNT THRESHHOLD
- By default, the ray tracer computes one ray into the scene for
- each pixel in the image (so a 320X200 image computes 64000
- rays). Quite often, some unpleasant side effects of the
- digital generation process become apparent in a scene generated
- with one ray per pixel, for example diagonal lines are rendered
- as a sequence of discrete stairsteps -- the dreaded jaggies.
- Such false features are called aliasing defects. There are
- numerous techniques devised to try to reduce the magnitude of
- these defects, collectively referred to as the process of anti-
- aliasing. (There are many other types of aliasing defects
- besides jaggies. An example of another "defect" is the razor-
- sharp shadows that are traditionally found in computer
- generated imagery -- real-world shadows are always at least a
- teensy bit diffuse.)
-
- The COUNT parameter determines how many rays will be traced for
- each pixel in the scene -- the more, the better, but the slower
- the computing. A good starting value is 4. What happens is
- that a bunch of rays (e.g. 4) are sent into the pixel cone at
- random -- they are "distributed" across the horizontal and
- vertical dimensions. Thus, this ray tracer is said to
- implement Distributed Ray Tracing.
-
- The THRESHHOLD value relates to a rather complicated feature in
- the ray tracer called Statistically Optimized Distributed Ray
- Tracing. The way this works is that the program computes the
- intensities of the bunch of rays that are distributed into the
- pixel. In this example, say there are four rays in the bunch.
- The program computes the statistical variance of the four
- resulting intensities. If the variance is small, the odds are
- that the portion of the scene being imaged is a smooth patch.
- Thus a good approximation to the ideal intensity of that pixel
- has been computed. But let's say that the pixel happens to
- fall on a diagonal edge. Some of the distributed rays will be
- cast to one side of the edge, and some of them to the other.
- Thus the variance will be high. The program looks at this, and
- if the variance is past the THRESHHOLD value, will distribute
- another group of (in this case) four rays into the pixel. Then
- the variance of the eight rays will be examined, and the
- process repeated until the required smoothness has been reached
- (or some arbitrarily large number of rays have been cast, and
- the process halts). Setting THRESHHOLD to values of 1.0 or
- higher generally will force no extra groups of rays to be cast,
- beyond the initial group of COUNT rays. Meaningfull values of
- THRESHHOLD generally fall in the .0001 to .1 range.
-
-
- Set lens focus and aperture for depth of field
- F APERTURE FOCUS
- This command is optional; if omitted, the scene will be
- rendered such that all objects will be in perfect focus (a pin-
- hole camera effect). With this command, you can add depth-of-
- field effects to a scene (though at great computation speed
- degradation, as described below). The APERTURE parameter
- specifies the radius of the hypothetical lens in the camera
- that is taking the picture of the scene. FOCUS sets the
- distance from the camera (or eye) at which objects will appear
- in perfect focus. The magnitude of both values depends upon
- the coordinate system in use by your scene, of course, but here
- is an example for determining a reasonable camera aperture.
- Say that one unit of distance represents an inch. Assume you
- set the focus distance to 100 inches; with this scale, a
- reasonable value for aperture is 0.5 to 2.0.
-
- In order to achieve a good quality smooth blurring of the
- foreground and background, you will need to set the
- antialiasing parameters up from their defaults (with the A
- command). A good start would be 20 to 30 rays per pixel; the
- THRESHHOLD value doesn't matter much; it could be set to 1.
-
-
- Set global diffuse lighting parameters
- M COUNT NUMERATOR DENOMINATOR
- This command relates to the realistic propagation of light as
- it reflects from object to object in the scene. Traditionally,
- computer lighting models operate such that if an object is
- directly visible from a light source, then the surface of the
- object is colored according to the material's properties, the
- color and strength of the light, etc. For those objects or
- portions of objects that are not in the path of a light source
- (aka are in shadow), they are rendered black. Well, this is
- usually artificial looking, and so a constant dim color is
- assigned to areas in shadow. (In fact, this program has
- provisions for this as well, the ambient parameters of each
- object, plus the "a" command.)
-
- But in reality, shadows are filled in with light bounced off
- walls, etc. The M command can be employed to model this
- diffuse propagation of light from object to object. (Sadly,
- once again performance suffers significantly if you choose to
- do this, since a great deal of information about the scene
- needs to be collected and analyzed to determine how the shadow
- fill-in should occur.) How this program does this is to, for
- each pixel, sample extra rays from the surface being rendered,
- out into the scene in random directions to see what other
- nearby surfaces are acting as reflectors, etc. The COUNT
- parameter controls how many samples to take per pixel; values
- from 10 on up are okay, but 100 or more are needed to render
- smooth color bleeding from surface to surface, etc. The
- NUMERATOR and DENOMINATOR derive from the recursive nature of
- the ray tracing process: in the process of calculating a ray on
- the surface being rendered, assume the ray strikes an adjacent
- surface. Well, from THAT surface, another COUNT set of rays
- will be sampled, to determine ITS color, etc.; thus the process
- exponentially generates rays that need to be computed. To
- avoid this recursive growth, the number of sample rays that are
- done per recursion level is scaled from the initial COUNT
- value, according to the supplied NUMERATOR and DENOMINATOR
- values. For example values of 1 and 2 respectively will
- reduce by half the number of samples taken at each recursion
- level. Normally, even this is not a fast enough decay, so 1/3
- or 1/4 is better, without much noticable loss in resulting
- color fidelity. In fact, setting NUMERATOR to 0 is not
- unreasonable.
-
-
- Define scan-line region of image to generate
- & FIRST LAST
- If this command is omitted, the entire image bitmap will be
- calculated (all 400 scan lines). This command tells the
- program only to produce those scans from FIRST to LAST-1
- inclusive. Once done, the resulting fragment images can be
- combined into one whole image file. In this way, a
- particularly complex scene may be distributed into a number of
- CPUs, resulting in shorter elapsed generation time. Picture
- merging is accomplished by DISPLAY ).
-
-
- Set background color
- b BLUE GREEN RED
- The simple color value that will be displayed if no objects are
- visible at a given point in the scene.
-
-
- Define a wave source
- w CENTERX CENTERY CENTERZ WAVELENGTH AMPLITUDE DAMP PROPAGATE
- A number of features in the program use wave sources as a basis
- for calculating various effects (most notably the production of
- rippled surfaces, such as water). You can define up to 100
- wave sources per scene. There is only one "wave source table"
- stored by the program; all of the features that use waves use
- the same waves. The first three values specify the coordinate
- from which the concentric wave fronts emanate from. WAVELENGTH
- sets the crest-to-crest distance for the wave. The AMPLITUDE
- value determines, in an abstract manner, the height of the wave
- at the origin. The height is not specified in normal distance
- units; rather it is a fixed scale frational value, in the
- approximate range of 0.1 (small, flat waves) to 0.5 (strong
- waves). The DAMP value controls the damping of successive
- trains of waves. The value 1.0 means no damping; the waves
- will contine out to infinity from the source. Value 0.7 means
- that successive crests will be 70% the height of the preceeding
- crest. The PROPAGATE value controls what phase the wave starts
- broadcasting at; the value ranges from 0.0 (starting at a crest
- at the origin) through 0.5 (180 degrees out of phase -- a
- trough) and back to 1.0 (a crest). This can be used in
- sequenced frames to produce moving waves.
-
-
- Define a color blend texture
- g BCOLOR GCOLOR RCOLOR START RANGE
- Normally, an object is solidly and uniformly colored across its
- entire surface. This command lets you define a blend function
- which can be applied to any object, in such a manner that the
- color of the object will vary as a function of altitude (Y
- coordinate). For example, a sphere could be blue at the south
- pole, and yellow at the north pole, with the color smoothly
- changing in the middle. You can define up to ten blends per
- scene. The three COLOR values specify the target color that
- the surface will blend to with increasing Y coordinate (the
- initial color of the object at low Y coordinate values is taken
- from the diffuse coeficients of the object, as defined a ways
- below in the section on object properties). The START value
- defines the low-Y coordinate where blending starts; surface
- points below this Y level will be colored with the objects
- diffuse coeficients. The blending continues from START,
- continuing for RANGE units upward. At the level of
- START+RANGE, the blend would have saturated out at the new
- COLOR value. Points above START+RANGE will maintain the new
- COLOR. As an example, consider a sphere of radius 100 units
- positioned at the origin. If START was set to -33, and RANGE
- was set to 66, the result would be that the lower third of the
- sphere would be its base diffuse color; the middle third would
- gradually change color up until at the +33 level the color
- would attain the new COLOR; the upper third of the sphere would
- maintain the new COLOR.
-
-
- Define a snowfall texture
- n START ALTITUDERANGE ALTFACTOR THRESHHOLD
- This texture function is similar to the above blend texture.
- It is still under development. This is intended to be used
- with the fratcal surface capabilities described below. The
- theory is that this will distribute snow onto an object, the
- nature of which varies according to the local surface slope and
- altitude. START is the lower bound below which there can be no
- snowfall accumulation, even on level surfaces. Points on the
- surface above the level of START+ALTITUDERANGE generally are
- solidly blanketed with snow. ALTFACTOR is a scaler that lets
- you determine how important altitude is in determining snow
- cover; value 0 means it is irrelevant (thus it is just a
- function of local surface slope). Values above 1.0 generally
- result in a faster buildup of snow at the low end of the
- ALTITUDERANGE scale. THRESHHOLD controls when a surface will
- be solidly blanketed, if it meets the threshhold test. Values
- for this parameter range from 0.0 (at which everything from
- START and above will be solidly coated, regardless of slope) to
- 1.0, where coverage will be a continuous function of slope and
- altitude. Values around .4 result in surfaces from about 40
- degrees of slope and flatter to be solidly covered.
-
- Define a 3D checkerboard texture
- k BCOLOR GCOLOR RCOLOR X Y Z JUNK1 JUNK2 JUNK3
- You can define up to 10 checker textures per scene. This
- texture function determines the color of points on the surface
- of an object, using a 1- (layer), 2- (checker, column), or 3-
- dimensional (block) model. As the points on the surface of an
- object are colored, this texture function can be used to
- determine whether the color of the point in question is the
- object's base diffuse color, or is a different specified color
- (controlled the three COLOR parameters to this command). To
- determine whether the surface point is inside or outside which
- color region, the X Y Z pattern size values are checked. The X
- parameter defines the width of successive layers from left to
- right; Y defines the width of successive layers from top to
- bottom; Z is for front to back. Note that one or more X Y or Z
- values can be set to 0. This will cancel any variation in the
- pattern in the corresponding dimention. For example, if X and
- Z are set to 10 but Y is 0, the effect will be of square
- vertical columns of alternating color. If only Y were non-
- zero, the effect would be of horizontal layers of alternating
- color. Setting all three to non-zero creates a solid 3D block
- pattern. The width of the layers in X Y and Z need not be the
- same (so you can make long flat blocks, for example). JUNK1,
- JUNK2, and JUNK3 are currently not used and should be set to 0.
-
-
- Set global haze parameters
- H BCOLOR GCOLOR RCOLOR DISTANCE
- If this command is omitted, the color of each pixel in the
- scene is not affected by how far the rendered surface is from
- the eyepoint. By using this haze command, you can cause
- objects in the distance to be progressively tinted to a
- specified target haze color (the three COLOR values). Objects
- that are DISTANCE units or farther from the eyepoint will be
- completely tinted or blended to the haze color and thus will
- become effectively invisible. Objects closer than this
- distance will be continuously tinted from their true local
- color to the haze color, in a linear manner as a function of
- distance.
-
-
- Define fractal surface parameters
- f RECURSIONLEVEL XSCALE YSCALE ZSCALE FINALTEXTURE
- This texture can only be applied to 'x' objects as defined
- below. The ray tracer so far only knows how to render a small
- set of primitive object shapes, one of which is the three-sided
- polygon (triangle). As described in the 'x' command below, the
- ray tracer does have the capability to algorithmically generate
- compound objects that are constructed out of large numbers of
- adjacent triangles forming what is called a stochastic surface
- (often thought of as a fractal surface, though in fact the
- relationship to the mathemacits of fractals is limited). This
- command defines parameters that the ray tracer uses in
- constructing the mesh of triangular surface patches.
-
- You can define up to 10 fractal textures per scene. In order
- to define a fractal surface, you must also define at least one
- wave source with the "w" command (the reason for this
- apparently unrelated need will be explained). The general
- fractal construction procedure is based on recursive triangle
- subdivision, applying complex coordinate shifts when
- determining the vertices of the subdivision triangles. You
- start with one master triangle that controls the gross size and
- orientation of the final surface. The original triangle is
- split into four triangles (by bisecting the three sides and
- connecting the midpoints). The corners of the new triangles
- are then shifted in space, and they are recursively subdivided
- in turn, to the desired level. The RECUSIONLEVEL sets this
- depth; the higher the depth, the finer the resulting surface,
- but the slower the image will take to compute (on the order of
- four times with each successive level). Plus larger level
- values require substantial quantities of address space to
- contain the generated triangle data (on the order of thousands
- of 512-byte memory pages for a level of 7, for example... so BE
- CAREFUL!).
-
- The X Y and ZSCALE values allow you to emphasize distortion
- differenly in the three dimensions (X and Z of 1.0, with Y of
- 3.0 results in three times as much vertical relief as
- horizontal, for example). Values of 0 for a scale parameter
- cause the sub-triangles to not move in the indicated dimension
- (X and Z of 0 will make the resulting surface maintain a
- triangular silhouette as seen from above).
-
- The FINALTEXTURE value will be assigned as the texture function
- number for each of the sub-triangles (see the description of
- texture function values for objects below). Basically, this
- allows you to apply a uniform texture to the entire fractal
- object: a smooth color gradiation, a checkerboard, etc.
-
- As mentioned above, to get a good rough fractal surface, you
- need to also define a small number of wave sources. A good
- starting point is to specify five or six wave sources, whose
- actual XYZ coordinates are scattered about the scene. Giving
- them different wavelenghts and amplitudes will increase the
- fluctuation in the surface. Generally, the damping should be
- small (values of or near 1.0). The actual manner in which the
- waves are utilized in constructing the sub triangle vertices is
- beyond convenient description; suffice it to say that there is
- NO randomness involved, and that different wave patters will
- produce markedly different fractal surfaces. Experiment.
-
-
- Define a marble texture
- m BVEINCOLOR GVEINCOLOR RVEINCOLOR XSCALE TURBULENCE SQUEEZE
- You can define up to ten marble textures per scene. This
- texture relies on your having defined at least one wave source,
- for reasons described below.
- The marble is modelled as a base substance that has intrusions
- of a second substance into the base. The base color is
- determined by the diffuse coefficients for the object. The
- intrusion color is specified in the three VEINCOLOR parameters.
- The actual color for the surface of the marble object is a
- complex blending function of the two starting colors.
-
- The basic formula for making the intrusions (veins) is to start
- with equally spaced vertical layers (spaced along the X axis).
- The spacing is determined by the XSCALE parameter (good values
- are from 0.1 to 1). Then turbulence is applied to the layers,
- deforming them into myriad whorls and streaks, etc. The amount
- of turbulence is set by the TURBULENCE parameter (values from
- 1.0 to 3.0 are nice). The rough thickness of the streaks is
- determined by the SQUEEZE parameter (which must be an integer -
- - no fractional component). The value 1 means leave them
- normal width; 2 means twice as thin; 3 means four times as
- thin; 4 means eight times, etc. Another way to think of
- SQUEEZE is that it affects how fast the blending occurs from
- the base to the vein color.
-
- The turbulence is controlled by (of all things) the wave
- sources that you have defined in the scene. Unfortunately, the
- correspondence between a particular wave source and a
- particular turbulent result is almost impossible to predict
- (but it IS possible; there is no randomness involved). All
- that can really be done is to give guidelines for general wave
- parameter values. First, four or five wave sources are needed.
- The wave centers should be well distributed around the scene.
- The wavelengths should vary amongst the source a good amount
- (some should be five or six times the wavelength of other
- sources). Not much damping should be applied (values from 1.0
- down to 0.95 perhaps).
-
-
- Define a wood texture
- d BCOLOR GCOLOR RCOLOR THICKSCALE RINGSCALE TURBULENCE SQUEEZE
- You can define up to ten wood textures per scene. This texture
- relies on your having defined at least one wave source, just
- like for the marble textures listed above. In fact, at this
- time wood is modelled very similarly to marble, except that
- where marble consists of parallel layers of base material, wood
- consists of concentric cylinders of base material (aligned
- along the Y axis). The RINGSCALE parameter is analogous to
- XSCALE for marble; TURBULENCE and SQUEEZE are the same.
- THICKSCALE basically controls how faint or strong the grain is
- rendered; values above 1.0 enhance the grain; values less than
- 1.0 subdue the grain.
-
-
- Define a pebbly texture
- p SCALE ZOOM
- This texture is similar to the snowfall texture. It is still under
- development. This is intended to allow pertubations of an object
- surface based on random "zooming" of each point on the surface
- (times the "scale"). Typical input values are: "p 1.0 0.5".
-
-
- Set the eye (camera) view parameters
- e XPOS YPOS ZPOS XVIEW YVIEW ZVIEW XUP YUP ZUP
- First triple sets the position of the eyepoint. Second triple
- defines the direction (relative to that point) that the eye
- will look along to define what is visible. The length of this
- vector determines the "wide-andle vs. telephoto" effect. To
- guage what different lengths mean, at the tip of the VIEW
- vector the screen is projected as if it were 256 units
- horizontally by 170 units vertically. Thus the magnitude of
- the numbers you choose for XYZ points interact with the view
- vector length to determine the cone of visibility. The third
- triple is the direction you want to be "up"; usually 0 1 0 is
- what you want.
-
-
- Define a directional light source
- l BLUE GREEN RED XDIR YDIR ZDIR
- The first triple is the color and intesity of the light (1 1 1
- would be bright white; 0.5 0 0.5 would be dim magenta). The
- second triple is the direction from which the light is comming.
- For example 1 0 0 would mean the light is comming in straight
- along the X axis (from positive to negative). You can have at
- most 100 light sources per scene (many light sources sloooows
- things down -- two is reasonable!).
-
-
- Define a spherical light source
- l BLUE GREEN RED XCENTER YCENTER ZCENTER DISTANCESCALE RADIUS
- The first triple is the color and base intensity of the light,
- just as for directional light sources. The second triple is
- the XYZ coordionate of the center of the spherical light
- source; it can be anywhere inside or outside of the visible
- scene. (Note that if the center is within the scene, it is not
- a visible object per-se. For example, if you wanted a
- lightbulb, you would place the spherical light source where you
- wanted it, and also place a transparent sphere at the same
- coordinates and with the same radius.) The DISTANCESCALE
- relates to the inverse-square law with which the brightness of
- the light diminishes within the scene. To explain how to set a
- value for DISTSCALE, consider the following example. Say you
- wanted a full-intensity white lightbulb (i.e. its nominal BGR
- values would be 1 1 1) to shine onto a table. If the table
- were, say, 37 units of distance from the light coordinate, then
- you'd want to set DISTSCALE to 37 in order that the table would
- be fully illuminated. Thus, objects closer to the light that
- 37 would appear very bright (indeed, probably "overexposed")
- while objects farther than 37 units from the light would become
- increasingly dimly lit. RADIUS is the radius of the light
- emitting sphere; 0.0 would be a point light source. (Note that
- point light sources are faster to compute.) Also note that
- non-zero radius light sources cast penumbral shadows, though to
- be effective you will need to increase the antialias parameters
- defined by the "A" command.
-
- Now for the actual objects that compose a scene. You can have about
- thousand object (max) per scene. All objects have the same basic
- properties available to them. Specifically, the first portion of
- the command line for any object starts with:
-
-
- @ TEX FUZZ MIRROR IDX TRA_B TRA_G TRA_R
- AMB_B AMB_G AMB_R DIF_B DIF_G DIF_R
-
- "@" is the object command character (s,q,x,t,r).
-
- TEX is an integer value that specified what texture function
- should be applied to this object. Value 0 means no texture
- (plain, boring evenly colored flat surface). Positive values
- select from among the supported texture functions, as follows:
-
- Value Texture function
- ----- ----------------
-
- 1: Y axis color gradiation
- Compute the color at each point on the surface as a
- function of the point's Y coordinate. Starting at
- Y=0, the color belnds from red to blue to green and
- back to red at Y=20. The colors repeat every 20 units
- in Y.
-
- 3: Mottled diffuse
- The brightness of the surface of the object varies to
- form a mottled pattern. This texture requires some
- wave sources to be defined.
-
- 4: Wavy surface
- The surface will be rendered as being criss-crossed
- by overlapping waves. If reflectivity is turned on
- for the object, the reflections will be rippled, etc.
-
- 5: Brick pattern
- The object will be rendered as if it were carved out
- of bricks. The brick size is currently hardwired to
- be height=3.0, width=8.0, depth=4.0, mortar
- thickness=0.5. The color of the bricks is determined
- by the diffuse coefficients for the object; the color
- of the mortar is hardwired at BLUE=0.8, GREEN=0.85,
- RED=0.99. The bricks are aligned with the coordinate
- system.
-
- 10..19: Single Wave
- This is like texture 4, except that the surface is
- rippled by only one wave (rather than all of them
- with texture 4). Texture 10 means use the first
- wave, texture 11 means use the second wave, etc. up
- to 19 for the tenth wave.
-
-
- 20..29: Marble
- Render the object as if it were carved out of marble.
- The marble texture chosen depends on the texture
- number: texture 20 uses the first marble defined,
- texture 21 uses the second marble defined, etc.
-
- 40..49: Wood
- Render the object as if it were carved out of wood.
- The wood texture chosen depends on the texture
- number: texture 20 uses the first wood defined,
- texture 21 uses the second wood defined, etc.
-
- 50..59: Checkered
- Color the surface of the object according the the
- chosen checkerboard texture. Texture 50 uses the
- first defined checker pattern, etc.
-
- 60..69: Fractal
- This isn't a texture per se (in so far as most other
- textures operate by changing the color of surface
- points of the object). This texture determines what
- fractal surface contours should be applied to this
- object. This texture type may only be specified for
- object type X (fractal objects). Texture 60 uses the
- first defined fractal type, etc.
-
- 70..79: Smooth blend
- Render the surface of the object as a blend between
- the objects normal diffuse color, and the specified
- blend texture color. Texture 70 uses the first
- defined blend texture, etc.
-
- 80..89: Snow
- Color the surface of the object by applying the
- chosen snowfall texture. Texture 80 uses the first
- defined snow texture, etc.
-
- 90..99: Pebble
- Perturb the surface via a previously defined pebble
- texture. Texture 90 uses the first defined pebble
- texture, etc.
-
-
- FUZZ is a pseudo-texture factor 0 to 1 that applies a random
- fuzz to the surface of the object. This can be used in a
- number of ways: to model soft surfaces like tennis balls; to
- form imperfectly reflecting mirrors, to form translucent
- (etched) glass, etc.
-
- MIRROR is a 0 to 1 value where 0 means no specular and mirror
- reflection, and 1 means 100% specular & mirror reflection.
-
- IDX is the index of refraction for the object. This is only
- relevant if the transparency for the object is non-zero.
-
- TRA_B, _G, _R is the transparency of the object in each color
- band. 0 means opaque, 1 means 100% transparent.
-
- AMB_B, _G, _R is the ambient light value for the object, 0 to
- 1. 0 means no pseudo-ambient light, 1 means VERY strong
- ambient light (generally not useful so strong -- washes the
- object out).
-
- DIF_B, _G, _R is the diffuse reflection values 0 to 1 for the
- object in the color bands. For example, glass has virtually
- zero diffuse reflection, while chaulk has very high (near 1)
- diffuse reflection. The diffuse coefficients determine the
- color of the object (in conjunction with the color of the light
- sources).
-
- From the above, notice that non-rational objects can be created.
- For example, a ball that is 100% transparent AND 100% reflective.
-
- Now onto each object. The parameters below FOLLOW (appear to the
- right of) all of the above property parameters.
-
-
- Sphere
- s CENTERX CENTERY CENTERZ RADIUS
- Self-explanetory.
-
-
- Parallelogram
- q POSX POSY POSZ VE_X VE_Y VE_Z VP_X VP_Y VP_Z
- The position triple defines a corner of the parallelogram. The
- second and third triple are two vectors that define the two
- sides of the object adjacent to and relative to the defining
- point. Here's the hard part: the order of the two vectors
- matters. To try to put it simply, the VE vector is the one on
- the left when viewed from "above," and the VP vector is the one
- on the right. In another way, the VP vector is clockwise from
- the VE vector. If the two vectors are reversed, the object
- will appear invisble. So you may have to experiment by
- reversing them. Note that the two vectors do not have to be
- orthogonal.
-
-
- Triangle
- t POSX POSY POSZ VE_X VE_Y VE_Z VP_X VP_Y VP_Z
- Same as for a parallelegram, except that the VE, VP vectors
- define the two sides of the triangle.
-
-
- Fractal
- x POSX POSY POSZ POS1X POS1Y POS1Z POS2X POS2Y POS2Z
- This is very much like a triangle, except that whereas the
- second and third set of XYZ values for triangles are relative
- to the base position of the triangle, for a fractal object all
- three XYZ triples are absolute object space positions.
-
-
- Ring (annullus)
- r CENTERX CENTERY CENTERZ VE_X VE_Y VE_Z VP_X VP_Y VP_Z MINRAD MAXRAD
- Rings are sort of like parallelograms. The first triple
- defines the center of the ring. The VE and VP triples radiate
- from that point and define the plane of the ring. It is
- undefined as to what happens if the two vectors are not
- orthogonal. MINRAD is the inside radius of the ring (which may
- be zero, forming a disk); MAXRAD is the outside radius of the
- ring.
-
- The { and } command lines may be placed around any arbitrary set of
- object command lines. This allows DBW_Render to do optimized ray
- tracing by calculating extent spheres around the indicated primitive
- objects and then checking ray intersections with the extent sphere
- rather than one-by-one with all the inner objects. Extents may be
- nested.
-