Howdy, Stranger!

It looks like you're new here. Sign in or register to get started.

If you have any questions, reports, suggestions, or requests about Live2D, please send them to this forum.
※We cannot guarantee statements or answers from Live2D staff. Thank you for your understanding in advance.
 
Live2D Cubism
Cubism Products and Downloads
Cubism product manuals and tutorials
Cubism Editor Manual    Cubism Editor Tutorial    Cubism SDK Manual    Cubism SDK Tutorial
[Notice of Holidays]
Please note that our staff will not be available from 2024/Dec/28 - 2025/Jan/5 JST.
The Live2D Creators Forum will remain open during the holidays.
Submissions that require a response will be answered after we reopen for business.
Please note that it will take longer than usual to respond to your request.

Manipulating L2DEyeBlink.cs

edited December 2023 in Help
Hello,
Using the Simple.cs script, I was trying to create a L2DViewer like parameter list for integrating into Fungus.

The problem is that because the L2DEyeBlink script also uses the parameters of "PARAM_EYE_L_OPEN" and "PARAM_EYE_R_OPEN", only the latest function would only activate, limiting me to either have a nomal blinking or a steady stare.

e.g: this code would only display a blinking character without eye open control, putting the eyeBlink.setParam on top in turn would display a staring character but with eye open control.



I then went into the L2DEyeBlink script and noticed the function for the blink is :

public void updateParam(ALive2DModel model)
{


long time = UtSystem.getUserTimeMSec();
float eyeParamValue;
float t = 0;

switch (this.eyeState)
{
case EYE_STATE.STATE_CLOSING:

t = (time - stateStartTime) / (float)closingMotionMsec;
if (t >= 1)
{
t = 1;
this.eyeState = EYE_STATE.STATE_CLOSED;
this.stateStartTime = time;
}
eyeParamValue = 1 - t;
break;
case EYE_STATE.STATE_CLOSED:
t = (time - stateStartTime) / (float)closedMotionMsec;
if (t >= 1)
{
this.eyeState = EYE_STATE.STATE_OPENING;
this.stateStartTime = time;
}
eyeParamValue = 0;
break;
case EYE_STATE.STATE_OPENING:
t = (time - stateStartTime) / (float)openingMotionMsec;
if (t >= 1)
{
t = 1;
this.eyeState = EYE_STATE.STATE_INTERVAL;
this.nextBlinkTime = calcNextBlink();
}
eyeParamValue = t;
break;
case EYE_STATE.STATE_INTERVAL:
//
if (this.nextBlinkTime < time)
{
this.eyeState = EYE_STATE.STATE_CLOSING;
this.stateStartTime = time;
}
eyeParamValue = 1;
break;
case EYE_STATE.STATE_FIRST:
default:
this.eyeState = EYE_STATE.STATE_INTERVAL;
this.nextBlinkTime = calcNextBlink();
eyeParamValue = 1;
break;
}
The solution here was to change the 1's into the variable that holds the eyeopen value in my original script ( (float) (ea) ) in order to become the upper bound for blinking.
The problem is, the system does not allow me to execute a getComponent within this function so I could not send over the value.
Is there any way I could pass it into the function?

Comments

Sign In or Register to comment.