Skip to content

Vector Source ​

Loads an SVG file and emits its paths as native Caddis geometry, preserving per-path fill / stroke colors, stroke widths, layer names, and z-order.

Category: Source Menu path: Source > Vector Source

Ports ​

PortTypeDirectionDescription
outshapeoutputMulti-path Shape with one Caddis Path per SVG sub-path. Each path carries the SVG element's color/stroke attributes.

Parameters ​

ParamTypeDefaultDescription
pathstring""File path to the SVG. Browse via the … button or drop an .svg from the Assets panel.
originModeenumCenterCenter puts the SVG's viewBox center at (0, 0) — matches Caddis's parametric primitives. TopLeft keeps SVG's native top-left frame.
scalescalar1.0Uniform scale applied to all geometry post-parse. Useful when an icon was authored at 24px but you want it at 200px without inserting a Transform2D.
overrideColorsbooleanfalseWhen ON, strips per-path fill / stroke / strokeWidth attributes so DrawShape's uniform params drive rendering. Useful for "treat this SVG as line art and recolor" workflows. OFF preserves the original SVG colors per path.

Expose Channels ​

When enabled (E button on node header), adds input ports that override params via edge connections:

PortTypeOverrides
scale_inscalarscale

How It Works ​

usvg parses the SVG into a fully-resolved tree (CSS applied, references inlined, transforms baked, basic shapes converted to paths). VectorSource walks that tree, emits one Caddis Path per SVG sub-path (each M… starts a new sub-path), and copies the per-element fill/stroke styling onto each path as attributes. Group transforms are baked into per-vertex coordinates so a circle inside a translate(50,50) scale(2) group lands where you expect.

Per-path attributes emitted (read by DrawShape's grouped renderer):

  • color — fill color (RGBA, linear-light). Includes element + fill opacity.
  • strokeColor — stroke color, distinct from fill.
  • strokeWidth — stroke width × the geometric mean of the path's transform scale (so strokes survive group scaling).
  • name — SVG element id, prefixed with the group hierarchy (e.g. "logo/icon/leaf").

A typical layer: VectorSource → Transform2D → DrawShape → Output. Drop an SVG asset onto the timeline and this chain is built automatically.

Usage Examples ​

Export the logo as SVG from your design tool. Drop the .svg onto the Assets panel (or drag straight to the timeline). The new layer renders pixel-accurate solid fills/strokes, preserves layer names, and is fully composable with the rest of the graph (animate the Transform2D, blur it, mask it, etc.).

Animate per-path attributes ​

Wire VectorSource → ShapeAttributes → DrawShape and use ShapeAttributes to override color or opacity per path — driven by a Math node, a Field, or whatever else. The original SVG fill is the starting point; ShapeAttributes layers over it.

Tweak vertices in Edit mode ​

Wire VectorSource → EditableShape → Transform2D → DrawShape. EditableShape auto-switches to Edit mode and lets you drag any vertex while keeping the SVG topology + colors intact.

Explode Actions ​

Two one-click actions in the VectorSource Properties panel split the SVG into separately-animatable pieces (a "piece" = one SVG <path> element / one fill region):

  • Explode Geometry — produces VectorSource → [N ShapeExploders] → MergeShapes → existing DrawShape. All pieces share the layer's DrawShape styling but can be transformed independently (insert a Transform2D between any ShapeExploder and the merge to animate that piece). Best for "animate the position of each letter, render with one consistent look."
  • Explode Render — produces VectorSource → [N (ShapeExploder → Transform2D → DrawShape)] → multi-input Merge → Output. Each piece gets its own full render stack — independent fill, stroke, opacity, filter. Best for "each letter gets a different gradient / drop shadow / blur."

Both actions create the entire chain in one undo entry. The button is disabled when fewer than 2 pieces are detected (single-path SVGs don't need explosion).

Tips ​

  • File is re-read on every render call; large or complex SVGs (hundreds of paths) may add visible overhead. Will add mtime-aware caching if it shows up in profiles.
  • Origin mode is a hint — once you wire a Transform2D, you have full control over position, scale, and rotation regardless.
  • Path order matches the SVG's render order, so DrawShape's grouped renderer paints them in the same z-order.
  • Edit the SVG file in any vector editor while the project is open — VectorSource doesn't auto-reload yet, but re-rendering the comp picks up the new file.

v1 Limitations (planned for follow-up) ​

  • Gradient fills (linear / radial) fall back to the first stop's color. Future Phase 2: auto-generate Gradient nodes wired into fill_source per path.
  • <text> elements are dropped unless your SVG export already flattens text to outlines (most design tools have an "outline text" option on export).
  • <image> embeds are skipped — use a separate ImageSource.
  • Filters / clipPaths / masks are skipped; author equivalents in Caddis's effect chain.
  • Pattern fills become transparent.
  • fill-rule is per-element in SVG but Caddis's FillRule is currently shape-wide; mixed even-odd / non-zero in a single SVG falls back to non-zero.
  • EditableShape — wire after VectorSource to tweak vertices while preserving SVG fidelity (use Edit mode).
  • ShapeAttributes — override per-path color/opacity/strokeWidth, driven by fields or values.
  • Transform2D — position, scale, rotate the imported shape.
  • DrawShape — rasterizes the multi-path output with per-path fill + stroke.
  • ImageSource — for raster images.