|
|
|
|
|
|
| |
| |
|
|
|
|
| |
| |
|
|
If this has been discussed already I apologize, and/or I am missing
something obvious.
The object on the left is a csg cylinder
The object on the right is a isosurface cylinder
The top of the scene was rendered with no assumed_gamma specified
The bottom half of the scene was rendered with no other change that to
specify assumed_gamma 1.0
So the question is how can I specific assumed_gamma and eliminate the
artifacting in the shadow?
Post a reply to this message
Attachments:
Download 'img.0022.jpg' (31 KB)
Preview of image 'img.0022.jpg'
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Jim Charter <jrc### [at] msncom> wrote:
> If this has been discussed already I apologize, and/or I am missing
> something obvious.
>
> The object on the left is a csg cylinder
> The object on the right is a isosurface cylinder
>
> The top of the scene was rendered with no assumed_gamma specified
>
> The bottom half of the scene was rendered with no other change that to
> specify assumed_gamma 1.0
>
> So the question is how can I specific assumed_gamma and eliminate the
> artifacting in the shadow?
I believe the problem is with your isosurface, not the gammma. There is
artifacting on the upper half as well. As to waht to do about that, I am
not sure. Are you doing anything odd w/ your functions?
-s
5TF
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
stm31415 wrote:
> I believe the problem is with your isosurface, not the gammma. There is
> artifacting on the upper half as well. As to waht to do about that, I am
> not sure. Are you doing anything odd w/ your functions?
>
Don't think so. Pretty much straight from Mike Williams.
Here's the exact file I tested with:
global_settings {
assumed_gamma 1.0
}
camera {
location vrotate ( <0,0,-12>, <10,0,0> )+<-1,0,0>
look_at <0.0, 0.0, 0.0>+<-1,0,0>
right x*image_width/image_height
angle 20
}
light_source {
0*x // light's position (translated below)
color rgb <1,1,1> // light's color
translate vrotate ( <0,0,-20>, <40,60,0> )
}
isosurface {
function { x*x + z*z - .45*.45 }
contained_by { box { -1, 1 } }
accuracy 0.001
//max_gradient 2.772
evaluate 5, 1.2, 0.95
texture{
pigment {
rgb <1,.9,.7>
}
finish {
ambient 0
diffuse 1
}
}
}
cylinder {
<-2,1,0>, <-2,-1,0>, .45
texture{
pigment {
rgb <1,.9,.7>
}
finish {
ambient 0
diffuse 1
}
}
}
BTW if I set assumed_gamma to 2.2 I get the same result as if
I don't specifiy it at all.
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
> accuracy 0.001
Try bringing that down some. Maybe to 0.0001 or lower.
- Slime
[ http://www.slimeland.com/ ]
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Slime wrote:
>> accuracy 0.001
>
>
> Try bringing that down some. Maybe to 0.0001 or lower.
>
thanks Slime, but...
tried 0.000001 with no improvement
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
> tried 0.000001 with no improvement
Mmm. It looks like a really high max_gradient (tried 300) doesn't help
either.
I don't believe this is related to gamma (it just shows up better when gamma
correction is used since that highlights the transition from light to
shadow). It looks like it may be an internal problem with isosurfaces, maybe
related to shadow rays.
- Slime
[ http://www.slimeland.com/ ]
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
The artefacts are entirely in the shadow processing of the isosurface.
The assumed gamma just makes that part of the object bright enough for
them to be visible. You can see the same effect if you change the
ambient to 0.5 or add a second light in an appropriate position.
I've no idea how to fix it.
--
Mike Williams
Gentleman of Leisure
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
If this effect is causing you problems in a real scene, here's really
ugly workround that will get you going:
#declare my_isosurface = isosurface { ...
object {my_isosurface no_shadow}
object {my_isosurface scale 0.999}
The scale value plus the accuracy value should add up to 1.0 or less, so
scale 0.999 works with your accuracy value of 0.001. If you want more
accurate shadows you can use accuracy 0.00001 and scale 0.99999
Obviously, in your test scene there's no need for the shadow casting
copy, because the shadow isn't case on anything other than itself, and
it's those self shadows that are the problem.
--
Mike Williams
Gentleman of Leisure
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Mike Williams wrote:
> If this effect is causing you problems in a real scene, here's really
> ugly workround that will get you going:
>
> #declare my_isosurface = isosurface { ...
>
> object {my_isosurface no_shadow}
> object {my_isosurface scale 0.999}
>
> The scale value plus the accuracy value should add up to 1.0 or less, so
> scale 0.999 works with your accuracy value of 0.001. If you want more
> accurate shadows you can use accuracy 0.00001 and scale 0.99999
>
> Obviously, in your test scene there's no need for the shadow casting
> copy, because the shadow isn't case on anything other than itself, and
> it's those self shadows that are the problem.
>
Thanks to you and Slime for taking a look. The first image is a test
from the actual application.
The second is from a quick attempt to apply your workaround but I don't
think I quite grasped the concept. Anyway it is apparently to no avail.
The actual isosurface function is an IC_Sor definition from
iso_csg.inc then with some pigment functions combined. So that may be
why I got the same result. (But as I tried to understand the thinking
behind your workaround it made me wonder if the threshold value might be
used.)
Anyway if it doesn't work I'll just have to try another approach. But
it makes me wonder why these artifacts don't appear in the iso_wood
macros for instance. I can't believe I am the first one down this path.
Post a reply to this message
Attachments:
Download 'img.0029.jpg' (41 KB)
Download 'img.0030.jpg' (30 KB)
Preview of image 'img.0029.jpg'
Preview of image 'img.0030.jpg'
|
|
| |
| |
|
|
|
|
| |
| |
|
|
Wasn't it Jim Charter who wrote:
>Mike Williams wrote:
>> If this effect is causing you problems in a real scene, here's really
>> ugly workround that will get you going:
>>
>> #declare my_isosurface = isosurface { ...
>>
>> object {my_isosurface no_shadow}
>> object {my_isosurface scale 0.999}
>>
>> The scale value plus the accuracy value should add up to 1.0 or less, so
>> scale 0.999 works with your accuracy value of 0.001. If you want more
>> accurate shadows you can use accuracy 0.00001 and scale 0.99999
>>
>> Obviously, in your test scene there's no need for the shadow casting
>> copy, because the shadow isn't case on anything other than itself, and
>> it's those self shadows that are the problem.
>>
>Thanks to you and Slime for taking a look. The first image is a test
>from the actual application.
>
>The second is from a quick attempt to apply your workaround but I don't
>think I quite grasped the concept. Anyway it is apparently to no avail.
What does your code produce if you just add "no_shadow" to your
isosurface?
For your cylinder code, adding "no_shadow" clears up the artefacts, but
that would look wrong in a real scene if there was something below the
object onto which a shadow would be expected to be cast.
--
Mike Williams
Gentleman of Leisure
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |