Readable arenas. Attack silhouettes. Breakables clear. Camera-friendly volumes.
Recipe
Readable combat arena: 16-24 m diameter flat floor, 3 m clear sword/combo radius, dramatic but even lighting at about 3:1 key to fill, 35 mm action camera.
- Light the arena with
light_rig.pypresetgolden_hour(strong directional key reads attack silhouettes). - Frame a combat camera with
camera_rig.py:lens_mm35,elevation_deg20,fill0.5,aspect16:9. - Scatter breakable props (boxes, barrels) around the arena edge with
scatter_props.py,min_dist2.5 so the center stays clear andmax_dist5.5 (the arena edge). - Give breakables a high-contrast material with
pbr_material.py(base_colorwarm,roughness0.7) so they read apart from the floor. - Add punch with
comp_grade.pypresetcinematic.
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": "golden_hour", "target": target}})["result"]
r["cam"] = runpy.run_path(f"{skills}/camera-cinematography/scripts/camera_rig.py", init_globals={"ARGS": {"name": "CAM_Combat", "target": target, "lens_mm": 35, "elevation_deg": 20, "fill": 0.5, "aspect": "16:9"}})["result"]
r["props"] = runpy.run_path(f"{skills}/set-dressing/scripts/scatter_props.py", init_globals={"ARGS": {"target": target, "count": 8, "kinds": ["box", "barrel"], "min_dist": 2.5, "max_dist": 5.5}})["result"]
r["mat"] = runpy.run_path(f"{skills}/materials/scripts/pbr_material.py", init_globals={"ARGS": {"name": "MAT_Breakable", "base_color": [0.55, 0.3, 0.12], "roughness": 0.7, "objects": [target]}})["result"]
r["grade"] = runpy.run_path(f"{skills}/compositing/scripts/comp_grade.py", init_globals={"ARGS": {"preset": "cinematic"}})["result"]
result = r
| Item | Value |
|---|---|
| Arena diameter | 16-24 m |
| Clear combo radius | 3 m |
| Dodge/roll lane | 2 m wide |
| Breakable height | 0.6-1.2 m |
| Ceiling / camera clearance | 6 m+ |