Dynamic Wrinkles - is shader mixer the way?

My goal is to apply normal wrinkle maps that are driven by pose parameters. From the looks of it, shader mixer seems like the right way to go to achieve this goal. I am not familiar with shader mixer, but it looks similar to Softimage's render tree which I am somewhat familiar with. Here are what needs to be done:
1) Layer several normal maps. Example these are the normal maps I made. One for relaxed pose and the other has a bunch of compression wrinkles on it (sorry for the watermark):
2) Layer several masks that will be used to select specific areas of the face to be wrinkled. Layer blend mode should be "additive" or "lighten" or whatever you want to call it. The final mask output should then be used as a mask for the compressed normal map which is layered over the relaxed normal map. Here are right brow, left brow, mouth, and chin masks for example:
3) Somehow I need pose parameters to drive opacity values of individual masks layers. For example when "Brow Up-Down Right" slider goes up to 100%, the opacity of the right brow mask layer goes up to 100% as well and you get something like this:
Can anyone guide me in the right direction to accomplish this?
Comments
Sounds very interesting:) I'm not aware of any possibility to input pose parameter values into any of the current bricks, but I may be mistaken;) If you're into coding, it may be possible to create a custom brick that accepts those parameters, but I can't help you there, have no idea how that would be done. Or maybe a script could do it? Just be aware that shadermixer is not very stable, in fact it's pretty bug ridden IMO, and totally unpredictable in some cases
. But you definitely have my attention, and if you find a way, please share
. Just a thought, I would use displacement- instead of normal maps in this case, as they actually alter the geometry, not just create an illusion of shadows;)
You can link, via ERC, shader properties to node properties - however, it has to be done via script rather than using the Property Hierarchy and Parameters panes. How well it would work for this I don't know.
I'm also interested in to see if something like this can be made possible.
As soon as I read the topic I remembered I was involved in a discussion like this before: Are dynamic wrinkle maps possible?
What about the idea of blending the wrinkle maps into the figures texture/shader by the Layered Image Editor and turn up/down the layer opacity controled by the joint rotation?
The idea is to reduce the image file size by only using patches of the areas the wrinkles are placed on the texture maps. You don't need all the image space, most of it will be masked out anyway. Doing it like this would make it possible to adjust the offset of the overlay patches to fine tune it for different UV layouts.
You see you have to control this by programming a script because there is no premade functionality like this in Daz Studio yet.
Have a look at how these products relating overlay eyebrows work. They are using the Layered Image Editor functionality to blend in eyebrow presets onto the character textures for color and bump maps that you can control by a script interface.
Wow Brow
Brow Remover for Daz Studio
Now that I'm older and wiser I know where to look and search for so I found some references.
Script example: How do I set Opacity Strength in script?
[Edit]: Software Guides » Layered Image Editor » reference » Using the Layered Image Editor
Don't consider me to be a scripting expert I just more or less randomly copy pasted some API reference that seems to be related to the LIE and opacity.
Scripting API references that may be of interest: