Nodes · Atelier
ObjectBake
Atelierv1core
Overview
Screen to texture: bakes the upstream PaintOver's object-anchored strokes through each painted frame's UV pass into per-object textures (one per UDIM), seams filled and dilated, written beside the project for the comp and for Unreal. Says when the bake is stale.
How to
How-to
- Wire it after the PaintOver; set
resolution,dilate,v_axisfor the target (down for Unreal, up for Blender). - Press ⚒ Bake; per-object, per-UDIM EXRs land at
bake_pathwith a sidecar. export_layerswrites one texture per paint layer;udim_set = completefills the set.
Inputs
| Input | What it takes |
|---|---|
| in | the image this node works on |
Outputs
| Output | Type |
|---|---|
| out | Image |
Parameters
| Parameter | Type | Default | What it does |
|---|---|---|---|
| resolution | Int | 4096 | Texture size per UDIM tile, px. 4096 is the default; a hero face wants it, a prop does not. |
| dilate | Int | 8 | Seam padding, texels: texels no painted frame saw are filled from their neighbours (pull-push) this far out, so a seam never shows a crack. The export carries it. |
| facing_power | Float | 1.0 | How strongly a pixel facing the camera outweighs a grazing one when the same texel is painted on several frames (max(0, N·V)^k). 0 = ignore the normals. |
| v_axis | Choice | down | Which way V runs in the texture: down = v 0 at the top row (Unreal, DirectX); up = bottom row (Blender, Maya, OpenGL). Bake and apply always agree; choose for the export target. downup |
| order | Choice | average | When two painted frames hit the same texel: average by confidence, or the latest painted frame wins. averagelatest |
| udim | Choice | on | Split the texture by UDIM tile (1001 + ⌊u⌋ + 10⌊v⌋), or fold every UV into one texture. onoff |
| export_png | Choice | off | Also write an 8-bit PNG beside each EXR. It is LINEAR, not sRGB — set sRGB off on import, expect banding in dark paint. Prefer the EXR. offon |
| export_layers | Choice | off | Also write one texture per PaintOver layer beside the flattened one: <object>.<layer>.<udim>.exr, hidden layers included — the artist named the layer, so it is exported by itself. The flattened texture is still what ObjectApply reads; the layers are for the engine-side material stack. The sidecar lists them under objects[].layers. offon |
| udim_set | Choice | touched | touched writes only the tiles paint landed in. complete writes every tile the object's UVs occupy on a baked frame, transparent where nothing was painted, so a <UDIM> token path (sidecar pattern) has no holes — a missing tile reads as opaque magenta in most DCCs, and a paint-over-base-colour Lerp then paints that on. Empty tiles are not loaded by the comp. touchedcomplete |
| output | Choice | passthrough | passthrough: the stream. texture: one baked tile in UV space, to look at. passthroughtexture |
| view_object | Text | Which object's texture output = texture shows. | |
| view_udim | Int | 1001 | Which UDIM tile output = texture shows. |
| bake_path | Text | Where ⚒ Bake wrote the textures and bake.json. Filled in by the bake; ObjectApply points at it. | |
| bake_hash | Text | The fingerprint the bake was made from (strokes, upstream, knobs). The panel compares it and says ⚠ stale when they differ. | |
| status | Text | What the last ⚒ Bake did: objects, frames, tiles, and anything skipped or refused. | |
| disabled | Bool | false | Bypass: the node passes its first input through untouched (D in the graph). The knobs keep their values for when it comes back. |
| label | Text | A note shown under the node in the graph — what this node is FOR. Never affects the render or the cache. | |
| hide_input | Bool | false | Draw the node without its input wire — a tidy graph for a node whose source is obvious (a Dot, a viewer tap). |