Brilliant!

I haven't played with the project yet, but your WIP looks very promising.
Can you make procedural drips too? Or stains that run with gravity?

Thanks for sharing

Miles/.. 

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Mark Heuymans
Sent: March 31, 2008 4:13 PM
To: [email protected]
Subject: procedural concrete, rusty iron

Hi all,

It's been an old dream for me to make 'intelligent' materials, I mean like
in the real world: materials that are more or less aware of their
surroundings. For example, a rusty pipe gives off reddish rust to the
surroundings; it's often the complete optical isolation of individual
objects that makes them look artificial and dead. GI can help here because
it connects objects by their mutual illumination, but there's more: the
surface materials themselves.
It then occurred to me that the Raytrace VSL object offers some
possibilities: instead of using it for illumination (like in GI and AO), why
not use it for Color or Scope?  This way, I managed to make a procedural
concrete that turns rusty reddish near every surface the Raytracer hits. See
attached image... here is the project:
http://www.athanor3d.com/pub/smartprocedurals.r3d

This project has more stuff in it but to avoid confusion: this post is
primarily about the Concrete material.

Some notes:
- Using the Raytracer object tends to create noise and drastically increases
render time. I stole some code from the default Ambient Occlusion shader,
got rid of some Illumination-related lines and modified it a bit (like
setting the Raytracer to Distance), and used Material AA (the General tab)
to increase sampling near areas where there's a lot of noise. It has the net
effect of a locally increased raycount. A lot of trial&error...
- to counteract the noise and reduce render time, I tried to make Raycount
depend on Antialiasing - see the Concrete material. Next on the list: see if
this can optimize the default AO shader!
- also, I tried to use material antialiasing (in the General tab of the
Raytrace object). Finding useful values takes a lot of trial&error!

- there is also a Rust material in the project that depends on Scope, but I
think I encountered some bugs with Scope. There is another material in the
project: 'dirtylocal'that works fine. I'll try to pin it down and report to
Vesa ;)
- it would be nice for the concrete to make a distinction between rusty
pipes and other stuff that doesn't leak rust - is there a way to make an
object visible or invisible to the Raytrace object? I remember reading
something about ObjectID but where was it?


More to follow if anyone is interested, no doubt there's a lot of room for
improvement - this is just a WIP!

-Mark H

Reply via email to