![](/i/fill.gif) |
![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Based on the accessibility of a surface location. No height fields
were used :P
_____________
Kari Kivisalo
Post a reply to this message
Attachments:
Download 'patina.jpg' (42 KB)
Preview of image 'patina.jpg'
![patina.jpg](/povray.binaries.images/attachment/%3C3B8DD549.D0A9588E%40engineer.com%3E/patina.jpg?preview=1)
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Couldn't tweak it any better so here it is. I rendered the "Arnold"
grime map from scene camera position using orthographic camera
and aligned in the scene to project from the camera position.
texture{
image_pattern{sys "grime_map.bmp"}
texture_map{
[0.6 Grime]
[1 Metal]
}
}
The problem with using radiosity to simulate accessibility
is that small surface variations on high visibility area get
outweighted by big low visibility areas. Some kind of local
equalization/high-pass operation would make it work better.
_____________
Kari Kivisalo
Post a reply to this message
Attachments:
Download 'grime_map.jpg' (13 KB)
Preview of image 'grime_map.jpg'
![grime_map.jpg](/povray.binaries.images/attachment/%3C3B8E0F26.6DDC17B3%40engineer.com%3E/grime_map.jpg?preview=1)
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Kari Kivisalo wrote:
>
> Based on the accessibility of a surface location. No height fields
> were used :P
>
I think Chris Huff was planning some pattern for this working similar to
the visibility pattern i wrote but sampling in various directions.
Christoph
--
Christoph Hormann <chr### [at] gmx de>
IsoWood include, radiosity tutorial, TransSkin and other
things on: http://www.schunter.etc.tu-bs.de/~chris/
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
Hi Kari Kivisalo,
You've been cranking out some nice radiosity images lately! nice work!
Concerning your latest patina experiments, may i suggest you have a look
at an old test i did, but with the proximity pattern ..
news://news.povray.org/3AA72A9B.7B8E4326%40rsp.com.au
Bye
benp
Kari Kivisalo wrote:
>
> Based on the accessibility of a surface location. No height fields
> were used :P
>
> _____________
> Kari Kivisalo
>
> ------------------------------------------------------------------------
> [Image]
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
ben paschke wrote:
>
> Concerning your latest patina experiments, may i suggest you have a look
> at an old test i did, but with the proximity pattern ..
>
> news://news.povray.org/3AA72A9B.7B8E4326%40rsp.com.au
The net effect of proximity pattern seems to be abs(curvature).
Proximity is about distance from surface and patina simulations
are based on visibility so it's natural one can't be used in place
of other. The reason it worked with a stack of balls is that the
highest curvature is where they intersect.
If proxomity pattern could select positive or negative curvature
it could be used to detect edges and apply wear and tear or deposit
grime on negative curvature areas.
Notice the concentration on both negative and positive high
curvature areas. http://www.pp.hv.fi/kkivisal/prox.jpg
texture{
proximity {
Tut, 5
samples 30
sample_bailout 30
max_density 1
type 0
method 1
sides 2
}
texture_map{
[0.2 Grime]
[0.7 Clear]
}
}
_____________
Kari Kivisalo
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
> curvature areas. http://www.pp.hv.fi/kkivisal/prox.jpg
http://www.pp.htv.fi/kkivisal/prox.jpg
_____________
Kari Kivisalo
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
in news:3B8F7FC3.D717E8FF@engineer.com Kari Kivisalo wrote:
> http://www.pp.htv.fi/kkivisal/prox.jpg
>
Interesting.
Just an idea I came up with while making a short bicycle tour this
afternoon. It may be complete nonsense.
Shoot a ray at the object to be rendered. Put an imaginary sphere with
a given radius with its centre on the ray, its surface should toutch
the objects surface in the intersection point. Now check if the sphere
intersects somewhere with the object. If so, reduce the sphere radius
until it does not intersect anymore (the sphere should still be
toutching the object at the intersection point).
Now make the grey-value of the objects pigment depends on the sphere's
radius.
By setting limits to the sphere's sizes you could control the amount
of patina.
Would something like this work? As a patch? As a clever combination of
macros and functions (3.5)?
Ingo
--
Photography: http://members.home.nl/ingoogni/
Pov-Ray : http://members.home.nl/seed7/
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
On 31 Aug 2001 10:17:16 -0400, ingo wrote:
>
> Shoot a ray at the object to be rendered. Put an imaginary sphere with
>a given radius with its centre on the ray, its surface should toutch
>the objects surface in the intersection point. Now check if the sphere
>intersects somewhere with the object.
I got this far before I had to ask "how do you do THAT?" The answer is,
of course, that you cannot. The best you can do is fire a bunch of random
rays at nearby points on the object and try to estimate the local curvature
of the surface.
--
#local R=rgb 99;#local P=R-R;#local F=pigment{gradient x}box{0,1pigment{gradient
y pigment_map{[.5F pigment_map{[.3R][.3F color_map{[.15red 99][.15P]}rotate z*45
translate x]}]#local H=pigment{gradient y color_map{[.5P][.5R]}scale 1/3}[.5F
pigment_map{[.3R][.3H][.7H][.7R]}]}}}camera{location.5-3*z}//only my opinions
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
in news:slr### [at] fwi com Ron Parker wrote:
> I got this far before I had to ask "how do you do THAT?" The
> answer is, of course, that you cannot.
So there is no direct way to calculate that :(
An indirect way would be to get 'some' points on the sphere and use
these with the inside() function, but that would only work on solid
objects.
> The best you can do is fire
> a bunch of random rays at nearby points on the object and try to
> estimate the local curvature of the surface.
Is the curvature enough to know whether my finger with polish cloth
can reach a certain point?
How about shooting rays from the intersection point, in a
hemispherical pattern, aligned with the normal at intersection point.
From that, I think it could be calculated if an object with a certain
diameter can reach the point. Depending on that diameter the grey-value
gets calulated.
Ingo
--
Photography: http://members.home.nl/ingoogni/
Pov-Ray : http://members.home.nl/seed7/
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
On 31 Aug 2001 11:24:43 -0400, ingo wrote:
>> The best you can do is fire
>> a bunch of random rays at nearby points on the object and try to
>> estimate the local curvature of the surface.
>
> Is the curvature enough to know whether my finger with polish cloth
>can reach a certain point?
The curvature is related to the radius you want to find, so yes. The
difference is that curvature is also related to whether the surface is
concave or convex, which is also important.
> How about shooting rays from the intersection point, in a
>hemispherical pattern, aligned with the normal at intersection point.
The solution I proposed the last time this discussion came around was to
fire rays from just "above" the intersection point in a small area around
the intersection point, and estimate the curvature from that. The method
you propose might work, but I'm always wary of the roundoff errors when
intersecting a ray with a nearly-parallel surface (which is what you'd
get a lot of using your method on a low-curvature surface.)
--
#macro R(L P)sphere{L F}cylinder{L P F}#end#macro P(V)merge{R(z+a z)R(-z a-z)R(a
-z-z-z a+z)torus{1F clipped_by{plane{a 0}}}translate V}#end#macro Z(a F T)merge{
P(z+a)P(z-a)R(-z-z-x a)pigment{rgbf 1}hollow interior{media{emission 3-T}}}#end
Z(-x-x.2x)camera{location z*-10rotate x*90normal{bumps.02scale.05}}
Post a reply to this message
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |
| ![](/i/fill.gif) |
|
![](/i/fill.gif) |
|
![](/i/fill.gif) |
| ![](/i/fill.gif) |