UnityLaparoscopicSceneSimul.../.claude/commands/cinematic-laparoscope-camera.md
Artur Mukhamadiev c51e6d1369 feat(models) added models/textures and Agents related stuff
:Release Notes:
- Agents files for opencode and claude
- Skills for opencode and claude
- 3d models with medical organs
- Some textures

:Detailed Notes:
-

:Testing Performed:
-

:QA Notes:
- Looks like shit :)

:Issues Addressed:
TG-1
2026-06-22 16:57:48 +03:00

3.2 KiB
Raw Blame History

Cinematic Laparoscope Camera (project-scoped)

Constrains camera work to the laparoscope viewpoint the scene is built around. The preserved stereo rig is not edited by this skill — it is the interop surface.

When to use

Load before adjusting FOV, near/far clip, depth of field, exposure, or post-processing on any camera, or diagnosing "scene looks too far", "scene looks too bright", "black frame", or "vignette too strong".

Camera inventory (do not rename)

  • Stereo rig (from MainScene): preserved at its current path. Do not rename, move, or retarget. Interop surface for WebRTC and external automation.
  • Art-directed laparoscope camera: under SurgeryBenchmark/Shared. If one is not present, the scene-director agent can add it as a bounded change.

Laparoscope framing

  • FOV: fieldOfView 3555 for "looks like a scope"; 6075 for "wide scope"; > 80 looks like a generic game camera.
  • Near clip: 0.010.05 m. Far clip: 520 m (enough for a cavity).
  • Barrel optics: LensDistortion.intensity 0.050.15 + Vignette.intensity 0.250.4, smoothness 0.30.5.
  • Highlights: narrow Bloom.intensity 0.10.3, threshold > 1.0 (only catches the brightest specular hits).
  • Color grading: ColorAdjustments.contrast +0.05 to +0.15, postExposure near 0, Tonemapping = Neutral or ACES.

Depth of field

  • Mode: Gaussian (not Bokeh — too heavy for real-time).
  • gaussianStart: near the closest tissue you want sharp.
  • gaussianEnd: just past the farthest tissue you want sharp.
  • gaussianMaxRadius: 1.02.5 px for subtle; > 4 looks like a portrait lens.
  • Pitfall: focus so close the near plane is inside the focus zone → "all-blur" frame. Verify by screenshot.

Exposure and HDR

  • Camera.allowHDR = true. The URP asset must have HDR enabled (default in URP 14).
  • Use ColorAdjustments.postExposure (stops, ±1.0). If range > 1.0 needed, fix the lighting instead.
  • "Too dark" laparoscope usually means: Volume profile missing ColorAdjustments, or post-processing is skipped because the URP asset has it disabled. Verify with volume_get_info before touching the camera.

Adding a secondary / overview camera (bounded change)

  1. Create as child of SurgeryBenchmark/Shared/_Cameras.
  2. Name it OverviewCamera_<Tag> (e.g., OverviewCamera_Cavity).
  3. clearFlags = Solid Color with neutral mid-grey, or Skybox if the cavity is enclosed.
  4. Do not disable the stereo rig or any preserved camera.

Composition rules

  • Verify from at least two angles: scope (default) + 3045° offset.
  • A 3045° offset shot catches stretching, lighting falloff, and proportion problems the scope view hides.
  • For every verification pass: scope screenshot + offset screenshot.

Common MCP calls

# Screenshot from the laparoscope
mcp__UnityMCP__manage_camera(action="screenshot", include_image=true, output_folder="Assets/Screenshots/LaparoscopicBenchmark")

# Set camera properties
mcp__UnityMCP__manage_camera(action="set_lens", target="<camera path>", search_method="by_path", field_of_view=45, near_clip_plane=0.02, far_clip_plane=10.0)

# Read camera properties
mcp__UnityMCP__manage_components(action="get_component", target="<camera path>", component_type="Camera")