Unity
EQ Pivot Painter Lab
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.
Getting started
Section titled “Getting started”Tools/EQLabs/EQ Pivot Painter Lab/Open Editor- Create an asset (
Create/EQ Pivot Painter Lab/Pivot Painter Asset) and assign a readable source mesh. - Detect Elements — partitions the mesh.
- Solve Preview — inspect pivots, axes, parents and wind buckets in the workbench before committing.
- Fix anything wrong with Manual Repair or the Wind Bucket Painter.
- Bake — writes the generated mesh, data textures, hero material and a JSON report.
Documentation/Quick_Start.md walks through each step in detail.
What it does
Section titled “What it does”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.
Data format
Section titled “Data format”RGBAFloatpivot/parent texture — the parent index is packed into alpha and stays integer-exact well beyond 2048 elements.RGBA32axis/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.
Known limitations
Section titled “Known limitations”- 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.
In this manual
Section titled “In this manual”- 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.
Opens our feedback form in a new tab with the tool name pre-filled.