Nubu
  • Features
  • How it works
  • Pricing
  • Integrations
  • FAQ
  • Contact
  • Docs
  • Blog
  • Log in
  • Log inSign up
    Nubu

    Creative automation for teams that ship campaigns, not busywork.

    Try for free
    Product
    FeaturesNubu MotionHow it worksPricingIntegrationsFAQ
    Company
    AboutContactDocsBlogLog in
    Legal
    Privacy policyTerms of serviceData deletion
    © 2026 Bear Studios · Nubu
    Introduction
    Templates overviewInstalling Nubu BuilderAdding template compsAdding propertiesAdding footageSetting defaultsExporting your templateUploading a template
    Flows overviewAvailable nodesAdding a nodeConnecting nodesWorking with dataTemplates and outputsUsing AI nodesBuilding a creative
    CampaignsTemplatesAssetsGlossariesRendersSettings
    Connecting Meta AdsConnecting Google AdsConnecting OpenAIConnecting Gemini AI StudioConnecting Anthropic
    AI Assistant overviewPrompt examplesAssistant settings and controls
    Nubu Motion scripts: the reference
    OverviewQuick startDifferences from After EffectsDeterminism
    JavaScript supportReferences and idsProject scriptsState and timeBudgets and errorsFormatting values
    GlobalTime conversionInterpolationVector mathsRandom and noiseColour conversionOther maths
    LayerCompPropertyKeyframePathGeometryProjectComponentConsoleComponentControlExpressionControl
    The property vocabularyAnimators propertiesAudio propertiesContent propertiesContents propertiesEffects propertiesExpression controls propertiesFills propertiesInstance controls propertiesLayer propertiesLayout propertiesMasks propertiesStrokes propertiesText style propertiesRig propertiesRigging propertiesRig controllers propertiesRigging weights propertiesRigging mesh propertiesRig items propertiesRig splines propertiesRig simulation propertiesRig properties propertiesRig drivers propertiesRig draw order propertiesTransform propertiesTrim path properties
    Error codesBudgets
    Changelog
    All docs
    Motion Scripting
    / Properties

    Rig drivers properties

    A rig layer's driver influences by driver id: how much of each driver's mapping lands on its targets, from nothing at 0 to whole at 100.

    The rig drivers family: a rig layer's driver influences - the weight of each driver's writes, percent (0..100), addressed by driver id. A driver maps its inputs through a range, a curve and its conditions onto its targets (or blends its placed poses); the influence scales the result - at 0 the driver writes nothing, at 100 it writes whole, and in between its targets lerp from their own value toward the driver's. Every pattern reads, keyframes AND drives: a script fading a driver's influence hands its targets back to their own keys over time.

    Every pattern below is readable from scripts through prop() and layer.prop(); ids in a pattern (like <effect_id>) stand for the entity's real id. Every pattern here is in the drive set: scripts may WRITE each one with set() or a single-output return, per frame.

    PatternWire kindUnitsReadsWrites
    rig.drivers.<driver_id>.influencescalarpercent (0..100)yesdrive set

    Worked examples#

    A rig layer's DRIVERS map inputs onto targets (RIG-W4 POSE): each reads its input keys through a range, a curve and its conditions and writes its output keys (or blends its placed poses), and rig.drivers.<driver_id>.influence - percent (0..100) - scales what it writes: at 100 the driver writes whole, at 0 nothing, and in between its targets lerp from their own value toward the driver's. The influence reads, keyframes AND drives; the driver's other members (inputs, outputs, curve, conditions, placements) are statics that change through the driver commands.

    Worked example: Fade the wrist driver out#

    The scene. A Stage comp with a one-bone Wrist rig at (320, 180) - the Hand bone heading right for 100 px - carrying a Wave slider property (0..1, resting at 1) and a Wave to wrist driver that maps the slider onto the Hand's rotation, -30 to 30 degrees; and a Paddle solid rigidly bound to the Hand, so the bone's driven turn swings it about the wrist.

    • The comp Stage: 640 by 360 at 25 fps, 100 frames (4 seconds).
    • Wrist: a rig layer, at [320, 180].
      • The skeleton: Hand (bone_1, a root) from [0, 0] at 0 degrees for 100 px.
      • The properties: Wave (slide_1, a slider from 0 to 1, resting at 1).
      • The drivers: Wave to wrist (driver_1): rig.properties.slide_1.value 0..1 onto rig.bones.bone_1.rotation -30..30.
    • Paddle: a solid layer, at [320, 180], 100 by 40, filled #4d9de0.
      • The rigging stack: rigging_1 - a rigid binding to the Wrist rig's Hand.

    The script. Add a project script named Driver fade and paste:

    export const outputs = ["layer_1:rig.drivers.driver_1.influence"];
    
    export function frame() {
      return linear(time, 0, 2, 100, 0);
    }
    

    Line by line:

    • Line 1: One output: the INFLUENCE of the Wrist rig's Wave to wrist driver. rig.drivers.<driver_id>.influence is a percent - at 100 the driver's writes land whole (the Wave slider at 1 turns the Hand 30 degrees), at 0 it writes nothing and the Hand keeps its own rotation (0 degrees, level).
    • Line 4: linear() maps the first two seconds onto 100 down to 0 and holds 0 after that: the Hand's rotation lerps from the driver's 30 degrees toward its own 0 as the influence fades, so the Paddle settles from its clockwise turn to level over two seconds. The value must stay inside 0..100 - a script that returns 140 refuses with type_mismatch, never a clamp.

    What you see. The Paddle starts turned 30 degrees clockwise (the driver at full influence) and settles to level over two seconds, then holds - at one second the influence reads 50 (the Paddle at 15 degrees), from two seconds on it reads 0.

    The Paddle starts turned 30 degrees clockwise (the driver at full influence) and settles to level over two seconds, then holds - at one second the influence reads 50 (the Paddle at 15 degrees), from two seconds on it reads 0.