Skip to content

Add support for per-point opacity in (RVPaint) strokes #956

@pjurkas

Description

@pjurkas

OpenRV currently supports variable stroke width in RVPaint nodes, where each point in a stroke can have a distinct width value. It would be very useful to extend this capability to include per-point opacity, allowing artists or tools to create strokes with varying transparency along their length.

Current Behavior

A stroke definition such as the following allows different widths per point, but opacity (alpha) must currently be uniform for the entire stroke via the color’s alpha channel:

sourceGroup000000_paint : RVPaint (3)
{
    paint
    {
        int nextId = 1
    }

    "frame:1001"
    {
        string order = "pen:1:1001:pjurkas"
    }

    "pen:1:1001:pjurkas"
    {
        int mode = 0
        string brush = "circle"
        float[4] color = [ [ 0 1 0 1 ] ]
        float width = [ 0.01 0.02 0.03 ]
        float[2] points = [ [ -0.25 -0.25 ] [ 0.25 -0.25 ] [ 0.25 0.25 ] ]
    }
}

Proposed Enhancement

Introduce an additional opacity parameter similar to width parameter. The opacity parameter could be handled similarly to width, interpolated between stroke points and multiplied with the alpha component of the base color at render time. For example:

float opacity = [ 0.5 0.8 1.0 ]

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions