Reduce POV camera layout noise
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user