LLMSkillHub
mirroredCopied from dylanroscover/Embody under MIT. dylanroscover has not claimed this page, and is not affiliated with LLM SkillHub.

dylanroscover / visual-aesthetics

MUST READ before building or refining rendered visual output in TouchDesigner: generative art, VJ visuals, shaders, scenes, renders, projections, or anything shown on screen. Principles, verified TD recipes, and named looks for composition, camera, lighting, value, color, contrast, motion, materials, and finishing.

0
SKILL.md
9.5 KB

<!-- Generated by Embody/Envoy - Do not remove this comment - sha:1f320916dae158e3 -->

Visual Aesthetics

Make rendered image and motion output read clearly, intentionally and with craft: deliberate composition, camera, lighting, palette, motion and finish. This skill is about what appears on screen, not node layout. It is the working loop and the judgement; the craft behind each pass (the composition, camera, lighting, value, color, contrast, motion, materials and finishing sections with their TD parameters and starter palettes) is in references/craft.md, and the named looks are in references/look-recipes.md, both in this skill's folder (get_guidance(topic='visual-aesthetics/craft') without a skills folder). Read the craft file for the pass you are on; read a recipe when the brief names a look.

When to load this skill

Before building or refining any network whose purpose is visual output: generative art, VJ visuals, shaders, render scenes, projection content, UI visuals, captured TOP output. Pair it with capture_top to evaluate the actual result against the rubric at the end.

Output-first: show the work in the backdrop

Before building any TOP chain, create the terminal Out TOP named out1 (positioned per the layout rules) and set_op_flags(op_path, display=True) on it: a TOP with its Display flag on renders as the network editor backdrop (Display > Backdrop TOPs is on by default). As soon as any stage produces pixels, wire the chain end into out1 and keep it wired while iterating, including while replacing, inserting or bypassing intermediate nodes. The user watches progress live behind the network. The final deliverable stays terminated in out1; capture_top on out1 is the verification pass.

The working loop (mandatory)

  1. Write a 3-line intent brief before creating any operator: the subject (what the eye lands on first), the mood and palette (name one from the craft file's palette table, or design one), and the motion character (calm drift, pulsing energy, mechanical precision, still). If the request does not specify, propose a brief and build to it. Assembling operators with no target look is how default-looking output happens.
  2. Build in passes, in this order: composition and camera blocking, then lighting and value, then color, then motion, then finishing. Get each pass reading before decorating the next. Post cannot rescue a weak composition; color cannot rescue a weak value structure.
  3. Capture and judge after every pass: capture_top the OUTPUT TOP and look at the frame against the brief AND the rubric below. NEVER declare a visual task done without capturing and assessing the frame; a clean network is not success, a good-looking, correct frame is.
  4. Judge motion over time, not from one still. Let time-evolving systems SETTLE before judging (feedback and particles need dozens to hundreds of frames; an early capture misreads as empty). Verify it actually animates: capture, let real seconds pass, capture again; the frames must differ. Judge motion character across 3-5 captures spread over the cycle, including both sides of a loop wrap (the wrap must be invisible). For audio-reactive work capture at a peak AND at silence; the silence floor must still look composed. Emergent looks (feedback painting) invert the pass order: build the process, run it, judge the accumulated frame.
  5. If the captured frame is black or empty (Quality: FAIL), diagnose before continuing: display and render flags on the output op; for 3D, that a camera, a light and geometry with render and display on all exist; the chain terminates in a cooking Null; no bypass flag is on; resolution is not 0; alpha or premultiply when the image seems present but invisible.
  6. Iterate with the smallest knob set: adjust the fewest upstream controls (the fix-it map), re-capture, re-judge.

Kill the default look

TD operators at default values produce recognizable programmer art. If a capture shows one of these, fix it before building further:

TellFix
Grey Phong on default-lit geometryChoose a material on purpose: PBR MAT with a palette base color and roughness, or Constant MAT for graphic flats
One white light left wherever it spawnedBuild the rig: three-point, or one dramatic key plus colored fill
Subject centered at origin, camera never movedChoose viewpoint and lens; frame deliberately
Raw default Noise TOP as texture or backgroundShape it (mono, period, harmon, exp), grade it, then map it through a palette Lookup
Rainbow hue-cycling (animated hue)Lock the palette; animate value, position or scale, never hue
One constant-speed linear rotation as the only motionEase it, layer it, de-sync it
Audio amplitude wired raw to scale or brightnessShape with Lag (fast rise, slow fall) and keep a floor
Bloom slathered across the whole frameRaise bloomthreshold until only the accent blooms
Glowing accent in a dark void as the answer to every briefThat is its own cliche; vary the field: high-key, daylight, pastel, fog
Everything equally sharp, bright, saturated and movingImpose hierarchy: one subject, a calmer field

The passes in one screen

  • Composition: one focal point, deliberate placement (thirds by default), negative space, depth cues, no accidental tangents, composed at the delivery aspect.
  • Camera: viewpoint, lens and distance chosen together (fov, lookat, dolly not zoom); every move eased through a Filter CHOP; depth sold with overlap, fog and a Depth-driven blur.
  • Lighting: a three-point rig or one dramatic cone key, colored light, shadows on the key only, an environment light under PBR, an emissive accent the bloom can find.
  • Value: distinct darks, mids and lights that survive a Monochrome squint test; the sharpest contrast on the subject; re-checked after post.
  • Color: palette first (3-5 keys in a Ramp TOP driven by a Table DAT, applied through a Lookup TOP), dominant plus accent, one temperature, saturation mostly under 0.6, hue never animated.
  • Contrast: push 1-3 axes, leave the rest calm; figure-ground on at least one axis.
  • Motion: eased (Filter, Lag), layered like fBm (slow large drift plus fast small detail), de-synced per element, evolving in place with 4D noise, audio shaped through Lag into a bounded range with a floor, rests in the rhythm, integer-period loops.
  • Materials: palette base colors, varied roughness, per-instance jitter, low-brightness additive sprites, additive for light and over for solids.
  • Finishing: float pipeline and antialias set at render time; then grade, bloom (threshold high), tone map, optional lens, vignette, grain last, every stage at low strength; judge at full delivery resolution.

Objective self-check rubric

Use capture_top to grab the render, then answer these before calling it done:

CheckPass condition
Focal pointOne clear subject; the viewer can name where the eye lands first
CameraViewpoint, lens and framing are deliberate; any camera motion is eased and purposeful
LightingA key light is identifiable; the subject separates by light; ratios and colors are chosen, not defaults
Contrast locationThe strongest value, color, focus, size or motion contrast sits on the subject
Squint testIn a Monochrome or desaturated view the frame still reads as distinct shapes
Value rangeDarks, mids and lights all present; pure black or white only where intended
PaletteLimited hues, controlled saturation, one dominant temperature or family
Figure-groundThe subject separates from the background on at least one axis
CompositionPlacement, crop, negative space and depth cues look intentional at the delivery aspect
MotionEased, layered, de-synced; a focal motion (or focal stillness); moments of rest
Temporal (animated work)Judged AFTER settling, across multiple captures: frames differ, the loop wrap is invisible, the audio-silence floor still looks composed
FinishingGrade, bloom, vignette, grain and AA are restrained and improve clarity
Default tellsNothing from the table above survives in the frame
DeliveryJudged at final resolution and aspect, and it holds frame rate per performance.md

Fix-it map

Failing checkFirst knobs
No focal pointReframe; key and rim light on the subject; calm the field
Flat or muddyLevel blacklevel/gamma1/contrast; separate value bands; add a rim light
Colors feel randomRoute everything through the palette Lookup; HSV Adjust saturationmult down; pick one temperature
Spatially flatCamera fog; overlap and scale layering; the DOF recipe; parallax via a camera move
Motion feels roboticFilter or Lag easing; layered noise; per-element phase offsets
Motion feels chaoticFewer audio or parameter mappings; slower background; one motion contrast
Looks like default TDWork the default-look table top to bottom
Polished-but-amateur finishRe-run the finishing chain in order at lower strengths; check AA; judge at delivery resolution

If a render fails a check, adjust the smallest number of upstream controls needed to restore hierarchy, re-capture, re-judge.