Blueprint Extension: Hide Unrelated Nodes
February 13, 2019
*** UPDATE: Hide Unrelated Nodes was added to the editor in UE4.23 ***
Very often we, and many others who work in UE4, come across massive blueprints containing large numbers of multiply interconnected nodes. It can be extremely difficult figuring out what the logic in these blueprints is supposed to be doing. Of course, the best option is to not let your blueprints get like this in the first place… but we’ll gloss over that for the moment!
Currently the only feature in the editor that can help with deconvoluting complex blueprint graphs is where individual wires can be highlighted by hovering the mouse over them. However, this still does not provide any clear information on the execution chain(s), connections and / or inputs related to our nodes of interest.
The image below is a partial screenshot of ‘MF_OrionCharacterAO’, a material blueprint from one of the free UE4 character packs. As you can see, it has large numbers of nodes and curved execution links. As a result it is almost impossible to determine which sections of the blueprint affect the output BaseColor or Specular nodes.
We set out to fix this issue by adding a feature to the material editor. This addition helps to clarify complex blueprints by allowing highlighting of single execution chains. Clicking on a node will dim all the rest of the nodes in the graph, except those linked to the user’s selection… with this it becomes considerably easier to view and / or edit only the nodes related to that current selection.
If you integrate the changes given in the pull request below (or poke a coder to do it if you’re a more designer/artist type person!) you’ll see the “Hide Unrelated” option appear in the Material Editor. The feature is toggled by this button:-
As shown in the image below there are a number of preferences which can be set by the user. This drop-down menu is available via the arrow located to the right hand side of the “Hide Unrelated” button.
The three options available are:
- Node Opacity: This slider controls the opacity of the remaining faded out nodes and wires in the blueprint.
- Lock Node State: Checking this box will freeze the node highlighting in the current state. This allows editing of the currently focused nodes without switching the focus to newly selected nodes.
- Focus Whole Chain: Enabling this option highlights all nodes in the direct execution chain that the selected node is part of, along with all nodes connected to that execution chain. The two pictures below show the difference between unchecking and checking this box more clearly.
The same pull request implements an identical feature for the blueprint editor. The UI and functions are exactly the same as those described for the material editor except that there is no “Focus Whole Chain” checkbox in the drop-down menu.
Under the hood, however, there are some changes as the rules used by the blueprint editor to hide unrelated nodes are different. In a blueprint graph there are two types of node: the pure node, which doesn’t have an execution pin (white arrow pin), and the impure node, which does.
As shown below, If a pure node is selected, all direct input and outputs of the selected node will be highlighted up until an impure node is reached.
The following images demonstrate the behaviour when selecting an impure node. The nodes belonging to the same execution chain as the selection will be highlighted, along with any inputs to that selection. From a technical perspective the execution chain nodes and the variable input nodes are searched out and recorded separately.
As we’ve hopefully illustrated to you above, the Hide Unrelated Nodes feature considerably simplifies working with complex materials and blueprints. Removing the distraction of nodes unrelated to those you are currently working on really helps with tracking the logic chains. Though, even with this feature, some blueprints are beyond saving… https://blueprintsfromhell.tumblr.com/ ….
Credit(s): Yuchen Mei (Coconut Lizard)
Status: Added in UE4.23
Github Pull: https://github.com/EpicGames/UnrealEngine/pull/5547