Auto Facial Animation - Blink
The Blink node corresponds to the "EyeBlink" morph from the default CC3+ facial morphs.
To create a Blink node, right-click on the empty area of the graph, and select Facial Animation > Facial Block > Blink from the context menu.

You can adjust the frequency, strength, duration, triggered by nth Saccade, and preset curve via the Value nodes to control the animation results.

Defines the time interval between each blink.
It accepts values input from the Vector2 node.

To create a Vector2 node, right-click on the empty area of the graph, and select Value > Vector2 from the context menu.

Specify the value range by defining a low and high value (in seconds) in the node.
For example, if the range is 2 to 4 seconds, each blink will randomly pick a time interval between 2 and 4 seconds for the next blink animation.
Connect the Vector2 node to the Frequency input of the Blink node.

To create a Vector2 node, right-click on the empty area of the graph, and select Value > Vector2 from the context menu.

Specify the value range by defining a low and high value (in seconds) in the node.
For example, if the range is 2 to 4 seconds, each blink will randomly pick a time interval between 2 and 4 seconds for the next blink animation.
Connect the Vector2 node to the Frequency input of the Blink node.
Determines the percentage of eye coverage by the eyelids during each blink.
It accepts values input from the Vector2 node.

To create a Vector2 node, right-click on the empty area of the graph, and select Value > Vector2 from the context menu.

Specify the value range by defining a low and high value (in percentages) in the node, and use the negative values to represent "up" and "left", while the positive values to represent "down" and "right".
For example, if the range is 70% to 100%, each blink will randomly select a value within 70 to 100 as the total coverage of the eyes during blinking. If the randomly generated value is 85%, the eyelid will cover 85% of the eye area during that blink.
Connect the Vector2 node to the Strength input of the Blink node.

To create a Vector2 node, right-click on the empty area of the graph, and select Value > Vector2 from the context menu.

Specify the value range by defining a low and high value (in percentages) in the node, and use the negative values to represent "up" and "left", while the positive values to represent "down" and "right".
For example, if the range is 70% to 100%, each blink will randomly select a value within 70 to 100 as the total coverage of the eyes during blinking. If the randomly generated value is 85%, the eyelid will cover 85% of the eye area during that blink.
Connect the Vector2 node to the Strength input of the Blink node.
Defines the total duration for a single blink.
It accepts values input from the Vector2 node.

To create a Vector2 node, right-click on the empty area of the graph, and select Value > Vector2 from the context menu.

Specify the value range by defining a low and high value (in seconds) in the node.
For example, if the range is 2 to 4 seconds, each blink will take a random time between 2 and 4 seconds to complete the animation.
Connect the Vector2 node to the Duration input of the Blink node.

To create a Vector2 node, right-click on the empty area of the graph, and select Value > Vector2 from the context menu.

Specify the value range by defining a low and high value (in seconds) in the node.
For example, if the range is 2 to 4 seconds, each blink will take a random time between 2 and 4 seconds to complete the animation.
Connect the Vector2 node to the Duration input of the Blink node.
Determines whether to trigger a blink when an eye saccade movement exceeds a specific angle.
It accepts values input from the Float node.

To create a Float node, right-click on the empty area of the graph, and select Value > Float from the context menu.

Set a numeric value (in degrees) with up to two decimal places in the node.
For example, if the value is set to 30 degrees, a blink will be triggered whenever an eye rotation exceeds 30 degrees during a saccade motion.
Connect the Float node to the Triggered by nth Saccade input of the Blink node.

To create a Float node, right-click on the empty area of the graph, and select Value > Float from the context menu.

Set a numeric value (in degrees) with up to two decimal places in the node.
For example, if the value is set to 30 degrees, a blink will be triggered whenever an eye rotation exceeds 30 degrees during a saccade motion.
Connect the Float node to the Triggered by nth Saccade input of the Blink node.
Defines the behavior and timing of animations such as raising or lowering eyebrows.
It accepts an animation curve from the Facial Curve node.

To create a Facial Curve node, right-click on the empty area of the graph, and select Value > Curve > Facial Curve from the context menu.

Select this node, and drag the Bezier curve along the X and Y axes in the Parameters section.

Connect the Facial Curve node to the Curve input of the Blink node.

To create a Facial Curve node, right-click on the empty area of the graph, and select Value > Curve > Facial Curve from the context menu.

Select this node, and drag the Bezier curve along the X and Y axes in the Parameters section.

- X-Axis for Time Distribution: Drag the curve's peak along the X axis to defines the duration distribution of closing and opening eyelids based on the result from Duration.

For example, if the total blink duration is 2 seconds, and the curve's closing-to-opening ratio is 1:2, then the closing time will be 0.66 seconds, and the opening time will be 1.33 seconds. - Y-Axis for Peak Strength Adjustment: Multiplies the result from Strength with the curve's peak value (by dragging along the y-axis) to determine the final blink intensity.

For example, if the blink strength is 0.8 (80%), and the curve peak value is 0.9, then the final blink intensity will be 0.72 (72%).
Connect the Facial Curve node to the Curve input of the Blink node.
In additional to the values input from Facial Curve, you can use Lerp to design the range of random animations.
The Lerp (linear Interpolate) is a mathematical operation node to find an interpolated value between two inputs.
For example, create a Facial Curve Lerp node from the context menu Value > Lerp > Facial Curve Lerp to control the blink animation curve.

The Facial Curve Lerp node provides 2 input ports: min and max for two different facial performing animation curves, input from the Facial Curve node.

It requires a parameter node to control the weight for output blending. You can create one by right-clicking on the empty area of the graph, and selecting Parameter > Create New from the context menu.

Name the new parameter and choose the float type. Click on OK.

Select this node to set a value ranging from 0 to 1 in the Variables section, to perform linear interpolation between the min and max curves. When executed, the Facial Curve Lerp node outputs the interpolated curve based on the parameter value and transmits it to the connected nodes.

For example, create a Facial Curve Lerp node from the context menu Value > Lerp > Facial Curve Lerp to control the blink animation curve.

The Facial Curve Lerp node provides 2 input ports: min and max for two different facial performing animation curves, input from the Facial Curve node.

It requires a parameter node to control the weight for output blending. You can create one by right-clicking on the empty area of the graph, and selecting Parameter > Create New from the context menu.

Name the new parameter and choose the float type. Click on OK.

Select this node to set a value ranging from 0 to 1 in the Variables section, to perform linear interpolation between the min and max curves. When executed, the Facial Curve Lerp node outputs the interpolated curve based on the parameter value and transmits it to the connected nodes.

- If the value is set to 0, it uses the min curve.
- If the value is set to 0.5, it calculates the average of the min and max curves and outputs the result.
- If the value is set to 1, it uses the max curve.
Make sure that the data are properly input in the Value nodes, before linking the Blink node to the root Auto Facial Animation node.