Unreal Engine HSV Color Selector tutorial

Velomous

Member
Jan 14, 2024
140
94
This wasn't originally supposed to be a tutorial, more like i did something cool and I wanted to brag :KEK: but I decided to make it a proper tutorial. Anyhow below gif shows what i'm talking about. A HSV selection UI component that works as you'd expect it to.
160724-155632.gif
Here's the material I used for the hue slider and the saturation/value gradient, it was the only truly tricky part imo:
24-07-85.png
(The output of either path can be plugged into the final/base color, i plug them into a switch so i can switch between them).

for your copy paste convenience.

Make sure the material domain for the material is set to user interface.

Now it's a matter of making the widget, this is not a tutorial to learn how to use widgets so you'll need to figure out the intricacies on your own but it's not complicated.

First off make a regular slider with these settings (pay special attention to the default value, min/max value and the bar image setting, it can be a material instance instead of the base material btw):
24-07-93.png

Then create an image widget for the box. (Make sure the ZOrder is 0 and that the image you use is a material instance, not the base material).
24-07-94.png
Finally create a synth2dslider widget for the selection of the saturation and value (it needs to match the image 1:1 in size and position, and the ZOrder must be higher than the image (e.g. 1) and it's background needs to be transparent so you can see the gradient):
24-07-95.png

Then go to the event graph for the widget (upper right hand corner has a button to switch between designer and graph) and create this function to set the S&V Gradient's Hue. 24-07-96.png
Then in the widget's main event graph, set it up like this: (pre-construction you're telling the image widget to use the S&V gradient instead of the hue gradient and initializing it's hue to 0. then on value change for the hue slider, you are updating the hue of the S&V gradient.)
24-07-97.png

Now you're basically done, after this you just gotta actually apply these settings to actors. So here is an example of a material that can take in HSV values (take special note of the custom primitive data! it's what allows you to edit these values from BP on the cheap).
24-07-98.png
Here is the blueprint for an actor that's just a static mesh with a plane with aforementioned material and the widget we created in it:
24-07-99.png
And the update color function at the end:
24-07-100.png

And this should be the result:
180724-112123.gif
Note: You need widget interaction on your player character/freecam actor inorder to be able to interact with widgets that aren't plastered to your UI:

Btw running the code to set the color in the actor's event tick is disgustingly inefficient and I cannot recommend doing it that way in a real project, but at least it works for demonstration purposes.
 
Last edited: