Extend & Automate
Live2D Cubism

There's a lot of automation that can happen that isn't a replacement of humans, but of mind-numbing behavior.

— Stewart Butterfield

PluginSnippet.java
@Override
public float beforeSetParameterValue(final Parameter parameter, float value) {
    if ("ParamMouthOpen".equals(parameter.id().value())) {
        return value > 1f ? 1f : Math.max(0f, value);
    }
    return value;
}

public void demo(PluginContext context) {
    var model = context.cubism().activeModel().orElseThrow();
    var mouth = model.parameters().findById("ParamMouthOpen").orElseThrow();
    float next = mouth.getValue() > 0.5f ? 0f : 1f;
    mouth.setValue(next);
    model.update();
    context.logger().info("Turboism value -> " + next);
}