• Hi Guest!

    We have posted a new VaM2 dev log on Patreon, starting a monthly cadence of written progress updates between Beta releases. Highlights include the new Gizmos System, Selection Carousel, and Modes System with Context-Specific Editing. Beta1.2 is 15 of 21 items complete.

    Read the full post on Patreon, or follow progress on the public Trello roadmap.
HairColorProvider

Plugins + Scripts HairColorProvider

Download [<1 MB]
Recently, I tried to create some hairstyles. When adjusting the hair color, I found that only multiple colors could be used and many beautiful effects couldn't be achieved. So I made this plugin to allow the VAM hair to be dyed freely.



What is HairColorProvider?
Overall, this is a color management plugin for hair, allowing you to easily dye the hair strands based on the hair node. It can be loaded onto the character atom or the hair can be hung on it.
。 When attached to a character, it can uniformly adjust the dyeing scheme of all hair, save the default hair value and color value. When attached to the default hair, it follows the default hair color value, and is automatically applied upon loading (the principle is somewhat similar to the clothing plugin, which I will explain later).
The plugin offers a variety of coloring modes and blending modes, including two-color gradient, list gradient, and image texture coloring. It also supports setting a rainbow effect (colors will automatically change at different angles). Mask adjustment is also supported. You can color as you please.


QuickStart
  1. Add plugins to the character atoms and load the HairColorProvider.cslist.
  2. Or attach the plugin to the hair. Please refer to the article tutorial "Hair Plugin" for details. https://hub.virtamate.com/resources/hair-plugins.45664/
  3. Select the item you want to edit from the Hairtab.
  4. Adjust the coloring effect using other tabs
  5. Hair tab saves default color or maps default map
  6. The saved colors and mapping presets will be saved in the \Saves\hcp directory.


πŸ’‘This plugin utilizes certain unexposed underlying interfaces in VaM, which may cause problems. You are welcome to report any feedback to me on the Hub.

A simple demonstration video




Detailed description of the function: When the mouse hovers over the button, a tip will pop up.
Thanks to the tooltps tool provided by Skynet.


HairColorProvider Button & Control Guide​

Overview​

HairColorProvider is a VAM hair coloring plugin organized into 5 tabs:

TabPurpose
HairSelect hair, load/save presets, batch mappings
ColorThree coloring modes: RootTip / List / Texture
ShaderSpecular, diffuse, Fresnel, IBL and other shader params
IridThin-film iridescence β€” view-dependent rainbow sheen
MaskBlend between original color and plugin color

General Workflow​

  1. Hair Tab β†’ Refresh to scan scene β†’ check the hair items you want to edit
  2. Color / Shader / Irid / Mask β†’ tune the look
  3. Save Color Preset β†’ store the full effect under a name
  4. With multiple hair items, assign each β†’ Preset, then Save Mapping
  5. Next session β†’ Load Mapping + Apply All to restore everything

Hair Tab​

1.png


Show Tooltips (toggle)​

  • Function: global on/off for the tooltip popups
  • Default: on
  • Note: only shown in this tab; once disabled, no tab shows tooltips

Color Presets​

Load Color Preset β€” Button (teal)

  • File dialog; loads a JSON preset and applies it to all checked hair
Save Color Preset β€” Button (purple)

  • Saves the first checked hair's full Color/Shader/Irid/Mask state as a named preset
  • Default filename like preset_yyyyMMdd_HHmmss
Quick Color Preset β€” Chooser

  • Apply a preset directly without a file dialog
  • Note: click Load Lists first to populate it
Load Lists β€” Button

  • Scans the preset folder and refreshes both Quick dropdowns

Mapping​

Load Mapping β€” Button (teal)

  • Loads a mapping file: which preset is assigned to each hair
Save Mapping β€” Button (purple)

  • Saves the current per-hair β†’ Preset assignments
Quick Mapping β€” Chooser

  • Apply a mapping directly
  • Note: click Load Lists first
Apply All β€” Button (green)

  • Applies each hair's assigned preset from the current mapping

Hair List​

Refresh β€” Button

  • Re-scans DAZHairMesh in the scene and rebuilds the list
Select All / Deselect All β€” Buttons

  • Check / uncheck every hair entry
Invert β€” Button

  • Flip the current selection state

Per-Hair Row​

Each hair shows two rows:

[Hair Name] Toggle β€” Checkbox

  • Checked = applies current Color/Shader/Irid/Mask to this hair
  • Unchecked = restores original color or assigned preset
β†’ Preset β€” Chooser

  • Assign one preset to this hair only
  • Applies immediately on selection and exits edit mode
  • < none > means no assignment

Color Tab​

Color Mode (chooser)​

  • RootTip: simple two-color gradient (easiest)
  • List: multi-stop gradient editor (free-form)
  • Texture: PNG mapping (X = strand index, Y = root β†’ tip)

Shared HSBC Sliders (all modes)​

Hue Shift β€” Slider -180~180, default 0

  • Rotates all colors on the hue wheel; positive = warmer, negative = cooler
Saturation β€” Slider -1~1, default 0

  • Adds/removes saturation
Brightness β€” Slider -1~1, default 0

  • Adds/subtracts lightness in HSV space
Contrast β€” Slider 0~2, default 1

  • Scales brightness around midpoint; >1 boosts contrast, <1 flattens

RootTip Mode​



Color Rolloff β€” Slider 0~5, default 1

  • Root-to-tip transition curve; 1 = linear, higher = bias change toward the tip
Root Color / Tip Color β€” Color picker

  • Color at the scalp / at the tip

List Mode​

3.png


[Gradient bar] β€” Custom widget

  • Click empty area to add a stop / drag a stop to move it / select then edit color below
Delete Selected Stop β€” Button (burgundy)

  • Removes the currently selected stop
Reset to 2 Stops β€” Button (burgundy)

  • Clears all stops, restores a simple 2-color gradient
Samples β€” Slider 2~64 integer, default 16

  • Color sample points per strand; more = smoother, slight GPU cost
Selected Stop Color β€” Color picker

  • Color of the currently selected stop
Load Image as Gradient β€” Button (teal)

  • Samples N colors from an image's Y axis to build a gradient
Image Sample Points β€” Slider 2~16 integer

  • Number of stops to extract from the image

Texture Mode​

4.png


Load Texture β€” Button (teal)

  • Loads a PNG/JPG as the color map; X = strand index, Y = root β†’ tip
Restore Original β€” Button (burgundy)

  • Removes the loaded texture and restores original color

Tiling / Offset​

Tiling (along strand) β€” Slider 0.1~8, default 1

  • Times the gradient repeats along each strand (List + Texture modes)
Offset (along strand) β€” Slider -1~1

  • Shifts the gradient start along the strand
Tiling X (across strands) / Offset X β€” Sliders (Texture only)

  • Horizontal repetition / shift across strands

Shader Tab​

5.png


Primary Specular β€” Slider 0~200

  • Main highlight intensity (the central bright band)
Secondary Specular β€” Slider 0~200

  • Secondary highlight (softer, offset band)
Specular Shift β€” Slider -0.5~0.5

  • Highlight position offset along the strand; small positive simulates cuticle angle
Diffuse β€” Slider 0~2

  • Base diffuse reflection strength
Fresnel Power β€” Slider 0~30

  • Edge falloff sharpness; higher concentrates rim glow at grazing angles
Fresnel Attenuation β€” Slider 0~3

  • Rim overall multiplier; 0 = no rim glow
IBL Factor β€” Slider 0~2

  • Environment cubemap reflection contribution
Rand Color Power β€” Slider 0~3

  • Per-strand random color variation strength
Rand Color Offset β€” Slider -1~1

  • Bias the random variation brighter / darker
Specular Intensity (HDR) β€” Slider 0~5

  • Master highlight gain; >1 enters HDR range and can trigger bloom
Specular Color β€” Color picker

  • Highlight tint; white = natural, tinted = colored sheen
Reset to Original β€” Button (burgundy)

  • Restores all shader params to the hair asset's defaults

Irid Tab​

6.png


Toggles​

Enable Thin-Film Iridescence β€” Toggle

  • Master switch. When off, all rainbow params hide.
Apply to Diffuse (per-strand multi-color) β€” Toggle

  • Off = rainbow only on the highlight (subtle)
  • On = each strand's hue shifts with the view angle (multi-color hair)
  • Note: forced off in Texture color mode (to preserve texture colors)

Color Parameters​

Color Frequency (Film Thickness) β€” Slider 50~2000 nm

  • Film thickness; drives band density. Thicker = more fringe orders
Color Phase (Refractive Index n2) β€” Slider 1.0~4.0

  • Refractive index; shifts the entire hue spectrum
Color Strength (Saturation) β€” Slider 0~2, default 1

  • 0 = none, 1 = natural, 2 = vivid
Color Tint β€” Color picker

  • Overall rainbow filter; white = original

Morphology​

Peak View Angle β€” Slider 0~90 degrees

  • Angle at which iridescence peaks; 0 = head-on, 90 = grazing
Fringe Width (Sharpness) β€” Slider 0.1~8

  • Band sharpness; low = wide soft, high = narrow crisp

Intensity​

Min Visibility (F0) β€” Slider 0~0.8

  • Floor visibility at off-peak angles; 0 = only visible at peak angle
Intensity β€” Slider 0~2

  • Master multiplier

Mask Tab​

Mask Mode (chooser)​

  • None: full plugin color, no blending
  • Slider: independent root/tip blend factors
  • Texture: grayscale image controls per-pixel blend

Slider Mode​

8.png


Root Blend (0=orig, 1=plugin) β€” Slider 0~1

  • Blend at the root: 0 = original, 1 = plugin color
Tip Blend (0=orig, 1=plugin) β€” Slider 0~1

  • Blend at the tip

Shared (Slider + Texture)​

Sharpness β€” Slider 1~20

  • Transition softness rootβ†’tip; 1 = smooth, 20 = hard edge
Tiling (along strand) β€” Slider 0.1~8

  • Mask repetitions along the strand
Offset (along strand) β€” Slider -1~1

  • Shift mask along the strand

Texture Mode​

7.png


Load Mask Texture β€” Button (teal)

  • Loads a grayscale PNG; white = plugin color, black = original
Tiling X / Offset X β€” Sliders (Texture only)

  • Horizontal repetition / shift
Images and attachments
  • 2.png
    2.png
    123.6 KB · Views: 0
React to this content...

Share this resource

More resources from lulu_c137

Latest reviews

Positive
Version: 1.0
Thanks, you just saved me about 9 million clicks and about 4 billion copy paste actions
Upvote 0
Back
Top Bottom