Extract expression route resolution
This commit is contained in:
+42
-24
@@ -1446,6 +1446,33 @@ def _cast_expression_intensity_override(
|
||||
)
|
||||
|
||||
|
||||
def _resolve_expression_route(
|
||||
*,
|
||||
expression_enabled: bool,
|
||||
expression_intensity: float,
|
||||
expression_intensity_source: str,
|
||||
subject_type: str,
|
||||
applied_slot: dict[str, Any] | None = None,
|
||||
character_slots: list[dict[str, Any]] | None = None,
|
||||
character_slot_map: dict[str, dict[str, Any]] | None = None,
|
||||
women_count: int = 1,
|
||||
men_count: int = 1,
|
||||
expression_phase: str = "",
|
||||
) -> row_expression_policy.ExpressionRoute:
|
||||
return row_expression_policy.resolve_expression_route(
|
||||
expression_enabled=expression_enabled,
|
||||
expression_intensity=expression_intensity,
|
||||
expression_intensity_source=expression_intensity_source,
|
||||
subject_type=subject_type,
|
||||
applied_slot=applied_slot,
|
||||
character_slots=character_slots,
|
||||
character_slot_map=character_slot_map,
|
||||
women_count=women_count,
|
||||
men_count=men_count,
|
||||
expression_phase=expression_phase,
|
||||
)
|
||||
|
||||
|
||||
def _character_expression_entries(
|
||||
rng: random.Random,
|
||||
expression_pool: list[Any],
|
||||
@@ -2176,30 +2203,21 @@ def _build_custom_row(
|
||||
if is_pose_category:
|
||||
source_role_graph = _sanitize_hardcore_environment_anchors(source_role_graph)
|
||||
role_graph = _pov_role_graph_prompt(source_role_graph, pov_character_labels)
|
||||
expression_intensity_source = expression_intensity_source or "input"
|
||||
expression_disabled = not bool(expression_enabled)
|
||||
if expression_disabled:
|
||||
expression_intensity_source = "disabled"
|
||||
elif subject_type in ("woman", "man") and applied_slot:
|
||||
slot_label = "Woman A" if subject_type == "woman" else "Man A"
|
||||
if not _slot_expression_enabled(applied_slot):
|
||||
expression_disabled = True
|
||||
expression_intensity_source = f"character_slot:{slot_label}:disabled"
|
||||
else:
|
||||
slot_expression_intensity = _slot_expression_intensity_for_phase(applied_slot, expression_phase)
|
||||
if slot_expression_intensity is not None:
|
||||
expression_intensity = slot_expression_intensity
|
||||
expression_intensity_source = f"character_slot:{slot_label}"
|
||||
elif subject_type == "configured_cast" and character_slots:
|
||||
expression_intensity, expression_intensity_source = _cast_expression_intensity_override(
|
||||
expression_intensity,
|
||||
character_slot_map,
|
||||
women_count,
|
||||
men_count,
|
||||
expression_phase,
|
||||
)
|
||||
if expression_intensity is None:
|
||||
expression_disabled = True
|
||||
expression_route = _resolve_expression_route(
|
||||
expression_enabled=expression_enabled,
|
||||
expression_intensity=expression_intensity,
|
||||
expression_intensity_source=expression_intensity_source,
|
||||
subject_type=subject_type,
|
||||
applied_slot=applied_slot,
|
||||
character_slots=character_slots,
|
||||
character_slot_map=character_slot_map,
|
||||
women_count=women_count,
|
||||
men_count=men_count,
|
||||
expression_phase=expression_phase,
|
||||
)
|
||||
expression_disabled = expression_route.expression_disabled
|
||||
expression_intensity = expression_route.expression_intensity
|
||||
expression_intensity_source = expression_route.expression_intensity_source
|
||||
|
||||
prompt_axes = _prompt_axes_route(
|
||||
category=category,
|
||||
|
||||
Reference in New Issue
Block a user