Handmade physicality. Imperfect edges. Material honesty.
Sublooks
Claymation, paper craft, felt/plush, wooden puppet
Tenets
- Visible craft seams / fingerprints (subtle)
- Real-world craft materials
- Slight irregularity in forms
- Practical light feel
- Step-like motion if animating (optional)
Recipe
Look: tabletop miniature. Practical-feeling soft key (one dominant light, small fill), shallow DoF (f/2.8, 85 mm so the subject reads as small), matte materials (roughness 0.7-0.95), no perfect edges; 12 fps feel is done in animation, not here.
- Light with
lighting/light_rig.pypresetstudio_3pt(warm key like a desk lamp) and render withrendering/render_preset.pyeevee_final. - Clay/felt/paper material with
materials/pbr_material.py: clay[0.8, 0.35, 0.25]roughness0.85,specular_ior_level0.2; paper[0.9, 0.88, 0.82]roughness0.95. Add fingerprints/fibres by a noise bump in prose (Noise Texture to Bump, strength 0.15). - Soft handmade shading:
stylized-style/toon_material.pywithbands4,rim0.1,outline0 for gentle stepped light. - Frame with
camera-cinematography/camera_rig.py(lens_mm85,dof_fstop2.8,fill0.6), grade withcompositing/comp_grade.pycinematic(warmth0.3). - If animating, key every 2 frames on 24 fps (stepped interpolation, constant) for the stop-motion stutter.
import runpy
skills = "<skills_dir>" # parent folder of this skill (the plugin's skills/ directory)
target = "SM_Asset" # object to style / dress
r = {}
r["light"] = runpy.run_path(f"{skills}/lighting/scripts/light_rig.py", init_globals={"ARGS": {"preset": "studio_3pt", "target": target}})["result"]
r["mat"] = runpy.run_path(f"{skills}/materials/scripts/pbr_material.py", init_globals={"ARGS": {"name": "MAT_Clay", "base_color": [0.8, 0.35, 0.25], "roughness": 0.85, "specular_ior_level": 0.2, "objects": [target]}})["result"]
r["render"] = runpy.run_path(f"{skills}/rendering/scripts/render_preset.py", init_globals={"ARGS": {"preset": "eevee_final"}})["result"]
r["cam"] = runpy.run_path(f"{skills}/camera-cinematography/scripts/camera_rig.py", init_globals={"ARGS": {"target": target, "lens_mm": 85, "dof_fstop": 2.8, "fill": 0.6}})["result"]
r["grade"] = runpy.run_path(f"{skills}/compositing/scripts/comp_grade.py", init_globals={"ARGS": {"preset": "cinematic", "warmth": 0.3}})["result"]
result = r