Skip to content

Unity

EQ Pivot Painter Lab

Unity 2022.3+–1.0.0

Version 1.0.0 · Unity 2022.3 LTS, Unity 6.0, 6.3 and 6.4 · Built-In, URP and HDRP

Bake Pivot Painter foliage wind data inside Unity — no DCC round-trip.

Point the tool at a tree, plant or prop mesh: it finds the individual elements, works out which branch belongs to which, computes a pivot, a forward axis and a real swing-arm extent for each, and bakes the result into PP2-style data textures plus a mesh with lookup UVs. Hero foliage shaders for all three render pipelines read that data and drive a four-level wind cascade — trunk, big branches, small branches, leaves — with each element inheriting its ancestors’ motion before adding its own.

Package root: Assets/EQPivotPainterLab. Self-contained; no dependency on any other EQLabs product.

Baked trees and grass in Pivot Painter wind: one Wind Controller from calm to storm, the solver's hierarchy levels, per-tree Wind Variation, and a character pushing the foliage aside.
  1. Tools/EQLabs/EQ Pivot Painter Lab/Open Editor
  2. Create an asset (Create/EQ Pivot Painter Lab/Pivot Painter Asset) and assign a readable source mesh.
  3. Detect Elements — partitions the mesh.
  4. Solve Preview — inspect pivots, axes, parents and wind buckets in the workbench before committing.
  5. Fix anything wrong with Manual Repair or the Wind Bucket Painter.
  6. Bake — writes the generated mesh, data textures, hero material and a JSON report.

Documentation/Quick_Start.md walks through each step in detail.

Solving

  • Detection by submesh section, welded island, SmartCut angle, or the skeleton-first RGS-PA solver for dense one-mesh foliage.
  • Scale-invariant: the same mesh imported at 0.01x, 1x or 100x solves identically.
  • Pivots resolved through attachment points and welded contacts; forward and up axes from a PCA eigensolver; extent is the real swing arm from the pivot.
  • Root policies, pinned roots, parent locks, and per-element static freezing for moss, bark and fixed attachments.

Trust

  • A hard pre-bake gate. The bake refuses to run on data that would produce broken motion — triangles owned by more than one element, coverage below 98%, parent cycles, self-parenting, or chains deeper than the shader can replay — and names the offending elements instead of silently baking something wrong.
  • Bake Doctor: a visual pre-flight reporting the same verdict as the gate, with click-to-select navigation.
  • Deterministic: identical input bakes byte-identical output, guarded by golden hashes in the test suite.

Demo

  • Demo/EQPivotPainterLab_Demo.unity - open, select the demo object, press Build Demo. Generates box trees with a real hierarchy and bakes them, in whichever pipeline you use.

Authoring

  • Merge, split, detach, re-parent, static painting, and pivot/axis/extent overrides — all undoable.
  • Wind Bucket Painter for hand-assigning wind feel; painted buckets survive re-detection.
  • Branch Groups for working on whole limbs at once.

Look and performance

  • Hero Foliage Lit shaders for Built-In, URP and HDRP — SRP Batcher compatible, with translucency, rim, normal + detail maps, and packed-mask support (Unity MaskMap / ORM / ORT / AO-Rough-Height).
  • Automatic texture resolution: albedo, normal and packed maps classified by name and bound for you, with a per-slot review and override panel.
  • Octahedral impostor LODs captured in-editor and assembled into an LODGroup.
  • Runtime wind controller, per-renderer phase and strength variation, and wind interactors that let characters push foliage aside.

Reviewing

  • Embedded workbench viewport with orbit/pan/zoom, click and drag selection, and debug views for hierarchy level, element index, parent index, pivot, axis, extent, static mask and a problem finder.
  • Scene view overlays for pivots, parent links, bounds, labels and root markers.
  • JSON bake reports and a batch validation utility.
  • RGBAFloat pivot/parent texture — the parent index is packed into alpha and stays integer-exact well beyond 2048 elements.
  • RGBA32 axis/extent texture.
  • Lookup UVs in a configurable mesh UV channel (UV3 by default).
  • PP1-style mesh UV payloads are also supported for texture-free workflows.

The source mesh is never modified. Generated assets are written under an output root that defaults to Assets/EQPivotPainterLab_Generated, deliberately outside the tool folder so a clean reinstall never takes your bakes with it.

  • HDRP hero foliage is lit by the scene’s main directional light (with its received cascade shadow) plus spherical-harmonics environment lighting. Additional punctual and area lights do not reach it.
  • HDRP hero foliage writes zero motion vectors, so wind motion is not represented to TAA. Whole-object motion is unaffected.
  • Baked meshes use vertex colour alpha to carry a per-element material family, so source vertex colours are not preserved.
  • A single asset is capped at 30,000 elements and a parent-chain depth of 3, matching what the wind shader replays.
  • Guide: A step-by-step guide: your first bake, detection, review, repair, wind in a scene, textures, impostors and render pipelines.
  • User Manual: The complete manual: concepts, the workbench, detection, repair, baking, Bake Doctor, materials, wind, impostors, automation and settings.
  • Shader reference: Every hero foliage shader property: presets, surface, lighting, wind tiers, debug views and the impostor card shader.
  • Troubleshooting: Fixes for bakes that refuse to run, motion problems, appearance problems and workflow problems.
  • Build-time vertex compression: How Unity’s build-time Vertex Compression setting affects Pivot Painter data, and what to do about it.
  • Release notes: What is in each release of EQ Pivot Painter Lab.
Report an issue with this tool

Opens our feedback form in a new tab with the tool name pre-filled.