RobynsVeil opened this issue on Oct 04, 2008 · 57 posts
bagginsbill posted Mon, 06 October 2008 at 11:56 AM
Hi folks. Wow. Bad timing on my part to go away on vacation. LOL I just got back from the Dominican Republic - and I have a tan!
Anyway, there's a lot to clarify here. I'm about 20 threads behind on responding, but this one really needs help, so I'll start here. (Unfortunately, I am in a conference call at the moment and am supposed to be paying attention, so I won't write a big response yet.)
Matmatic is a for creating nodes using language instead of pictures.
Matmatic generates shaders as materials, or collections, or mat pose files. I included a "class" to define a V3 material collection. At the time, there was no V4. That is why there was a focus on V3 in matmatic. Others have since published V4 collection class definitions and matmatic does produce V4 collections or mat pose files. I also have a V4 collection in matmatic but never published it.
The big problem with matmatic and collections is not the collection itself. It does that just fine. The problem is how to map a set of various material shaders (skin, sclera, cornea, fingernail, etc) onto all the nearly infinite variety of material zone collections, and to do so in such a way that is independent of the grouping of those collections with respect to UV map.
This gets complicated.
For example, for any given figure, there is a set of zones that should be "skin". There is also a set of zones that should be the UV map for head. Not all head zones are skin zones. Not all skin zones are head zones. Basically, the appropriate groupings for material type don't line up nicely with the appropriate groupsing for UV map zone. (head versus body versus limbs)
Trying to tie all that together in matmatic is confusing and requires a lot of code, often character specific code. So I invented VSS. VSS does not create shaders. It copies shaders, and combines them with image maps it already finds on the target figure or prop.
So the ideal solution is design a skin shader, or cornea shader, or fingernail shader in matmatic paying zero attention to UV zones or target figure. Then use VSS to distribute all these shaders to all the right zones and plug in all the right color, specular, bump, displacement, hair, mole, freckle maps in the right places into those generic shaders.
If you try to do it all in matmatic (and it can be done) you have to make all the methods that generate materials take additional parameters to define what image maps to plug in, and then you have to use a "Collection" object to map the resulting materials to the various target material zones. Using matmatic for this is better than doing it all by hand in the material room, but not nearly as easy as using VSS.
VSS and matmatic have nothing to do with skin, per se. I do car paint shaders, rubber, plastic, and glass shaders with matmatic and VSS just as easily for vehicles. I also do rocks, bricks, stucco, grass, and dirt with matmatic and VSS for arch-vis (buildings and such). I also do slimy slugs. :)
Regarding the light-aware shader concept, the main thing being addressed there is "where should the subsurface scattering happen"? Face_off used math and you have to take into account the position of your main light source. I tried a dozen other things and came up with a way to do it abusing the lighting nodes until they cried and moaned and complained but did what I wanted. Yes the Ultra-Basic skin shader used Diffuse. That was a 3-node solution and it's easy to make and gets you 80%. My newer techniques (included in the demo VSS skin shader) use many many more lighting and math nodes and get you 95% of the way there.
I have a work-in-progress matmatic script for skin that is even better, uses even more nodes, and gets you 99% of the way there, while also doing water droplets, glitter, pores, and other cool tiny stuff that is hard to draw in your color map.
More later.
Renderosity forum reply notifications are wonky. If I read a follow-up in a thread, but I don't myself reply, then notifications no longer happen AT ALL on that thread. So if I seem to be ignoring a question, that's why. (Updated September 23, 2019)