Node material editor ColorMerger single rgb connector for float value

I find myself connecting a single float value to the r, and g and b connectors.
I seem to be doing this a lot.
Would be nice to have one yellow rgb connector where you feed in one float value but it assigns that value to all three color parameters.

It also will reduce the visual noise in the diagram so that instead of having three paths it’s only one.
Its not a huge deal but would be a nice productivity item.

1 Like

No problem for me. Let me simply get @PatrickRyan validation but I think we could add a new input on the ColorMerger (and the vectorMerger). Something like ‘default’ that will be the default value for unplugged inputs

1 Like

@Deltakosh, what I remember of the discussions we had around NME vNext was that we would create a shortcut to wire a single output to multiple inputs. There are two ways we could accomplish this:

  1. Click an output and while dragging, hold the alt key and if we hover over an input that is one channel of a multi-channel block (Vec2, Vec3, Vec4, etc) we auto wire that output node to each available channel that is not already wired with something. This does create one challenge in that if you are wiring to a VectorMerger or a Color4, you may only want to wire to X, Y, and Z but not W which means you will wire with one click drag and then need to select/delete the unwanted connection. We should also respect already wired inputs so if the user wants to wire one value to R and G but not B of a Color3 they could wire the B input first and then use the shortcut to wire R and G but we would skip B since it’s wired. We would also make the rule that we automatically overwrite any previous connections, but that may feel broken.
  2. The other method, and the one I think I am leaning more towards would be similar to the first, would require a couple more mouse clicks, but ultimately would save on dragging wires and the complexities around which channels we automatically wire to. This version would start the same, begin dragging a wire and press alt. When we release the mouse button, we continue to hold alt and then the interaction model changes slightly:
    a. We connect the wire to the input the cursor was hovering over when the mouse button was released.
    b. The cursor will then be attached to the original output with a new wire and the user can then hover over another input and click the left mouse button to make a new wired connection.
    c. So long as the alt key is held down the cursor stays in this alternate mode to wire through a click rather than a click and drag and we reduce the movement of the mouse. This also prevents needing to come up with a logical ruleset for auto connections that still allows for customization without penalizing the user with extra actions for more complex connections.

In terms of cleaning up the graph, we can make use of elbows to eliminate some wires. If one node wires to multiple inputs on another node, we can look at the distance between them in the graph and if over a certain distance, we can drop an elbow right next to the destination node so there is a single wire from the originating node to the elbow and multiple connections from the elbow to the destination node.

This also helps by keeping the graph readable since having a single “generic” input that would wire multiple channels behind the scenes would put the onus on the viewer to determine what is being wired. It’s not a huge amount of extra mental context, but it is context that needs to be interpreted based on the viewer’s understanding of how the tool works.

I worry about users who are new to NME, Babylon, or shaders in general being able to easily grok the difference between a wire to a channel input and a wire to a general input that represents multiple channels.

Well I am kinda new’ish to both and there are some design decisions already made on NME that has caused me issues. One for example is the lerp node instead of mix. Since I have started to use NME i just assumed there was no mix and that add was a close proximity. Just found out a couple days ago that lerp is basically mix but with more flexibility (positional use …).

Having said that, I have written some basic shaders before and some commands like creating vectors with a single parameter is a very convenient way of working.

From a design perspective there are things you can do on the node to indicate that since you have defined the “default” the other related nodes are no longer applicable.
Considering how neat your designs are in the first place I am sure you hare hiding a designer somewhere.

Is there a design solution to solve usability issues?
If you do add a feature to allow a more convenient work flow, the biggest request I can make is just make it discoverable. That is why I personally l like a single input that sets all the values.

  1. it’s nothing extra to do, just a single action
  2. it’s visual and easily discoverable
  3. you can add tooltips or info for in UI discovery

Another idea I just had is perhaps you can have a input on color3 and vector nodes that takes a single float. and that way you can combine the colors nice and easy?

I’m not hiding anywhere. I’m right here in plain sight. :smiley: We will dig more into your suggestions here. We have some new feature work that uses a node graph and are using that impetus to made changes and improvements to node graphs as a whole in Babylon. We definitely want to make things more obvious and want to bring more quality-of-life improvements to the UX. We are just starting the design work for updating our node graphs, so this will be a longer term 6.0 delivery.

2 Likes

Since the built-in solution won’t be ready for awhile, I tried out your idea for a vector constructing block with just one input. And I like how small and simple the blocks are on the graph. :slight_smile:

If you want to try them out you can save the json files and then add them to the NME below the custom frames (also here’s the doc on custom blocks for more info) :

FloatToVector2.json
FloatToVector3.json
FloatToVector4.json

Thanks m8.
I think custom blocks might solve some of my other problems I have soooo, I will definitely be using your kind gift :slight_smile: but I definitely going to make some of my own, whaaahahaha :slight_smile:

1 Like