- tonemapped using very simple exponential tonemapping
(I'll implement something better in time)
- applied to an LDR image.
- processed using sigmoid, bilateral filter, back sigmoid and
3 times "magic" function.
- detail in 3D - problem of "coarseness" of the technique used
in new implementation. Althought here it seems quite horrible, its not actually
visible in result at all and this implementation is faster by two orders
than the original one.
Background of the rendering
- filled using the very simple technique
from the paper.
- rendered using 3Delight and 3 custom shaders, really
simple implementation. The result needs a little bit of changes of parameters, but
- implementation of fur covering a model reconstructed from depth map.
- fur on a ball, with correct light model.
Fur ball with shadows
- fur on a ball, with correct light model, shadows and self-shadowing.
Fur cover on statue
- without color model, second image with random normal change by approx 33%.
Fur on statue without lighting model
- every hair represented as bezier curve, no lighting model, 207299 hairs.
Fur on statue with linear lighting model
- the same as above, just the color of every hair is black at
the beginning and red at the end. Notice hair direction problems in highlights part.
Fur on statue with (hopefully) correct lighting model
- just without any shadowing
(!! incorrect randomness of the hair, only random in X and Y axis, straight in Z !!).
Encapsulated renderman shadows by shadowmaps
- 3 days of work... :( .
Different hair lengths
- left => approx 200k hairs, length 0.1; right => approx 400k hairs, length 0.03 .
Resolution of shadowmap
- left => 512 x 512; right => 2048 x 2048 (the "simulation" of deep shadows) . The actual effect on result is
really minimal, deep shadows would make a difference for partially-transparent hair,
which is not used in here.
Sampling of HDR image for image-based lighting
using Ostromoukhov's implementation of his sampler.
Errors in Ostromoukhov's sampling technique
caused by the "tiling" algorithm, which does not
parse values in all possible directions, just in direction of another "tile" of the Penrose tiling.
Although giving nice results for real-world images, for artificial or somehow extreme images
the whole method fails. Also the "randomness" added using table-based relaxation sometimes
does not exactly hit the proper surface, giving samples in "unimportant" areas.
- a sphere lit by set of lights geterated from hdr
images (left - star image as above, right - iv).
- the demostration of actual fur rendering and its lighting model - each hair is a
"flat ribbon" curve, the lighting model is a integration of phong-shaded cylinder along
the "width". Shadows of each hair are also visible on the left image.
The problematic part
of the new model.
New lighting model
- on the left side is a rendering of a ball made of
hairs going from top of the sphere to the bottom, lit by a single distant light
source with the same direction as camera, showing the properties of the new
model - the very strong secondary highlight based on "glinches" and uncolored
primary highlights. The whole model is more complex and its not possible to
demonstrate all its properties this way.
On the right side is a rendering of the statue with the new model and same parameters
as for the ball on the left.
- tests to make the furball as furry as possible. Left - Kajiya & Kay model, right Marschner.
There is still an error in Marschner's lighting model in TRT component. But where...
there is NO error in the Marschner's model. Added the last thing for non-circular
cross sections and noise-based smooth random rotation along each hair led to the third image. The "sparkles"
in the image are caused by one particular part in the model, and are actually correct.
First attempt to destroy bunny... :)