|
![](/i/fill.gif) |
Non-linear transformations are not possible in raytracing.
Ok, that's not quite right. There are two ways to do non-linear
transformations:
1) Instead of calculating just one straight line from the camera and
for an intersection point to the light sources, split the ray into many
little pieces and calculate them separately. You can then vary each sub-line
a little from the previous.
2) Transform the object non-linearly.
The first method would be prohibitively slow. If you, for example,
subdivide the ray in 100 segments, that's the same as having 99 transparent
planes in front of the camera and max_trace_level set to 100. And this not
only for the camera rays, but also for shadow rays! (And virtually every
ray traced; reflection, refraction, radiosity...) Just imagine that your
shadow calculations would be 100 times slower than now (currently only
1 ray is needed for shadows, even if there are semitransparent objects in
the way).
The second method is not possible for mathematical objects. It is possible
for meshes since you always can change the coordinates of the vertices, but
for mathematical objects it simply is not possible (or too difficult to be
achieved).
If you want mesh-based objects, you can always model them with a modeller.
Then you can apply any transformation you want to them.
--
main(i,_){for(_?--i,main(i+2,"FhhQHFIJD|FQTITFN]zRFHhhTBFHhhTBFysdB"[i]
):5;i&&_>1;printf("%s",_-70?_&1?"[]":" ":(_=0,"\n")),_/=2);} /*- Warp -*/
Post a reply to this message
|
![](/i/fill.gif) |