You can really control your atmosphere or ambience with some good lighting. But like anything with 3d, to make it look halfway decent, you have to spend a lot of time on it.
To experiment with how lighting changes shadow, the first thing I'd recommend is, make a matrix and randomize it so it's very bumpy. Then SET AMBIENT LIGHT 0. This will turn off the generic lighting of the scene.
Then I'd create a point light out of light 0 (the primary scene light)
SET POINT LIGHT 0,x,y,z
Then I'd create a sphere. You will move this sphere around using the arrow keys and maybe shift and control to move it along the y axis (up and down). Retrieve the x,y, and z positions for the sphere using x#=OBJECT POSITION x(obj) etc.
Then position the point light at the sphere's position so you can track where you are moving the light and its affect on the matrix.
SET POINT LIGHT x#,y#,z#
Try changing the color of the light using COLOR LIGHT 0,r,g,b to see the difference on the matrix.
After you are comfortable, add additional point lights and change theie colors. Set one of the point lights colors to -255,-255,-255. This will absorb any light(thus reducing any colors intensity) that is within the sphere of influence of this dark-light. Move the darklight around and see how it affects the lighting of the matrix.
Now normals are more complex, but properly controlled can give very subtle or harsh light differences. It's the normals that control how the face or vertex of a polygon are affected by light and color. Here's a brief explanation to get you started. I highly recommend researching them and learning the math for vector cross products and vetor dot products. I'll set this explanation as code so that this message isn't any more ridiculously long:
A normal is basically the perpendicular to a line or a surface.
That is to say, it's a vector at 90 degrees away from a line or
surface. A mesh or a matrix is made up of surfaces called faces
(usually triangles). These faces are calculated based on the
positions of vertices. A vector is formed between any two of
these vertices along the edge of a face. If a face is made up of
three vectors (a triangle) it should have 2 normals : one that
points out, and one that points in. It is the normal that is
going to tell the 3d engine how to handle light and color for this
face.
In general, since the normal is 90 degrees from the center of the face,
any light that hits the face straight on is going to be at 100% color
intensity (based on a combination of light color, surface color, and
light intesity). As the angle of the light changes relative to the
normal, the color intensity changes (less bright). A face normal
can be calculated by taking any two vectors on the face that are not
parallel, and finding the cross product of these vectors.
When you make a matrix in DBC, the normals are straight up and down
the y axis. When you change the shape of the matrix, I don't believe
that the normals are recalcualting until you manually recalculate them.
This is why in my example, that even though the matrix is bumpy, you
don't see the depth of the lighting until you recaluculate the normals
(adjust them in the new directions of the faces based on the y heights).
Now, to increase the lighting and shadowing effects, we can calculate the
vertex normals.
Since a vertex is 1 dimensional, there really is no perpendicular to it,
so how can we calculate a vertex normal? Well, we have to calculate the
normals of the faces that touch that vertex and then take an average of
those to get the vertex normal. This basically means that the direction
of the normal will be influenced most by the steepest slope of a face that
touches a particular vertex. So from vertex to vertex on the matrix, you
may have normals leaning a little more towards x or a little more towards z
or pointing straight up or down on y. As the light hits these, the intensity
of the color is calculated based on these normals and thus, the shadows
contour more accurately to the landscape.
When using a 'dark-light', instead of increasing the intensity of a
particular color, you are doing the opposite. You are decreasing the
intensity. If you set the color of light 0 for example to
COLOR LIGHT 0,-255,-255,-255
you are telling it to absorb (de-intensify) all colors (since the color
range is from 0 to 255 in red green, or blue). You can use a dark-light
like a filter on the lens of a camera to absorb specific colors by adjusting
the numbers. If you want the dark light to filter out the blue element
then use COLOR LIGHT 0,0,0,-255.
I recommend using a point light for most lighting because it is spherical
and the light dissipates in all directions as the light moves further from
the source.
A directional light pretty much keeps the intensity uniform in a particular
direction. A spot light focuses a cone of light in a specific direction.
Handeling normals properly can give your 3d scenes (and objects) life and
subtlety. I highly recommend some study on the math involved in
calculating normals. There's actually a very slick normal calculating method
in one of the examples in DBC. It's called ultra smooth matrix or something
like that.
Enjoy your day.