12
$\begingroup$

When a shader node's label is one of its settings instead of the node's name, is there any way to tell (other than familiarity) what node it is?

enter image description here

In the above graphic I have three Math nodes, two set to Ping Pong and one set to Smooth Minimum. Years from now, when I open this blend file and try to figure out what the heck I was doing, is there any way to find out that a node labeled "Ping Pong" is a Math node other than by remembering “Oh yeah, Ping Pong's one of the options of the Math Node”? If I find a node labeled "Scale" is there any way to find out that's a Vector Math node other than by remembering “Oh yeah, Scale's one of the options of the Vector Math Node”?

Apologies if this has already been answered, but I haven't been able to come up with search terms that don't provide a sea of other node-related info.

Edited to add: wow, a wealth of good info! Much appreciation to Marty Fouts, Christopher Bennett, Markus von Broady, and p2or for their diverse yet brilliantly on-topic answers. Once scurest responds (either with an Answer of their comment or an okay to Marty's, see comments for details) I'll get this checkmarked. Thanks again people!

$\endgroup$
4
  • 7
    $\begingroup$ As long as you haven't renamed it, you can open the sidebar (press N) and see the name Math (or Math.001, etc.). $\endgroup$
    – scurest
    Commented Jan 21, 2022 at 22:17
  • $\begingroup$ Yep, that's it! Simple enough to point newbies at. @scurest Put that in an answer and you get the checkmark -- thanks oodles! $\endgroup$
    – KickAir8p
    Commented Jan 22, 2022 at 0:59
  • $\begingroup$ Looks like Marty Fouts's answer points it out. $\endgroup$
    – scurest
    Commented Jan 22, 2022 at 1:47
  • $\begingroup$ Yeah, but yours was hours earlier, I promised you the checkmark, and I've let him know in a comment to his answer. The checkmark's yours if you want it -- if not, let me know, and I'll give it to Marty. $\endgroup$
    – KickAir8p
    Commented Jan 22, 2022 at 1:50

5 Answers 5

8
$\begingroup$

You can't tell in a screenshot; except by inspecting the node closely.

Here is a very arbitrary material showing all of the techniques I use to help distinguish, except grouping and reroutes:

Very arbitrary material

  1. Rely on the Theme colors to group related nodes. People miss this one a lot, but there is a correspondence between the color of the header bar of the node and the blender category the node comes from. You can find this in Preferences → Themes → Node Editor:

Node editor showing the header colors

  1. As others have mentioned, rely on my own labels. In the example you can see this being done to the 3rd, 4th, and 5th nodes. (As others have mentioned F2 allows you to label the currently selected node in a popup.)

  2. Never rename the node. That way I can rely on the Node name in the side panel.

  3. Use Frames and label them. If you are using Node Wrangler (and you should be) you can select a group of nodes and type ShiftP to add a frame around all of them. Frames are labeled easily with F2 as well. Frame Tip: Color the frame interior with light colors that relate to what the frame is for. Helps with visual highlighting.

  4. Another one people tend not to use: Set body colors on similar nodes. Unfortunately, the header colors tend to lump things together that you might not want lumped. In the example, the two math(ish) nodes are lumped with the ColorRamp, because they're all "Converter" nodes. So I color the math(ish) nodes differently than other converter nodes.

  5. Not shown: use reroutes and label them to keep the noodles organized.

  6. Not shown: use node groups and give the inputs and outputs reasonable names and defaults.

A tip about node body colors.

You have to go to the side panel and enable 'color' to color a node:

Enabling color

The tip is that color can use presets, so I create a set of presets with relevant names so that I can quickly set the body color.

$\endgroup$
2
  • $\begingroup$ Your point 2 - I didn't know the info I was looking for was in the N-Panel / Sidebar! But @scurest gave me that in a comment off of my ask, hours ago, and I promised them the checkmark if they put it in an Answer. Sorry, but you've given me a lot I didn't know on the subject, and I appreciate what you've done here. $\endgroup$
    – KickAir8p
    Commented Jan 22, 2022 at 1:33
  • 1
    $\begingroup$ @KickAir8p It's OK. You can't give the check to everyone who answers and scurest was first with the info you needed the most. $\endgroup$ Commented Jan 22, 2022 at 14:31
5
$\begingroup$

I wrote a tiny little add-on to display the node type of the active node in the Properties Panel, works for all kind of node types and also allows to copy the type of the node.

enter image description here

node-type.py

# ##### BEGIN GPL LICENSE BLOCK #####
#
#  This program is free software; you can redistribute it and/or
#  modify it under the terms of the GNU General Public License
#  as published by the Free Software Foundation; either version 2
#  of the License, or (at your option) any later version.
#
#  This program is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License
#  along with this program; if not, write to the Free Software Foundation,
#  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# ##### END GPL LICENSE BLOCK #####

import bpy

bl_info = {
    "name": "Node Type",
    "description": "Display the type of the active node",
    "author": "p2or",
    "version": (0, 1),
    "blender": (2, 82, 0),
    "location": "Node Editor > Properties Panel > Node",
    "category": "Node"
}

def node_type_poll(context):
    return len(context.selected_nodes) and \
        context.space_data.type == 'NODE_EDITOR'
        
def display_node_type(self, context):
    act_node = context.active_node
    if act_node and node_type_poll(context):
        layout = self.layout
        row = layout.row()
        if act_node.type == 'GROUP':
            row.prop(act_node.node_tree, "name", text="Type (Group)")
            #row.enabled = False
        else:
            row.prop(act_node.bl_rna, "name", text="Type")
        #layout.row().prop(act_node, "bl_idname")

def register():
    bpy.types.NODE_PT_active_node_generic.append(display_node_type)

def unregister():
    bpy.types.NODE_PT_active_node_generic.remove(display_node_type)

if __name__ == "__main__":
    register()

enter image description here

Gist: https://gist.github.com/p2or/bfff03972510568b808672fa138212a9

$\endgroup$
1
  • $\begingroup$ Not the answer I was looking for, still another great take on the issue. Thanks! $\endgroup$
    – KickAir8p
    Commented Jan 23, 2022 at 17:15
3
$\begingroup$

If you're concerned about future readability, I would add Frames and rename the frames to reflect the "identity" of the node - such as "belongs to math" or "math node" (pictured below):

Frame

$\endgroup$
5
  • 1
    $\begingroup$ Wouldn't it be better to rename the node with F2? Especially as you don't have to type e.g. "Math > Ping Pong", it's enough to type "Math", because the mode is visible in the drop-down menu. $\endgroup$ Commented Jan 21, 2022 at 22:02
  • $\begingroup$ Yeah, that works too - you can be more verbose with frames in case you need to elaborate. $\endgroup$ Commented Jan 21, 2022 at 22:03
  • 3
    $\begingroup$ I wish the developers would revisit this weird quirk of the math nodes... really throwing off the newbies and not helping the comprehension since the mode is visible right below the node header... $\endgroup$
    – Gorgious
    Commented Jan 21, 2022 at 22:04
  • $\begingroup$ @Gorgious not if the node is collapsed. I think Markus von Broady's idea of renaming using F2 is the best. $\endgroup$
    – Ron Jensen
    Commented Jan 21, 2022 at 23:01
  • $\begingroup$ @Gorgious Not just the Math nodes - both the Image Texture node and the Environment Texture node re-label themselves after the texture map name, despite it being in the field right underneath. It's not only redundant (which can sometimes be a good thing), but egregiously obfuscating. @ Christopher Bennett appreciate the effort, but not what I'm going for. $\endgroup$
    – KickAir8p
    Commented Jan 22, 2022 at 1:00
2
$\begingroup$

One simple way to do it is to select the nodes of interest, press ShiftF4 and then run this code:

C.area.type='NODE_EDITOR'; n=C.selected_nodes; C.area.type='CONSOLE'; print(n)

It's not that hard to remember:

  • typing C.area.type in console will tell you what to assign to it to return to console,
  • typing C.area.type="blahblahblah" will error out and show you all allowed values, and it's probably easy to figure out which is the one you want to switch to,
  • if you don't know what attribute of C (context) you want to access, instead of n=C.selected_nodes, you can do c = C.copy() (keep in mind the letter case matters, c and C are different things),
  • then typing c.keys() in the console will display all available attributes.
$\endgroup$
2
  • $\begingroup$ So instead of remembering which nodes have which options I'd remember “ C.area.type='NODE_EDITOR'; n=C.selected_nodes; C.area.type='CONSOLE'; print(n) ”? Sorry, good to know, and it worked, but not what I'm going for. Thanks though! $\endgroup$
    – KickAir8p
    Commented Jan 22, 2022 at 1:01
  • 1
    $\begingroup$ @KickAir8p Fair enough, once you're that efficient with console, you probably recognize most nodes. Still, you can save that snippet and just use it to quickly figure out the type(s) of the selected node(s). Or without saving it, if someone googles how to find the node type and finds this thread, he now has a simple instruction to follow to discover it. The snippet also teaches a technique of accessing a context in different area, useful in investigating many other things in Blender. $\endgroup$ Commented Jan 22, 2022 at 9:17
0
$\begingroup$

Drag your mouse from a socket of any node as if you were about to create a new link, but release your mouse away from any socket, when the cursor has a + sign meaning it will add a new node:

Then a popup will appear asking for what node to add and prioritizing nodes/inputs with the same type as the one you're dragging. This priority doesn't matter, however, you can use the search box to find any:

  • Node type
  • Node mode
  • Node socket (only inputs if you're dragging from an output, or only outputs if you're dragging from an input)

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .