"Mix Normals," node
Currently in cycles there is no way to mix together 2 normal maps like you can with texture maps. Some nodes, such as the bevel node, allow a normal input which sort of does the same thing, but it's hardly a substitute.
It would be nice if there was a "Mix Normals," node that allows you to mix between or combine normals using a couple different methods. One method might just be a simple "mix," but in case the two normal maps conflict with eachother, there might be some mathimatical operators to allow you to decide which map is "on top."
14 Comments
I've actually made a node group for that. I'm planning on making a video about it soon.
It's possible to do this entirely with math nodes. But it's good enough in most cases to use an overlay node.
Hey, it is good to know people are asking for this. I let the developers know and a conversation has started. We are preferably looking for a developer (from the community) that is interested in implementing this!
Take a look at the post here: projects.blender.org/blender/blender/issues/133984
take a look at the blendit add on youtube.com/watch
Take a look at the video I made on the topic .
You can already to this
well it, depends on how,exactly do you want your normalx mixed : if you just use MIX RGB on the normal map, you want to, say project a fine detail normal map onto a large detail normal map and get the curvature right, this will actually do the trick if, however you want to create more complex compound operations like you can have waves interfere, for example and interact with eachother like water, or behave in a different way when aligned vs when not aligned, you can use vector dot and cross products to achieve this
In this link you will find a blend file containing a group of nodes intended for proper mixing of normal maps, created by Bartek Skorupa
polskikursblendera.pl/forum/index.php
I also include a link to the playlist on you tube (in Polish but maybe the automatic translation will work) youtube.com/watch
* @nanomanpro * I'm going to make a similar English language video soon!
How about adding Normal Combine blend mode to the MixRGB node.
* @Quinten.Pillen * I think you would end up needing more than 1 option. For example, if I had a normal map of a bumpy surface, and a normal map of a flat surface with bolts on it, there are probably different ways to combine them so it prefers the detail of one image over the other IE:
* @Zach Hixson * What you'd do in that case is use a mask to control OP3. You'd make a way of blending normal maps in a nice way, then use a texture to control which normal map is used in any given place. This way, you can get a nice smooth blend between them.
There isn't a way of knowing what part of a normal map is one thing or another. All the computer sees is a bunch of vectors. It's a lot more predictable to give the math jobs to the computers (in this case, combining vectors) and the decision making to humans (Choosing which part is the bolt, which part is the bumpy bit, and which part is a blend of the two).
* @Josephbburg * Actually it should be pretty simple. I used bolts and bumps as just a description, but technically speaking it should be as simple as a difference matte. Considering normals describe vector directions, you could use all sorts of different math to "choose," which parts come from what maps IE: Blending based on dot product
* @Zach Hixson * Yes, but in any case the human has to make the matte. In this example, you'd be using a vector math node to create the texture.
* @Josephbburg * What I'm suggesting is that the matte could be generated automatically within the node by using vector math. The human would simply choose an option like "A over B," or "B over A" and based on the dot product the node could decide which details end up "on top."
While you could certainly do this using vector math, I think this method would be much more artist friendly.
* @Zach Hixson * I'd like to see it implemented as a node group.