Skip to content

Changelog

v1.0.0 — Public release

The first public release of Octo Vector Bridge — the line-art bridge between Blender, Maya, and Toon Boom Harmony.

Highlights

  • 3D line art → native Harmony pencils — Blender (Grease Pencil or Pencil+) and Maya (Pencil+) strokes become editable Harmony vector pencil lines, camera-accurate and frame by frame.
  • Variable width preserved — real per-point pressure from Grease Pencil; for Pencil+, the flattened EPS width and colour are reconstructed by sampling the raster render. WYSIWYG: what the Previewer shows is what lands.
  • Subartlayers — one export output becomes one track stacked inside a Harmony art layer. Several subartlayers can share an art layer (they become its stack, in list order) or spread across Line Art / Colour Art / Overlay / Underlay. On disk each is a numbered NN_ subfolder; the numbering is stable, and an opt-in Clean Art Folders removes stale ones.
  • Export (Harmony → SVG / PDF / AI) — the bridge runs both ways. A button beside the importer exports a Read node's vector art — all four art layers, exact per-point thickness, real colours and alpha — to SVG (keeps the pressure for round-trip), PDF or AI. Reads the drawing, not the render, so rigs and effects never turn it black. Bitmap art layers are shown greyed with the reason; PDF/AI carry a standing note that they draw one width per line. Blender and Maya gain the AI container too.
  • The Structure tree — one tree of drawings → art layers → passes, authored in Blender or Maya and read back by the Harmony importer as the same tree. It is the folder layout on disk: reorder with the arrows or by drag, and the position becomes the NN_ stack index.
  • Bitmap passes — a pass can produce a PNG sequence as well as vectors: a Blender Render Pass or Compositor node, or a Maya Materials render (any renderer, with its Render Layer and AOV). Lines and renders land in the same drawing, on different art layers.
  • Per-subartlayer recipe (Grease Pencil) — each subartlayer stores how its Line Art / Thickness modifiers are configured: stack order, on/off, edge types, and width — so one Line Art modifier serves an outline and an inline. Its Content filters the scene by collection / object / layer (with an Except toggle and a scoped layer dropdown); a Live Preview toggle (off by default) keeps your viewport and undo history untouched until export; Restore Defaults and Update Defaults from Scene manage the artist's own baseline.
  • Pencil+ subartlayers — one unified mode (Blender and Maya) — a subartlayer filters your Pencil+ setup by Line and Line Set (with an Except toggle), and its Line Sets panel is the per-Line-Set recipe: which edge types each generates (Outline, Object, Intersection, …), Visible and Hidden independently, plus a Thickness multiplier that scales the whole Line Set's brushes at once. Generators create one subartlayer per Line or per Line + Line Set; a Live Preview and Restore / Update Defaults keep the preview from dirtying your setup.
  • Occlusion — camera raycast removes strokes hidden behind geometry (the cull Blender's native SVG export can't do). Every solid mesh blocks lines; turn a mesh's render icon off to exempt it. It is decided per layer — a Line Art layer exports as-is, hand-drawn art gets the raycast — with a WYSIWYG kept-vs-culled overlay and a per-subartlayer Export as-is opt-out.
  • Bundled Potrace tracer — Image-Trace-style raster → vector in Black & White, Greyscale, and Colour (farthest-point median-cut). B&W traces filled shapes with Potrace and pencil centrelines with Zhang–Suen thinning.
  • Bitmap import — bring a raster in as a self-contained Toon Boom bitmap (default) or keep it linked to the original file.
  • Original Bitmap drawings — a drawing can be one flat bitmap instead of four art layers; the art-layer selector becomes a Recipe naming the stack it is flattened from, and vector tracks never enter it.
  • Import SVG as Grease Pencil (Blender) — an .svg, or a whole OVB export folder, comes back as a Grease Pencil object: one layer per art layer, the per-point widths as stroke radius, colours as materials, a folder as a frame sequence, placed on the active camera's plane so an export re-imports where the camera saw it. Every drawing of an export folder comes in (separate objects or layer groups), curves stay Bezier, frame numbers can be kept, and Reload re-reads the source in place while your edits to the object stay.
  • Fills and gradients cross the bridge (Blender) — the Blender exporter writes Grease Pencil fills as filled paths and two-colour gradient materials as SVG gradients; the importer turns SVG gradients into gradient materials with the axis on the stroke, and keeps curves as Bezier. In Harmony, the Line and Fill colour swatches show the source's colours as stripes and count them on hover.
  • WYSIWYG Previewer — field-space camera framing, cursor-anchored zoom, middle-mouse / Space pan, onion skin (vector and bitmap), snapping and field grid.
  • Outliner = node graph — the tree you build is the Harmony network written on Apply: pegs, groups, composites, and sibling aggregation by paint order. Delete Node (lift children) vs Delete Hierarchy.
  • Per-art-layer Inspector — thickness envelope + pressure detail, point cleanup, tip taper, and whole-drawing/peg transforms, each per subartlayer.
  • Gizmo pivot — both the art-layer (blue) and peg (green) gizmos carry a draggable pivot: a corner drag scales from it, so a character scales from the soles of their feet without drifting. Alt scales from the centre instead.
  • Palettes — import into any scene palette or a new one, and create, rename and recolour colours right in the drawing's card. They become real on Apply, and an existing colour with the same RGBA is reused, never duplicated.
  • Weight-paint brushes + Thickness brush — Relax, Simplify, and Pressure paint a 0..1 heat-mapped mask; the non-weighted Thickness brush sculpts line weight directly. All non-destructive with a one-click Clear.
  • Merge split lines — optionally rejoin Harmony's planar-split pieces into single editable strokes, with a tri-state master toggle and per-art-layer overrides.
  • One import dialog — a single browse handles a folder, loose files, an image sequence, or a single frame, classifying art layers by folder/name and defaulting loose art to Line Art.
  • 30-day trial + perpetual licence — one machine-bound activation covers Blender, Maya, and Harmony (a DCC-neutral licence file), with Return License to move machines. Reachable from a License button in Maya, an Activate License panel in Blender, and a License card in Harmony's Preferences.

Architecture

  • One shared, DCC-neutral core (ovc_core) with thin per-host adapters for Blender, Maya, and Harmony.
  • Pure, shared width/point/taper functions run identically in the Previewer and the Harmony writer — the guarantee behind WYSIWYG.
  • Node graph emitted through a ported OSA-style emitter (peg / group / composite, MPI/MPO, sibling aggregation).
  • Bundled potrace binary — no external install.

Fixes — build b79313d (2026-09-03)

  • Maya: the panel can no longer outgrow its window — creating a pass stretched the tree and pushed License / Convert off the right edge; the scroll body is now pinned to the window width at any size. (build f561fbe)
  • Maya: drag & drop in the Structure tree — drag a pass above/below another, onto a container (lands last in it) or onto a drawing (its default container). Containers and drawings stay put; the arrows still work. (build f561fbe)
  • Maya: + puts the new pass in the container you selected — it always landed in Line Art, whatever was highlighted in the tree. (build 0af2a9a)
  • Maya: no more flash when clicking between passes — rebuilding the settings section briefly showed retired widgets as a stray top-level window; they are hidden before they are dropped. Row tooltips in the tree are gone too (the icon and Produces already say it). (build 377c3fe)
  • Maya: changing Produces updates the settings below it immediately — the Pencil+ pickers or the Materials layer/pass pickers only appeared after clicking another pass. (build cf7e545)
  • Harmony: deleting an app-created palette colour with − — after any list refresh the − button kept a stale enabled state with nothing selected (a click did nothing), and a colour created from an art layer's picker did not show in the drawing's palette list until the page was re-asked. Both fixed. (build ac25ffc)
  • Harmony: a bitmap import could leave a scene that refuses to saveMissing folder …/ovb_raster_… / Cannot write palette list. The intermediate drawings were written to a temp folder, so the palette Harmony wrote beside them pointed there, and the import deleted that folder on the way out. They now live in the element folder, where the palette belongs. (build 947b18e)
  • Harmony: long bitmap sequences import far faster and no longer exhaust memory — every frame launched up to two utransform processes (about 1700 for an 840-frame sequence, over an hour), and the whole import was held in a single undo block. The already-converted drawing is now reused instead of reconverted (one launch per frame, or none), and long imports commit the undo block in slices so Harmony can release memory. (build 947b18e)
  • Harmony: long vector sequences no longer run out of memory (Import JS error: bad allocation, then Harmony closing with no message). The import now streams: every 25 frames are parsed, written, given their line thickness and released before the next 25 are read — measured on a real 840-frame export, the parser's peak fell from ~0.9 GB held for the whole import to ~44 MB. Imports over 100 frames also clear Harmony's undo history as they go, so the stroke copies kept for undo no longer pile up (such an import is not undoable — save first). A chunk that fails now stops the import with a message instead of carrying on into a crash. (build cec0dd0)
  • Harmony: Checkpoint save (opt-in) — a new box beside Merge split lines saves the scene every 100 frames of a long import, so Harmony can release the drawings already written instead of holding all of them until the end. It stays locked (hover it for why) until the scene has been saved on disk. (build cec0dd0)
  • Harmony: bitmap frames came in empty after the first checkpoint save — the vector art was fine. Harmony renames an element's folder and physical name when the scene is saved (its docs say so), and the bitmap path had read both once before the loop, so every later TVG was written where Harmony no longer looks. Both are re-read after each save. (build 8ed7e63)

  • Pencil+ is optional — Grease Pencil is the default source and needs nothing extra. The Pencil+ source now warns instead of blocking, and says plainly that PSOFT's paid Pencil+ 4 Render App (not just the free Line add-on) is what draws the lines.

  • Blender add-on failed to enable on a fresh install (No module named pencil_plus) — the vendored core is now imported relatively, which also clears Blender's Policy violation warnings in Preferences.
  • A load-time traceback printed on every file open is gone.
  • Installer — the shared Octo Tools toolbar in Harmony is rebuilt from every installed tool, so uninstalling one tool no longer removes the others' buttons; Blender add-ons are enabled automatically after install; downloads are named by release id (1.0.0-<id>) and the installer window shows the same id.
  • Maya panel clipped on the right once a Pencil+ pass was selected — the recipe card's two labelled checkbox columns forced the window wider than 480 px. The card now lists each edge type once with bare Visible / Hidden boxes. (build 8fd672d)

Known issues

  • Exporter and UI work is validated in real Blender and via offscreen Qt for Maya; end-to-end validation in a live Harmony scene is ongoing.
  • Pencil+ variable-width reconstruction depends on a clean raster Line render element; a noisy render can soften the recovered width.
  • With two DCCs open at once, a licence returned in one refreshes the other's on-screen status only when its panel is reopened (the licence file itself is always correct).
  • Windows installer is the primary target; macOS packaging and code-signing are still to come.

Pre-release history

Octo Vector Bridge was developed privately through late 2025 and 2026. Public history begins with v1.0.0.