What you refer to is called first order caustics and its not a common
feature at all in 3D rendering due to the profound complexity of
calculating the reflected beams. I have thought about this puzzle before
and here are my 'limited' ideas on how this might be faked.
1. For the spots that hit the mirrored ball, make sure the angle is very
tight (usually these spots have a focus of about 5-8 degrees or so). Also,
use a conical object to fake some volumetrics. This should help get the
idea across to the viewer. Make sure the volumetric cones fade to total
transparency before they reach the ball, otherwise the failure for the
beams to continue after the reflection will be less noticeable.
2. Create and image map that consists of a black background and little
white circles (or squares). You might need to make this rather large, say
1200x1200 pixels. Keep it in 24 bit color. I would say you need about 200
'dots' arranged in a mostly circular pattern. Next, using Photoshop or my
favorite, Micrografx Picture Publisher, offset the individual color
channels so that you get a colored prismatic fringe at the edge of the
dots. You may also wish to blur the overall image before or after this
step. You might also try a progressive blur with the edge being more
blurred than the center of this image.
3. arrange about 10-12 spots INSIDE the mirrored ball, each using the above
image as a projection map. These should obviously point mostly down and be
arranged in a radial pattern. You will also need to have a null control
for each light so that gimbal lock will not occur. If the mirrored ball is
single sided and all polys face out then the ball will not make a shadow.
I would shadow map this instead of raytracing.
4. Animate the lights by rotating the individual lights' bank 360 over
about 2-3 seconds. Also rotate the mirrored ball at what ever speed - 360
over 6-8 seconds? Here's where a subtlety is needed to fake the viewer.
Given enough time to watch the spots during an entire revolution it would
be clear that this is merely a projected image as the angle of reflection
is being portrayed as a constant 90 degrees. I would envelope the lights
so that while lights 1,4,7 and 10 are fading out, 2,5,8,11 are fading in
and 3,6,9,12 are at mid-cycle. I wouldn't let any light show for more than
1/4 turn of the ball before it is replaced by another.
5. I would try to stay away from the temptation to create beams coming off
the ball unless you really are looking for an innordinate amount of work.
If you did do this, then you would have to morph them to fake the changing
angles of reflection. Remember, the angle of reflection equals the angle
I think this should get the job done. It can be made easier to set up if
you just make one light then clone it 11 times.
> Atm I'm trying to get a crystal ball working for a disco scene, u know,
> those things they have* above dance floors that they point a spot
> NEway, I have the surface on the 'mirrored' bits set to be reflective,
> but I cannot get the spot to reflect off of the 'mirrored bits', thus
> producing the classic 'dance floor stars effect' that slowly pans around
> the room looking kewl.
> The situation currently is that the 'mirrored bits' simply reflect what
> ever they can see, but do not actually reflect light to other bits of the
> room. Can someone please tell me where to start with this beastie...
> Thanks (I appreciate that this may be a bit tricky!)
> Leighton Jones
> aka 'Mr Thwibble'
> Breakfast.Com Halted - Cereal Port Not Found