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
