|
[welcome]
[download]
[documentation]
[gallery]
[how
to contribute]
[writing
shaders]
[contributors]
|
Shades
Documentation
You
should find the Shades plugins very easy to use if you have any
familiarity with Lightwave texture mapping. Most of the Shades interfaces
look similar to the one shown below. The top two areas of the interface
contains parameters very similar to the standard Texture Mapping
panel (chapter 5 of the Lightwave 5.5 Reference Manual). The main
difference is that all of the float and 3-vector requesters in the
Shades interface have optional envelope values that can be assigned
to the parameter. You will want to consult the Lightwave 3D Reference
Manual, chapter 14 for documentation on how to use the Lightwave
envelope editor.

A
new section of parameters have been added to many of the shaders
in this new release. This set of parameters will be referred to
as the "Common Shading Attributes" section. A screen
capture of this section appears below.

This
section of the plugin should need very little explanation as well.
It allows you to modify the surface attributes of a part of the
texture independently of the underlying surface's attribute. The
attributes can be animated over time using envelopes, and the value
used for these attributes can be filtered with a gradient before
modification of the surface attribute actually takes place. There
is a toggle button in front of every attribute which allows the
user to select which attributes will be chosen to modify the surface.
The
Color attribute will allow the specified part of the texture
to determine the color of the point currently being rendered. If
the texture's value at a particular point is 0, the underlying surface
color will be used. If the value is 1, the Color value will be used.
Values in between will blend the two colors appropriately.
Color
is the only attribute that does not have envelope capability (I
didn't see an easy way to combine both envelope and gradient access
to vectors). However, the color can be animated over time by using
the Color's Gradient. Click on the G button next to the Color requester.
Now pull down the menu labelled "Input Parameter"
and choose "Time" rather than "Shader Value".
This only allows the Color attribute to be one color per frame,
but that color is animated through the gradient based on the time
of the current frame.
The
other surface attributes (Luminous, Diffuse, Specular,
Reflectivity, Transparency, and IOR) can be
modified based on time and gradient filtering of the shader function's
results. Make sure the toggle button in front of the attribute is
checked for the modifications to be enabled for that attribute.
Also note that these values are NOT percentages like they are in
Lightwave's main surface atrribute panel. Instead of values in the
range of 0 - 100%, you should be using values in the range of 0
- 1. But don't be afraid to try values outside of that range as
well.
If
both the Envelope (E) button and the Gradient (G)
button are NOT active, the value in the requester will be multiplied
by the basis function's return value. The result of that multiplication
will be used as the new value for that attribute.
If
the Envelope (E) button is active, the value in the requester
will be ignored, and the value used for the multiplication described
above will be evaluated from the Envelope, based on the current
frame/time.
If
the Gradient (G) button is active, the basis function's return
value will be used to look up the filtered value from the Gradient.
That filtered value will then be multiplied by the requester value
or the Envelope value, depending on whether the Envelope is active
or not. The result of that multiplication is used for the new surface
attribute.
The
Gradient and Envelope capability of the Bump Amp. parameter
works in the same way as the other surface attributes. The final
value returned from the evaluation of the envelope and gradient
will be used to increase or decrease the amplitude of the bump vector.
- Shades
individual shader parameters
-
AF_Cyclone3D

AF_PuffyClouds3D

AF_Strata3D

EE_Gloss
EE_Oren_Nayer
GM_Apple_Skin

GM_Blue_Marble

GM_Eroded

GM_EyeBall2D

GM_Fractal_Marble

GM_Green_Marble

GM_Marble_2

GM_MetalReflect
GM_Perlin_Marble

GM_Saturn
GM_SaturnRings
GM_Screen2D

GM_SideReflectivity
GM_SoftReflections
GM_Specular_Color
GM_Stars_And_Moons
GM_Stucco3D

GM_SuperDents
GM_Velvet
GM_Venus
GM_Wood1_2D
GM_Wood2_2D

ML_Brick2D

ML_Coriolis3D

ML_Dented3D

ML_Fire2D

Time
Factor - The time factor is used to control the speed of the
animated flame. 1.0 was chosen to be a good speed for 30 frame
per second animation. Larger values will speed up the frame, smaller
values will slow it down.
Top, Midtop, Midlow, and Low Colors - The colors that make
up the flame, from top to bottom
ML_LandColor5D

- The
LandColor5D shader was inspired by Dan Ritchie's LandColor lscripts.
When Dan released those, it was just after Shades had been released,
and I realized how nice they would be in Shades. I wrote Dan
and asked about his scripts, and he gave me permission to try
and translate them to Shades. Well, once I got started, I saw
all kinds of neat new additions and just kept adding new things,
such as the Musgrave fractalization capability.
So
here are some of the unusual ways the Texture parameters are
being used, and a little documentation about the LandColor5D
parameters.
The
Texture Mapping parameter is going to be used a little
differently. My shader needs to know what direction is up,
and that direction is determined differently based on the
Texture Mapping parameter. For Planar mapping,
nothing is unusual. For Cylindrical mapping, the up
direction for any point is found by drawing a perpendicular
line from the Texture Axis to the point. For Spherical
mapping, the up vector is determined by drawing a vector between
the center of the object, and the point in question.
Why
did I do things this way? This allows me to have a "bumpy"
sphere or cylinder be colored like a landscape as well. For
example, if I had a mesh of the world with mountains, valleys,
etc., I could wrap that into a sphere, and now have a "relief
mapped sphere" of the world. By using Spherical Texture
Mapping, the height of the terrain is calculated from
the center of the sphere (as well as the slopes being calculated
from the up direction). So the Landcolor shader will color
this bumpy sphere correctly.
Realize
that because of the unusual way these Texture Mapping
and Texture Axis parameters work, you may not see what
you think you should see in the Surface panel's preview renderings.
For instance, if you have Spherical turned on, the
Sphere preview will always be a solid color. Why? Because
all points on the sphere are equidistant from the center,
and they all have the same slope.
Most
people will use this shader on DEM type landscapes, so the
Planar mapping will work the way they expect. Only
the more adventurous types will see the need for Spherical
or Cylindrical mapping.
Another
unusual part of the Texture parameter area is that the Anti-Aliasing
button has been replaced by a Fractalize button. Click
on it and you will find the Fractal Playground based on many
of Musgrave's routines. These parameters will allow you to
fractalize the coloring and and pseudo-bumpmapping used in
this shader. I won't explain much more here, it is a playground
so just play :-). You can turn off the Fractalization
by choosing "No fractalization" from the
top menu in the Fractalization popup panel.
That's
it for the unusual Texture parameters. The rest are fairly
self- explanatory parameters for the shading of the land.
I tried to put the parameters in a logical order from top
to bottom, so here is the quick explanation.
I
put the Color parameter either above or below it's
floating point parameter(s) for a reason. For example, the
Snow Color parameter is below the Snow Slope
parameter because no snow will be rendered on slopes greater
than the Snow Slope value. The Snow Color is
above the Snow Level parameter because snow will only
appear above that height.
The
same is true for the Rock, Bare, and Grass
Colors. Those colors will only appear on slopes greater
than (they are above) the corresponding Slope parameters.
So if you look at the default parameters, Rock Color
will only appear on triangles whose slopes are greater than
60 degrees, Bare Color on slopes greater than 30, and
Grass Color on slopes greater than 5 degrees.
The
Sand Color will never appear above the Sand Line.
The Fractal factor is tied to the , and is used to
determine how "fractal" your sandline looks.
Neither
of the Water Colors (Mud or Deep) will
appear above the Water Line. The Total Depth
option can be used because not all water is flat. By keeping
this number close to the actual height of the water in your
mesh, you will spread out the Mud and Deep Colors
evenly throughout the water's depth.
ML_Parquet2D

Plank
Width - The width of each plank.
Planks per Tile - The number of planks used in each tile.
Plank Variety - How much the wood color varies from plank
to plank.
Groove Width - The width of the grooves between the planks.
Ring Scale - The tree ring spacing.
Waviness - The relative waviness of the ring pattern.
Grain Scale - Scaling for the fine grain.
Graininess - The relative graininess of the texture (0 =
no fine grain).
ML_Planks2D

Plank
Width - The width of each plank.
Plank Length - The length of each plank.
Plank Variety - How much the wood color varies from plank
to plank.
Groove Width - The width of the grooves between the planks.
Ring Scale - The tree ring spacing.
Waviness - The relative waviness of the ring pattern.
Grain Scale - Scaling for the fine grain.
Graininess - The relative graininess of the texture (0 =
no fine grain).
ML_Strata5D

Intended
to be used with LandColor5D, to restrict the strata lines to a specified
range of slopes. This shader does not hardwire the colors, but instead
uses various shades of the surface color, and 3 user defined colors
that you don't want to be a shade of the surface color.
RW_Hextile2D

If
a requester's E button is highlighted, the numeric field will display
the envelope's value at key 0 . It will be ghosted, and the user
will not be able to enter values in the numeric requester unless
the envelope is removed.
Before
you activate a requester's E button, enter a value you want to remember
into the numeric requester. If the newly created envelope is ever
removed, this value will re-appear in the numeric requester.
Bugs
(Alpha version) Envelopes are not loaded correctly when these
shaders are saved in an object. Make sure you do NOT have any envelopes
activated when you save an object that uses one of these shaders.
The saved envelopes may cause Lightwave to crash, and leave you unable to
load the object again. This appears to be a bug in the Alpha version of the
envaccess.p global plugin. See the shades_warning.txt file, included with
the Alpha plugin archive for more details.
(All
versions) When an envelope button is selected for the first time,
the existing value from the numeric requester is used for the envelope's
first key frame value. When the envelope editor appears, the graph
shows the proper key fram value, however the Current Value field
shows 0. Click once in the graph area, and the Current Value field
will be updated correctly. This appears to be a bug in the envaccess.p
global plugin.
(SGI
version) When Center, Size, and Velocity requesters are ghosted,
not all fields are dimmed. The functionality of the requesters work
correctly (the user cannot click in the field, or make any entries),
and the requester labels are dimmed as they are supposed to be.
Only the values in the requesters are not dimmed correctly. This
seems to be a bug with the SGI version of LWpanels.
s
i t e d e s i g n - v i s u a l e y e s
|