The rather mathematical explanation used there doesn't help much in understanding how this feature is used. It is quite simple though. The frequency value just tells the program how many times the color map will be repeated in the density range from 0 to 1. If a frequency of one (the default) is specified the color map will be visible once in the density field, e. g. the color at 0 will be used for density 0, color at 0.5 will be used for density 0.5 and the color at 1 will be used for density 1. Simple, isn't it?
If we choose a frequency of two, the color at 0 will be used for density 0, the color at 0.5 will be used for density 0.25 and the color at 1 will be used for density 0.5. What about the densities above 0.5? Since there are no entries in the color map for values above 1 we just start at 0 again. Thus the color at 0.1 will be used for density 0.55 ((2*0.55) mod 1 = 1.1 mod 1 = 0.1), the color at 0.5 will be used for density 0.75 and the color at 1 will be used for density 1.
If we are good at mathematics we'll note that the above example is not quite right because (1 * 2) mod 1 = 0 and not 1. We just think that we used a value slightly smaller than one and everything will be fine.
We may have noticed that in order to avoid sudden changes in the halo color for frequencies larger than one we'll have to used a periodic color map, i.e. a color map whose entries at 0 and 1 are the same.
We'll change our example by using a periodic color map and changing the frequency value to two.
Looking at the result of (halo05.pov) we can be quite satisfied with the explosion we just have created, can't we?
There's one thing left we should be aware of when increasing the frequency value. It is often necessary to increase the sample rate in (nearly) the same way as we change the frequency. If we don't do this we'll probably get some severe aliasing artifacts (like color jumps or strange bands of colors). If this happens just change the samples value according to the frequency value (twice sampling rate for a doubled frequency).
Nothing easier than that!
This should do the trick. Looking at the result of halo06.pov we may be disappointed. Where is the red center of the explosion? The borders are green as expected but there is a lot of yellow in the center and only a little bit red. What is happening?
We use an emitting halo in our example. According to the corresponding section in the halo reference chapter (see "Emitting") this type of halo uses very small particles that do not attenuate light passing through the halo. Especially particles near the viewer do not attenuate the light coming from particles far away from the viewer.
During the calculation of the halo's color near the center of the container sphere, the ray steps through nearly all possible densities of the particle distribution. Thus we get red and green colors as we march on, depending on the current position in the halo. The sum of these colors is used which will gives as a yellow color (the sum of red and green is yellow). This is what is happening here.
How can we still get what we want? The answer is to use a glowing halo instead of the emitting halo. The glowing halo is very similar to the emitting one except that it attenuates the light passing through. Thus the light of particles lying behind other particles will be attenuated by the particles in front.
For the results of the glowing halo see "The Glowing Halo".
The glowing halo is very similar to the emitting halo except that it also absorbs light. We can view it as a combination of the emitting and the attenuating halo described in section "The Attenuating Halo".
By just replacing the emitting keyword in the example in section "Changing the Halo Color" with the glowing keyword we get the desired effect as shown in the example image (halo11.pov).
Even though the red color of the high density areas is not very visible because the green colored, lower density areas lying in front absorb most of the red light, we don't get yellow color where we would have expected a red one.
Due to its similarity with the emitting halo we have to make some experiments with this halo type. We just have to keep all those things we learned in the previous sections in mind to get some satisfying results.
A great difference between the attenuating halo and the other halo types is that the color of the attenuating halo is calculated from the halo's color map using the total particle density along a given ray. The other types calculated a (weighted) average of the colors calculated from the density at each sample.
Even though clouds normally are not red but white or gray, we use the red color to make it more visible against the black/white checkerboard background.
The color of an attenuating halo is calculated from the total accumulated density after a ray has marched through the complete particle field. This has to be kept in mind when creating the color map. We want the areas of the cloud with a low density to have a high translucency so we use a color of rgbt<1,0,0,1> and we want the high density areas to be opaque so we choose a color of rgbt<1,0,0,0>.
Another idea is to scale the container object to get an ellipsoid shape that can be used to model a cloud pretty good. This is done by the scale <1.5, 0.75, 1> command at the end of the sphere. It scales both, the sphere and the halo inside.
Looking at the results of halo22.pov we see that this looks more like a real cloud (besides the color).
We want to model this appearance by adding two additional halos to our current container object (see section "Multiple Halos" for more details). This is done in the following way:
The three halos used differ only in their location, i. e. in the translation vector we have used. The first two halos are used to form the base of the cloud while the last sits on top of the others. The sphere has a different radius than the previous ones because more space is needed for all three halos.
The result of halo23.pov somewhat looks like a cloud, even though it may need some work.
As we see the whole object is lit by the light source. Now we can start to add some dust.
The result of halo32.pov is too bright. The dust is too thick and we can only see some parts of the object and no background.
We use a transmittance value of 0.7 to get a much thinner dust.
Beside the ugly aliasing artifacts the image looks much better. We can see the whole object and even the background is slightly visible (halo33.pov).
The jittering is used to add some randomness to the sampling points making the image look more noisy. This helps because regular aliasing artifacts are more annoying than noise. A low jitter value is a good choice.
The super-sampling tries to detect fine features by taking additional samples in areas of high intensity changes. The threshold at which super-sampling is used and the maximum recursion level can be specified using the aa_threshold and aa_level keywords.
The approach that always works is to increase the overall sampling rate. Since this is also the slowest method we should always try to use the other methods first. If they don't suffice we have to increase the sampling rate.
We use the following halo to reduce the aliasing artifacts (halo34.pov).
The image looks much better now. There are hardly any aliasing artifacts left.
The same parameters we have used are discussed in the section about the atmosphere feature (see "The Atmosphere" for further explanations).
Another interesting way of getting an irregular distribution is to add some turbulence to the dust. This is done with the turbulence keyword followed by the amount of turbulence to use, like the following example shows (halo35.pov).
The image we now get looks much more interesting due to the shifts in the particle density.
We should note that we use a linear density function instead of the previous constant one. This is necessary because with a constant density function the density has the same value everywhere. Adding turbulence would have no effect because wherever the points are moved the density will have this same value. Only a non-constant density distribution makes sense when turbulence is added.
The fact that the turbulence value is actually a vector can be used to create effects like waterfalls by using a large turbulence value in one direction only (e.g. turbulence <0.2, 1, 0.2> ).
Section 4.8.5.3
The Glowing Halo
Using a glowing halo gives the expected result.
Section 4.8.5.4
The Attenuating Halo
Section 4.8.5.4.1
Making a Cloud
The basic attenuating halo used to create a cloud.
Section 4.8.5.4.2
Scaling the Halo Container
Scaling the halo container and adding some turbulence gives a better result.
Section 4.8.5.4.3
Adding Additional Halos
Using multiple halos pretty much improves our cloud.
Section 4.8.5.5
The Dust Halo
Section 4.8.5.5.1
Starting With an Object Lit by a Spotlight
The object we want to use.
Section 4.8.5.5.2
Adding Some Dust
This dust is too thick.
Section 4.8.5.5.3
Decreasing the Dust Density
A thinner dust looks much better.
Section 4.8.5.5.4
Making the Shadows Look Good
Different anti-aliasing methods help to get a satisfying result.
Section 4.8.5.5.5
Adding Turbulence
Adding turbulence to the dust makes it much more interesting.
Table Of Contents