Skip to content

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

  1. Wire it after the PaintOver; set resolution, dilate, v_axis for the target (down for Unreal, up for Blender).
  2. Press ⚒ Bake; per-object, per-UDIM EXRs land at bake_path with a sidecar.
  3. export_layers writes one texture per paint layer; udim_set = complete fills the set.

Inputs

InputWhat it takes
inthe image this node works on

Outputs

OutputType
outImage

Parameters

ParameterTypeDefaultWhat it does
resolutionInt4096Texture size per UDIM tile, px. 4096 is the default; a hero face wants it, a prop does not.
dilateInt8Seam 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_powerFloat1.0How 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_axisChoicedownWhich 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
orderChoiceaverageWhen two painted frames hit the same texel: average by confidence, or the latest painted frame wins. averagelatest
udimChoiceonSplit the texture by UDIM tile (1001 + ⌊u⌋ + 10⌊v⌋), or fold every UV into one texture. onoff
export_pngChoiceoffAlso 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_layersChoiceoffAlso 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_setChoicetouchedtouched 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
outputChoicepassthroughpassthrough: the stream. texture: one baked tile in UV space, to look at. passthroughtexture
view_objectTextWhich object's texture output = texture shows.
view_udimInt1001Which UDIM tile output = texture shows.
bake_pathTextWhere ⚒ Bake wrote the textures and bake.json. Filled in by the bake; ObjectApply points at it.
bake_hashTextThe fingerprint the bake was made from (strokes, upstream, knobs). The panel compares it and says ⚠ stale when they differ.
statusTextWhat the last ⚒ Bake did: objects, frames, tiles, and anything skipped or refused.
disabledBoolfalseBypass: the node passes its first input through untouched (D in the graph). The knobs keep their values for when it comes back.
labelTextA note shown under the node in the graph — what this node is FOR. Never affects the render or the cache.
hide_inputBoolfalseDraw the node without its input wire — a tidy graph for a node whose source is obvious (a Dot, a viewer tap).