Improve camera angle diversity and pose variation in card prompts
This commit is contained in:
@@ -63,9 +63,9 @@ function damageSpec(stage) {
|
||||
baseLayerDamage:
|
||||
"no base-layer damage yet; support underlayers, bodysuit panels, and lower coverage panels are intact before combat",
|
||||
camera:
|
||||
"front three-quarter or low-angle front view for clear character identity",
|
||||
"low-angle side-front or three-quarter side-forward view for clear character identity without flat frontal dominance",
|
||||
cameraConstraint:
|
||||
"camera choice should include side/rear/low/high rotations across the deck so not every card looks frontal.",
|
||||
"camera choice should include side/rear/low/high rotations across the deck so not every card uses direct frontal framing.",
|
||||
},
|
||||
{
|
||||
label: "light-damage",
|
||||
@@ -91,9 +91,9 @@ function damageSpec(stage) {
|
||||
baseLayerDamage:
|
||||
"light damage may scuff or loosen visible support underlayers, bodysuit edges, or lower coverage seams, but they mostly remain intact at this stage",
|
||||
camera:
|
||||
"three-quarter front or low/high mixed angle, enough to show both face and first armor damage",
|
||||
"low/high/side mixed angles, enough to show both face and first armor damage without repeated frontal read",
|
||||
cameraConstraint:
|
||||
"avoid pure straight-on front framing when possible; prioritize side, rear, low-angle, or high-angle with one readable front pass only.",
|
||||
"avoid pure straight-on front framing when possible; prioritize side, rear, low-angle, or high-angle with frontal only if readability is essential.",
|
||||
},
|
||||
{
|
||||
label: "medium-damage",
|
||||
@@ -121,7 +121,7 @@ function damageSpec(stage) {
|
||||
camera:
|
||||
"side view, strong three-quarter, or low-angle side frame to keep shoulder and abdomen damage visible",
|
||||
cameraConstraint:
|
||||
"must not be primarily straight front. Keep side/rear/low/high angles dominant; front only as secondary continuity pass.",
|
||||
"must not be primarily straight front. Keep side/rear/low/high angles dominant; frontal only when continuity breaks otherwise.",
|
||||
},
|
||||
{
|
||||
label: "heavy-damage",
|
||||
@@ -147,7 +147,7 @@ function damageSpec(stage) {
|
||||
baseLayerDamage:
|
||||
"heavy damage must visibly affect support underlayers and coverage panels too: support pieces, suit liners, lower wraps, and coverage panels should be torn, scuffed, warped, soot-marked, strap-broken, or partially covered by broken armor remnants. In this stage they should read as battered opaque remnants, not clean replacement coverage; they must still preserve non-explicit opaque coverage",
|
||||
camera:
|
||||
"dramatic low-angle side, rear three-quarter, or over-the-shoulder angle while keeping face partially visible",
|
||||
"dramatic low-angle side/rear combination, high-angle recoil moments, or over-the-shoulder brutality while keeping face partially visible",
|
||||
cameraConstraint:
|
||||
"intentionally use low-angle or side/rear framing for brutality; limit frontal composition unless needed for continuity.",
|
||||
},
|
||||
@@ -184,11 +184,11 @@ function damageSpec(stage) {
|
||||
}
|
||||
|
||||
const CAMERA_ORIENTATION_PLAN = {
|
||||
normal: ["front", "side", "low", "high", "rear"],
|
||||
"light-damage": ["low", "front", "side", "rear", "high"],
|
||||
"medium-damage": ["side", "rear", "low", "high", "front"],
|
||||
"heavy-damage": ["rear", "side", "low", "high", "front"],
|
||||
defeated: ["rear", "side", "high", "low", "rear"],
|
||||
normal: ["side", "low", "rear", "high", "side"],
|
||||
"light-damage": ["low", "side", "high", "rear", "low"],
|
||||
"medium-damage": ["side", "rear", "high", "low", "side"],
|
||||
"heavy-damage": ["rear", "low", "high", "side", "rear"],
|
||||
defeated: ["rear", "high", "low", "side", "rear"],
|
||||
};
|
||||
|
||||
const CAMERA_VARIANTS = {
|
||||
@@ -331,15 +331,15 @@ const CAMERA_VARIANTS = {
|
||||
|
||||
const CAMERA_ORIENTATION_RULES = {
|
||||
normal:
|
||||
"Use one angle from front/side/rear/low/high per render, and avoid pure straight-on framing when possible.",
|
||||
"Use one angle from side/rear/low/high per render; only use straight-front when the character identity cannot be preserved.",
|
||||
"light-damage":
|
||||
"Prioritize side, rear, low-angle, or high-angle framing. Use front only when the character identity needs a direct read.",
|
||||
"Prioritize side, rear, low-angle, or high-angle framing; use frontal only when the character identity fails without it.",
|
||||
"medium-damage":
|
||||
"Use energetic side/rear/low/high framing; keep front as a secondary option only for clarity.",
|
||||
"Use energetic side/rear/low/high framing; keep frontal only as a continuity exception.",
|
||||
"heavy-damage":
|
||||
"Prioritize low-angle, side, high-angle, and rear framing to emphasize impact chaos.",
|
||||
defeated:
|
||||
"Prioritize side/back/low/high framing for collapse and pain continuity; avoid frontal composition unless necessary.",
|
||||
"Prioritize side/back/low/high framing for collapse and pain continuity; avoid frontal composition unless continuity breaks.",
|
||||
};
|
||||
|
||||
const POSE_ORIENTATION_VARIANTS = {
|
||||
@@ -623,7 +623,7 @@ function promptFor(character, stage) {
|
||||
`Personality and pose: ${character.personality}; ${character.pose}; ${spec.poseNote}; ${poseModifier}.`,
|
||||
`Facial expression: ${spec.expression}.`,
|
||||
`Camera/view variation: ${camera.orientation} angle. Composition directive: ${camera.phrase}.`,
|
||||
"Across the character's five damage stages, explicitly rotate between front, side, rear, low-angle, and high-angle views. Do not fallback to default straight-front framing.",
|
||||
"Across the character's five damage stages, rotate between side, rear, low-angle, and high-angle views as the primary framing, and only use frontal composition when the identity requires it.",
|
||||
`Camera constraint: ${CAMERA_ORIENTATION_RULES[spec.label] ?? CAMERA_ORIENTATION_RULES.normal}`,
|
||||
`Adult visual appeal: ${character.appealFocus}; ${adultAppeal}.`,
|
||||
`Scene/backdrop: ${character.scene}; ${elementName} elemental atmosphere; no other characters.`,
|
||||
|
||||
Reference in New Issue
Block a user