When does a node-based material have a "normal" output?

I see that “Material” nodes have a Normal output, but that the Output node of a material noodle contains only Color.

I’ve set up several materials which take a Texture and feed it to the Normal input of a Material node, then they send its output to the Output node. Looks “nice 'n bumpy” in the Output preview of that material … but …

… if I add a Material node to another Material, referencing the first, well, the preview is totally smooth.

Yet, I observe that “older” materials, which did not use Nodes but which used the old techniques of “Map To,” do show up in Material nodes that refer to them, having very plain textures indeed.

Do we still have to use the “Map To” facility after all?

(2.5-A2)

Having had a bit more time to re-formulate my question . . .

I am trying to convert a complicated set of textures completely to Nodes in 2.5-A2, basically to see “how” and “if I can.” (Incidentally, I’ve seen the same anomaly I’m about to describe, in 2.49b as well.) This is intended also to be a workout of procedural textures.

There are three component textures, which basically represent the intended appearance of three areas (crust, top, face) of a loaf of bread, and then a fourth, node-based texture which, using a vertex-map as an input, blends the other three together using Mix nodes. I do have this mix-texture working.

The three component textures are (at the moment) simple: a diffuse and spec color, and a procedural texture to affect Normal.

If I do these in the “old-fashioned way,” by setting up a Material and add the texture (“Map To” Normal) in the texture-stack, when I look at this material in the material-node of the mixer-material, the sphere looks bumpy, as it should.

If I try to use nodes to set-up these component textures, I get a “bumpy sphere” in the Output node of the component, but when I look at the same material (p.s. known to be the same material…) in the mixer-node, it’s smooth.

This strongly suggests to me that Normal information isn’t making it out of the Output node. (Which kinda makes sense because that node doesn’t have a “Normal” connector, only"Color.") Yet the documentation for the Material node suggests that there ought to be a usable “Normal” output from a Material.

I set up the three component materials as a Geometry node feeding (via “Normal”) a Texture node which feeds the Normal input of a Material which goes to the Output.

Aside from being at a loss to explain why the Output node of a Material does not contain a “Normal” input … I’m honestly not sure what is the correct way to wire this puppy up.

? ? ?

then add a texture node which will provide a normal / bump output for your texture!
for an exmaple look at the example for brick nodes setup

and that way it should work

an you some pciture of rnode editor so we can the overall setup
would be easeir ot help may be !

happy 2.5

Listening carefully to what you’re saying (and admitting that the ol’ neurons don’t fire quite as well as they used to …) I’m not entirely sure that my situation is quite like that of “bricks.”

I’m actually trying to create the effect of a tasty loaf of bread that has split at the top during baking, revealing an “interior” texture surrounded by crust. Each of these areas is to have different colors and a different surface-normal treatment. I had thought to create each of these sub-textures separately, then bring them into the final texture … but it seems that the normal-vector information is being “lost in translation.”

“Bricks,” on the other hand, seems to deal only with color, not normals, throughout.

I am, quite frankly, very puzzled why the Output node of a Material noodle doesn’t seem to contain a “Normal” socket. In fact… let me lay out all of my confusions here …

  • Given that a “Material” node has a Normal input-socket… where does that value enter into the noodle that (say…) defines that material? Does it enter through the Geometry node?
  • Exactly how is it that the Material node has a Normal output socket, given that the Output node of a Material noodle does not? Where is such an output supposed to come from (within the noodle network)? (My observations suggest that it can’t… which seems prohibitively strange.)

the brick texture node is only an example on how to use this texture node!
where there is not only a color but a bump and a specular map used in the output

and with material node there is the geometry node which can play with this normal
but i did use it a lot as such for normal

i can check if i have an example of this geometry node with aa normal output used!

anyway can you show a pic of your node setup so we can better see what your trying to do

also don’t forget that in amt node edtior you do have a texture node

that for a mat node you can add some NOR in the texture channel of the mat not necessarely in the node editor as such

it depends how you organise things with mat and textures

thanks

I am doing this somewhat as an exercise to try to understand “the designer’s intent.”

  • It seems to me that, unless you use the “Map To” buttons (in the conventional way, as you had to do it before Material Nodes existed), there’s no meaningful Normal output from a Material node. You can generate and use Normal information within the noodle, but there’s no way to pipe the information out of the noodle.
  • The input and output sockets of an Extended Material node obviously provide us with a list of what the Material’s supposed to be able to accept as input, and what it’s supposed to be able to produce. But the Output node of a Material noodle doesn’t provide an outlet for all of those outputs; only for two. Furthermore, it is not at all obvious to me how the various inputs that are listed in the Extended Material node can actually be obtained and used by the (other…) noodle “on the inside.”
  • I’m guessing that maybe “the designer’s intent” is that, where I’m trying to use a material-node, I should simply be using a Node Group.
  • I have, by the way, already been successful with that approach, so I’m not actually head-banging here; I’m just trying to understand what The Implementors (ommmm…) had in mind.

Perhaps if you could point me to a representative and somewhat-detailed node example that goes along these lines, it would ultimately be more helpful than me trying to cobble together a screen-shot to show you. (Isn’t there a diagram of Blender’s shader-architecture somewhere … that I’ve forgotten?)

are you in 2.5 or 2.49

to get the normal output you need to add a geometry node for your mat node i think

salutations

i ahve several excample of bump mapping in 2.49
where you control the NOR value in texture channel!

but this is n not normal mapping!
i
ll see if i can find one for normal apart of the brick one using texture node

one factor to remember here
is that normal give a 3d effect only if the camera is place right in front at same angle then originaly the normal map was done otherwise you don’t have this 3D effect it becomes flat only
so it’s not my prefered way to show 3D effects
bump mapping or displacement are a lot better then this i think

ok i did find an example for normal map with mat
but as i said not very convincing it’s working
the bump map works much better then this!

i can upload the sample i avhe if you want to test this

let me know

salutations

Thanks, Ricky.

I do understand the trade-off of normal vs. displacement mapping, and although your points are quite valid, I’m sure I’ve got those bases covered.

Looking at this, and reading the original Blender 2.42 release-notes once again where the Material Node system was first described, especially the bit about “Nodes” vs. “NodeTrees,” I wonder if this is some kind of technical issue. I wonder if the complicated “Map To” arrangement in the Texture Nodes doc-entry is, in fact, quite necessary…

The omission of Normal as an output-type to a Material node does not seem accidental to me. Perhaps it is an artifact of Blender’s internal architecture? The “release notes” do seem to suggest that trade-off decisions were made.

why are you saying that normal map on a material?

i mean normal map exist only for texture not the material itself
in the normal mapping or in node editor for mat

so you simply need to add a texture node in mat node editor and then you have your normal map output which you can play with

anyway i can upload and example for this texture normal map in mat node editor
but as i said it’s not great look!
but it works better may be on 3D object then on a flat plane !

salutations

Well, anyway … :slight_smile:

Here’s something that works quite well indeed. I simply took the various component materials, selected their nodes and made a Group.

Groups can, of course, then be referenced in any other noodle, and they have whatever inputs and outputs are “left unplugged.”

This gives me what I was looking for … a convenient way to look at each material both “in isolation” and as a part of the mixer. Blender sees the mixer as being one noodle.

It was fun. It was informative. But, fun only lasts so long, and I’ve got a loaf of digital bread to bake.

show us some pictures should be interesting

may be we can learn something here

salutations

Well, I’m not sure there’s really too much to it. :spin:

It goes like this:

  • Set up your material using nodes. In other words, you are not using “material buttons and a texture-stack.” Instead, everything you’re doing with this-or-that material is done with the nodes.
  • The resulting material will have “a bunch of nodes” leading to an Output node.
  • Select the “bunch of nodes” and Make Group. Name the group something meaningful.
  • Now, anywhere else, you can use that same group as a node. (You can also “link to” node groups from external library files.)

When you do things this way, “the material” simply gives you an easy way to look at that node-group in isolation, e.g. applied to a dummy test-object.

Notice that you can define node-groups in this way whether or not you’ve also associated that group with another material. This is just an approach that I found convenient: it let me deal with “each of the materials I’m mixing” first, then “the mixer” second. Instead of trying to use “material nodes,” I defined a node-group that was “the essence of that particular material.” Blender perceives “the mixer” as one node-network (including three groups).