Improve camera angle diversity and pose variation in card prompts

This commit is contained in:
2026-06-18 00:28:17 +09:00
parent 66a9fe965c
commit 6115a6a402
4 changed files with 5023 additions and 5023 deletions

View File

@@ -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.`,