|
|
I tried a bit different approach to the cornell box problem: I didn't use
any light source, just a bright box and let the radiosity do the rest.
I got the illumination quite acceptable, but there are serious problems I
can't get rid of. You will immediately see them when you look at the
resulting image:
http://www.cs.tut.fi/~warp/cornell/cornell.jpg
It uses quite extreme settings and the render time was about 48 minutes.
I'm quite happy with the overall illumination (altough the contrast is
too high compared to the original) and color bleeding, but there are
horrible blotchy spots in the corners.
I just can't get rid of them.
If I specify lower quality radiosity settings I can get a very smooth
result, without those spots. However, then I don't get the darkening in the
corners either, which makes the resulting image quite different from the
original.
If I specify higher quality settings, it doesn't get rid of the spots,
it just makes them more grainy.
What a dilemma.
Can anyone help me? What is the settings that can be modified to control
those artifacts?
Another problem: Althoug the walls get darker in the corners, the ceiling
does not, for some reason. In the original image the walls and the ceiling
darken quite equally. What could be the problem?
Here is the source code:
// Persistence of Vision Ray Tracer Scene Description File
// The true Cornell box...
// PoV transcription by Stephane Marty (05/31/2000)
// "Warp" version...
#version unofficial MegaPov 0.5;
global_settings
{
ambient_light 0.01
ini_option "+QR"
radiosity
{ pretrace_start 0.08
pretrace_end 0.01
count 1000
nearest_count 10
error_bound .5
recursion_limit 4
low_error_factor .5
gray_threshold 0.2
minimum_reuse 0.015
brightness 1.3
adc_bailout 0.01/1000
}
}
camera
{ location <27.8, 27.3,-80.0>
direction <0, 0, 1>
up <0, 1, 0>
right <-1, 0, 0>
angle 39.5
}
/*
* colors converted from spectral space.
*/
#declare white_cornell =
texture
{ finish{ diffuse 1 }
pigment { color rgb<0.740063*1.2,0.742313,0.733934*.7> }
}
#declare green_cornell =
texture
{ finish{ diffuse 1 }
pigment { color rgb<0.162928,0.408903,0.0833759> }
}
#declare red_cornell =
texture
{ finish{ diffuse 1 }
pigment { color rgb<0.366046,0.0371827,0.0416385>*1.5 }
}
#declare light_color = color rgb<0.780131,0.780409,0.775833>;
mesh
{
/*
* floor
*/
triangle {
<55.28, 0.0, 0.0>,
<0.0, 0.0, 0.0>,
<0.0, 0.0, 55.92>
}
triangle {
<55.28, 0.0, 0.0>,
<0.0, 0.0, 55.92>,
<54.96, 0.0, 55.92>
}
/*
* ceiling
*/
triangle {
<55.60, 54.88, 0.0>,
<55.60, 54.88, 55.92>,
<0.0, 54.88, 55.92>
}
triangle {
<55.60, 54.88, 0.0>,
<0.0, 54.88, 55.92>,
<0.0, 54.88, 0.0>
}
/*
* back wall
*/
triangle {
<0.0, 54.88, 55.92>,
<55.60, 54.88, 55.92>,
<54.96, 0.0, 55.92>
}
triangle {
<0.0, 54.88, 55.92>,
<54.96, 0.0, 55.92>,
<0.0, 0.0, 55.92>
}
texture { white_cornell }
}
mesh
{
/*
* right wall
*/
triangle {
<0.0, 54.88, 0.0>,
<0.0, 54.88, 55.92>,
<0.0, 0.0, 55.92>
}
triangle {
<0.0, 54.88, 0.0>,
<0.0, 0.0, 55.92>,
<0.0, 0.0, 0.0>
}
texture { green_cornell }
}
mesh
{
/*
* left wall
*/
triangle {
<55.28, 0.0, 0.0>,
<54.96, 0.0, 55.92>,
<55.60, 54.88, 55.92>
}
triangle {
<55.28, 0.0, 0.0>,
<55.60, 54.88, 55.92>,
<55.60, 54.88, 0.0>
}
texture { red_cornell }
}
mesh
{
/*
* short block
*/
triangle {
<13.00, 16.50, 6.50>,
<8.20, 16.50, 22.50>,
<24.00, 16.50, 27.20>
}
triangle {
<13.00, 16.50, 6.50>,
<24.00, 16.50, 27.20>,
<29.00, 16.50, 11.40>
}
triangle {
<29.00, 0.0, 11.40>,
<29.00, 16.50, 11.40>,
<24.00, 16.50, 27.20>
}
triangle {
<29.00, 0.0, 11.40>,
<24.00, 16.50, 27.20>,
<24.00, 0.0, 27.20>
}
triangle {
<13.00, 0.0, 6.50>,
<13.00, 16.50, 6.50>,
<29.00, 16.50, 11.40>
}
triangle {
<13.00, 0.0, 6.50>,
<29.00, 16.50, 11.40>,
<29.00, 0.0, 11.40>
}
triangle {
<8.20, 0.0, 22.50>,
<8.20, 16.50, 22.50>,
<13.00, 16.50, 6.50>
}
triangle {
<8.20, 0.0, 22.50>,
<13.00, 16.50, 6.50>,
<13.00, 0.0, 6.50>
}
triangle {
<24.00, 0.0, 27.20>,
<24.00, 16.50, 27.20>,
<8.20, 16.50, 22.50>
}
triangle {
<24.00, 0.0, 27.20>,
<8.20, 16.50, 22.50>,
<8.20, 0.0, 22.50>
}
texture { white_cornell }
}
mesh
{
/*
* tall block
*/
triangle {
<42.30, 33.00, 24.70>,
<26.50, 33.00, 29.60>,
<31.40, 33.00, 45.60>
}
triangle {
<42.30, 33.00, 24.70>,
<31.40, 33.00, 45.60>,
<47.20 33.00 40.60>
}
triangle {
<42.30, 0.0, 24.70>,
<42.30, 33.00, 24.70>,
<47.20, 33.00, 40.60>
}
triangle {
<42.30, 0.0, 24.70>,
<47.20, 33.00, 40.60>,
<47.20, 0.0, 40.60>
}
triangle {
<47.20, 0.0, 40.60>,
<47.20, 33.00, 40.60>,
<31.40, 33.00, 45.60>
}
triangle {
<47.20, 0.0, 40.60>,
<31.40, 33.00, 45.60>,
<31.40, 0.0 45.60>
}
triangle {
<31.40, 0.0, 45.60>,
<31.40, 33.00, 45.60>,
<26.50, 33.00, 29.60>
}
triangle {
<31.40, 0.0, 45.60>,
<26.50, 33.00, 29.60>,
<26.50, 0.0, 29.60>
}
triangle {
<26.50, 0.0, 29.60>,
<26.50, 33.00, 29.60>,
<42.30, 33.00, 24.70>
}
triangle {
<26.50, 0.0, 29.60>,
<42.30, 33.00, 24.70>,
<42.30, 0.0, 24.70>
}
texture { white_cornell }
}
// Light
box
{ <21.3,54.87,33.2><34.3,54.88,22.7> no_shadow
pigment { light_color } finish { ambient light_color*10000 diffuse 1 }
}
--
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
|
|