Reduce POV camera layout noise

This commit is contained in:
2026-06-28 09:30:32 +02:00
parent 3130942caf
commit 4ca4653e7d
2 changed files with 65 additions and 3 deletions
+35 -3
View File
@@ -1042,10 +1042,11 @@ def scene_camera_directive(
geometry = pov_camera_geometry_phrase(parsed, compact_labels) if pov_labels else camera_geometry_phrase(parsed, compact_labels)
geometry_clause = f" ({geometry})" if geometry else ""
if pov_labels:
subject, _pronoun = scene_subject_terms(subject_kind, pov_labels)
return (
f"{profile['layout_label']} from POV{geometry_clause}: {direction_detail}. "
f"{distance_detail}; {elevation_detail}; lower foreground is reserved for POV body or hand cues; "
f"use the multiangle camera only as first-person spatial geometry."
f"{profile['layout_label']} from POV{geometry_clause}: keep {subject} and the action primary; "
f"{profile['place']} context stays beside or behind the bodies, not in the lower foreground; "
f"lower foreground is reserved for POV body or hand cues; use the multiangle camera only as first-person spatial geometry."
)
return (
f"{profile['layout_label']}{geometry_clause}: {direction_detail}; "
@@ -1098,6 +1099,35 @@ def composition_subject_text(text: str, subject_kind: str) -> str:
return text
ACTION_COMPOSITION_TERMS = (
"action geography",
"anal",
"ass",
"body contact",
"cowgirl",
"doggy",
"explicit",
"first-person",
"foreground hands",
"genital",
"hips",
"kneeling",
"mouth",
"oral",
"penetration",
"pov",
"rear-entry",
"rear entry",
"rear-view",
"sexual contact",
)
def is_action_specific_composition(text: Any) -> bool:
lower = str(text or "").lower()
return any(term in lower for term in ACTION_COMPOSITION_TERMS)
def contextual_composition_prompt(
scene_text: Any,
composition: Any,
@@ -1110,6 +1140,8 @@ def contextual_composition_prompt(
text = str(composition or "").strip()
if not text:
return text
if is_action_specific_composition(text):
return text
text = composition_subject_text(text, subject_kind)
profile = scene_camera_profile(scene_text, scene_entry=scene_entry, theme=theme, profile_key=profile_key)
if not profile: