home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Inside Multimedia 1995 December
/
IMM1295.ISO
/
share
/
grafik
/
povhelp
/
qsandas.hlp
< prev
next >
Wrap
Text File
|
1994-07-07
|
11KB
|
186 lines
RENDERING
*********
Question:
I get a floating point error on certain pictures. What's wrong?
Answer:
The ray tracer performs many thousands of floating point operations when
tracing a scene. If checks were added to each one for overflow or under-
flow, the program would be much slower. If you get this problem, first look
through your scene file to make sure you're not doing something like:
a) Scaling something by 0 in any dimension. Example: scale <34, 2,
0> will generate a warning.
b) Making the look_at point the same as the location in the camera.
c) Looking straight down at the look_at point.
d) Defining triangles with two points the same or nearly the same.
e) Using a roughness value of zero (0).
If it doesn't seem to be one of these problems, please let us know. If
you do have such troubles, you can try to isolate the problem in the input
scene file by commenting out objects or groups of objects until you narrow
it down to a particular section that fails. Then try commenting out the
individual characteristics of the offending object.
Question:
Are planes 2D objects or are they 3D but infinitely thin?
Answer:
Neither. Planes are 3D objects that divide the world into two half-
spaces. The space in the direction of the surface normal is considered out-
side and the other space is inside. In other words, planes are 3D objects
that are infinitely thick. For the plane, plane { y, 0 }, every point with
a positive Y value is outside and every point with a negative Y value is
inside.
Question:
I'd like to go through the program and hand-optimize the assembly code in
places to make it faster. What should I optimize?
Answer:
Don't bother. With hand optimization, you'd spend a lot of time to get
perhaps a 5-10% speed improvement at the cost of total loss of portability.
If you use a better ray-surface intersection algorithm, you should be able
to get an order of magnitude or more impro-vement. Check out some books and
papers on ray tracing for useful techniques. Specifically, check out 'Spa-
tial Subdivision' and 'Ray Coherence' techniques.
Question:
Objects on the edges of the screen seem to be distorted. Why?
Answer:
If the direction vector of the camera is not very long, you may get dis-
tortion at the edges of the screen. Try moving the location back and rai-
sing the value of the direction vector.
Question:
How do you position planar image maps without a lot of trial and error?
Answer:
By default, images will be mapped onto the range 0,0 to 1,1 in the appro-
priate plane. You should be able to translate, rotate, and scale the image
from there.
Question:
How do you calculate the surface normals for smooth triangles?
Answer:
There are two ways of getting another program to calculate them for you.
There are now several utilities to help with this:
1) Depending on the type of input to the program, you may be able to
calculate the surface normals directly. For example, if you have
a program that converts B-Spline or Bezier Spline surfaces into
POV-Ray format files, you can calculate the surface normals from
the surface equations.
2) If your original data was a polygon or triangle mesh, then it's
not quite so simple. You have to first calculate the surface
normals of all the triangles. This is easy to do; you just use
the vector cross-product of two sides (make sure you get the vec-
tors in the right order). Then, for every vertex, you average
the surface normals of the triangles that meet at that vertex.
These are the normals you use for smooth triangles. Look for the
utilities such as RAW2POV. RAW2POV has an excellent bounding
scheme and the ability to specify a smoothing threshold.
Question:
When I render parts of a picture on different systems, the textures don't
match when I put them together. Why?
Answer:
The appearance of a texture depends on the particular random number ge-
nerator used on your system. POV-Ray seeds the random number generator with
a fixed value when it starts, so the textures will be consistent from one
run to another or from one frame to another so long as you use the same ex-
ecutables. Once you change executables, you will likely change the random
number generator and, hence, the appearance of the texture. There is an
example of a standard ANSI random number generator provided in IBM.C, in-
clude it in your machine-specific code if you are having consistency pro-
blems.
Question:
I created an object that passes through its bounding volume. At times, I
can see the parts of the object that are outside the bounding volume. Why
does this happen?
Answer:
Bounding volumes are not designed to change the shape of the object. They
are strictly a realtime improvement feature. The ray tracer trusts you when
you say that the object is enclosed by a bounding volume. The way it uses
bounding volumes is very simple: If the ray hits the bounding volume (or the
ray's origin is inside the bounding volume), when the object is tested
against that ray. Otherwise, we ignore the object. If the object extends
beyond the bounding volume, anything goes. The results are undefined. It's
quite possible that you could see the object outside the bounding volume and
it's also possible that it could be invisible. It all depends on the geome-
try of the scene. If you want this effect use a clipped_by volume instead
of bounded_by or use clipped_by { bounded_by } if you wish to clip and bound
with the same object.
SYSTEM
******
Question:
Does the 'virtual memory manager' in POV run only if no existing hard
disk cache (like SMARTDRIVE) is detected?
Answer:
No, the virtual memory manager is NOT a disk cache. It provides paged
memory services to POV-Ray in much the same way that a Mainframe or Mini-
Computer may use their hard disk drives as 'memory'. This 'memory' appears
to the program to be actual RAM available for it's use. It is NOT a 'swap
file' in the conventional sense. (For this reason it's best that the file
used should be located on a drive that DOES NOT USE DISK COMPRESSION PRO-
GRAMS such as STACKER or SUPERSTOR!) ICB allows this (plus physical RAM) to
go to a total of 3.75 Gigabytes.... if you have a big enough hard drive.
Disk caching will have little effect on the performance of POV-Ray. POV-Ray
will 'tolerate' it's being present, if new enough versions of the programs
are used. A MUCH better way to boost performance is to use the image buf-
fering built into POV-Ray with the +bxxx commandline switch. Since POV-Ray
must switch out of protected mode to use the BIOS disk service routines, it
takes a performance hit for every line as it is written to disk. Also,
since POV-Ray cares little about memory usage a buffer of 500K is not unrea-
sonable in a machine with at least 4 Megs of RAM. I've done a couple timing
tests and found that trace time can be reduced by as much as 30% with a 500K
or larger buffer.
Question:
What is the minimum amount of conventional DOS memory needed to run POV? Does freeing up conventional memory above this minimum improve performance?
Answer:
No minimums are given in the ICB docs, I imagine all that is required is
enough for the loader program to execute since it is (basically) a real mode
program. Be aware however that machines with large amounts of memory taken
up by drivers, TSR's etc. are MORE LIKELY to have some kind of problem with
conflicts between POV-Ray and those drivers. (Simply because they are
loaded and the vast differences in the way the CPU it's self is used between
real mode and the 32bit protected mode.) Performance is not effected by how
much real mode memory is available, POV-Ray runs almost completely in the
area BEYOND the real mode 1meg boundary.
Question:
I assume that if POV-Ray is a protected mode application, you should give
it as much extended memory as possible. How much can it use?
Answer:
Yes, defiantly. The more the better since, as far as POV-Ray is concer-
ned, this IS the memory. That is where the program actually runs. As pre-
viously described, POV-Ray (ICB's limits) can use 64 megabytes of physical
RAM (the IC's installed in the machine) and additional hard disk space to
total 3.75 Gigabytes of paged virtual memory. 'Shortcuts' taken by some
hardware manufacturers may limit what is 'really' available to the program,
even if more is actually installed in the machine. Generally you are pretty
safe in assuming that 16 megabytes of RAM and 32 megabytes of disk space
will be usable/available in ANY IBM compatible 386/486 PC with an ISA bus.
48 megabytes of VM should be plenty for any rendering that will be completed
in under a century.... Also, I have gotten some messages (2 to be exact)
from people that have been unable to get the program to run in a machine
with only 2 megs of RAM installed. Since the first meg is 'reserved' for
real mode use this leaves 1 meg for POV to knock around in. POV is actually
a pretty big program it's self these days, and getting bigger. 4 megs gives
it some 'breathing space'.
Question:
What options will allow the program to run as fast as it can?
Answer:
Generally the command line options that have the most effect are the
image buffering (+bxxx) and the keyboard abort (+x). The image buffering
can dramatically reduce rendering times. A setting of +b512 on a machine
with 4+ megs of RAM is a good compromise between the buffer & how much RAM
is "sacrificed" to the buffer. For instance a 512K buffer will limit an
800x600 image to just 3 disk writes during the image generation instead of
600. Depending on the environment, the keyboard abort option (+x) can slow
things quite a bit too. It is most noticeable in multitasking environments
since the keyboard is constantly polled to check for the occurrence of any
keypress. Disabling the display option can give a slight improvement in
rendering speed but it is generally not a very significant improvement.