1
This commit is contained in:
@@ -127,14 +127,13 @@ export function getActionTemplateById(id: QwenSpriteActionTemplateId) {
|
||||
export function buildMasterPrompt(characterBrief: string) {
|
||||
return [
|
||||
'单人,2D 横版游戏角色标准设定图,主体完整可见,底部轮廓完整,身体比例稳定,轮廓清楚,适合后续制作 sprite sheet 动画。',
|
||||
`视角要求:${SIDE_FACING_RIGHT_TEXT}`,
|
||||
`主体要求:${SUBJECT_ONLY_TEXT}`,
|
||||
`画面要求:1:1 正方形画布,画面中心构图,角色主体完整置于画面中央,不要裁切主体顶部和底部,不要镜头透视,不要特写。${CLEAN_BACKGROUND_TEXT}`,
|
||||
`风格要求:${CHIBI_STYLE_TEXT} ${CHIBI_CHARACTER_TEXT} ${PIXEL_STYLE_TEXT} ${STYLE_REFERENCE_SCOPE_TEXT} 高可读性游戏角色设定图,偏像素动画前置设计稿,形体清晰,服装层次明确,道具/权杖/武器如有则存在关系合理,便于后续连续动作生成。`,
|
||||
CONCEPT_INTERPRETATION_TEXT,
|
||||
HUMANLIKE_PRIORITY_TEXT,
|
||||
CONCEPT_HIERARCHY_TEXT,
|
||||
THEME_APPLICATION_BOUNDARY_TEXT,
|
||||
`视角要求:角色采用横版动作素材常用的右向斜侧身站姿,身体整体朝右,但保留少量正面信息,能读到面部轮廓与胸肩结构,不是完全 90 度纯右视图,也不是正面立绘。`,
|
||||
`主体要求:画面中只保留单个角色主体,不要额外人物、动物、召唤物、载具或陪体。`,
|
||||
`画面要求:1:1 正方形画布,画面中心构图,角色主体完整置于画面中央,不要裁切主体顶部和底部,不要镜头透视,不要特写。背景固定为纯绿色绿幕,只作为抠像底色,不出现建筑、室内布景、风景、地面道具、漂浮物、烟雾叙事元素或其他角色以外的场景内容。`,
|
||||
`风格要求:Q版大头身动作角色,头身比固定控制在 2 到 3 头身,头部占比明显更大,类似横版像素 RPG 可扮演角色的比例,不要写实长身比例。高可读性游戏角色设定图,偏像素动画前置设计稿,形体清晰,服装层次明确,道具/权杖/武器如有则存在关系合理,便于后续连续动作生成。`,
|
||||
'请先拆解设定中的“身份词、主题词、身体结构词”。如果文字设定没有明确要求非人身体结构,默认优先使用参考图对应的人类或类人动作角色骨架,保持清楚的头、躯干、手臂和双腿轮廓,只有当文字设定明确要求鱼尾、触手身体、伞盖头部、无双腿、漂浮体、凝胶体或其他非人结构时,才改为对应非人身体。',
|
||||
'主题词默认只作用在角色自身的服装剪裁、材质、纹样、饰品、武器和发光细节上,不要把主题词自动扩写成背景建筑、自然场景、漂浮装饰或额外环境物件。',
|
||||
'视觉优先级应当是:身体结构词第一,身份词第二,主题词第三。没有明确身体结构词时,默认用人形拟人化表现,再把主题词转译成服装和装饰。',
|
||||
characterBrief.trim(),
|
||||
]
|
||||
.filter(Boolean)
|
||||
@@ -149,11 +148,11 @@ export function buildVideoActionPrompt(options: {
|
||||
}) {
|
||||
return [
|
||||
`单人全身角色动作视频,动作主题是 ${options.actionTemplate.label}。`,
|
||||
`角色固定为图1同一角色,保持右向斜侧身动作视角,镜头稳定,轮廓清晰,不要退化成完全 90 度纯右视图。${CHIBI_STYLE_TEXT} ${CHIBI_CHARACTER_TEXT} ${PIXEL_STYLE_TEXT} ${STYLE_REFERENCE_SCOPE_TEXT}`,
|
||||
CONCEPT_INTERPRETATION_TEXT,
|
||||
HUMANLIKE_PRIORITY_TEXT,
|
||||
CONCEPT_HIERARCHY_TEXT,
|
||||
THEME_APPLICATION_BOUNDARY_TEXT,
|
||||
`角色固定为图1同一角色,保持右向斜侧身动作视角,镜头稳定,轮廓清晰,不要退化成完全 90 度纯右视图。`,
|
||||
`视角要求:角色采用横版动作素材常用的右向斜侧身站姿,身体整体朝右,但保留少量正面信息,能读到面部轮廓与胸肩结构,不是完全 90 度纯右视图,也不是正面立绘。`,
|
||||
`主体要求:画面中只保留单个角色主体,不要额外人物、动物、召唤物、载具或陪体。`,
|
||||
`画面要求:1:1 正方形画布,画面中心构图,角色主体完整置于画面中央,不要裁切主体顶部和底部,不要镜头透视,不要特写。背景固定为纯绿色绿幕,只作为抠像底色,不出现建筑、室内布景、风景、地面道具、漂浮物、烟雾叙事元素或其他角色以外的场景内容。`,
|
||||
`风格要求:Q版大头身动作角色,头身比固定控制在 2 到 3 头身,头部占比明显更大,类似横版像素 RPG 可扮演角色的比例,不要写实长身比例。高可读性游戏角色设定图,偏像素动画前置设计稿,形体清晰,服装层次明确,道具/权杖/武器如有则存在关系合理,便于后续连续动作生成。`,
|
||||
`动作结构:${options.actionTemplate.sequenceLines.join(';')}。结尾要求:${options.actionTemplate.ending}。`,
|
||||
options.useChromaKey
|
||||
? '背景为纯绿色绿幕,无其他人物和场景元素,方便后期抽帧与抠像。'
|
||||
|
||||
@@ -1,6 +1,65 @@
|
||||
export type CustomWorldWorkStatus = 'draft' | 'published';
|
||||
export type CustomWorldWorkSource = 'agent_session' | 'published_profile';
|
||||
|
||||
export interface WorldPromiseValue {
|
||||
hook: string;
|
||||
differentiator: string;
|
||||
desiredExperience: string;
|
||||
}
|
||||
|
||||
export interface PlayerFantasyValue {
|
||||
playerRole: string;
|
||||
corePursuit: string;
|
||||
fearOfLoss: string;
|
||||
}
|
||||
|
||||
export interface ThemeBoundaryValue {
|
||||
toneKeywords: string[];
|
||||
aestheticDirectives: string[];
|
||||
forbiddenDirectives: string[];
|
||||
}
|
||||
|
||||
export interface PlayerEntryPointValue {
|
||||
openingIdentity: string;
|
||||
openingProblem: string;
|
||||
entryMotivation: string;
|
||||
}
|
||||
|
||||
export interface CoreConflictValue {
|
||||
surfaceConflicts: string[];
|
||||
hiddenCrisis: string;
|
||||
firstTouchedConflict: string;
|
||||
}
|
||||
|
||||
export interface KeyRelationshipValue {
|
||||
pairs: string;
|
||||
relationshipType: string;
|
||||
secretOrCost: string;
|
||||
}
|
||||
|
||||
export interface HiddenLineValue {
|
||||
hiddenTruths: string[];
|
||||
misdirectionHints: string[];
|
||||
revealPacing: string;
|
||||
}
|
||||
|
||||
export interface IconicElementValue {
|
||||
iconicMotifs: string[];
|
||||
institutionsOrArtifacts: string[];
|
||||
hardRules: string[];
|
||||
}
|
||||
|
||||
export interface EightAnchorContent {
|
||||
worldPromise: WorldPromiseValue | null;
|
||||
playerFantasy: PlayerFantasyValue | null;
|
||||
themeBoundary: ThemeBoundaryValue | null;
|
||||
playerEntryPoint: PlayerEntryPointValue | null;
|
||||
coreConflict: CoreConflictValue | null;
|
||||
keyRelationships: KeyRelationshipValue[];
|
||||
hiddenLines: HiddenLineValue | null;
|
||||
iconicElements: IconicElementValue | null;
|
||||
}
|
||||
|
||||
export interface CustomWorldWorkSummary {
|
||||
workId: string;
|
||||
sourceType: CustomWorldWorkSource;
|
||||
@@ -284,6 +343,10 @@ export interface CustomWorldAssetCoverageSummary {
|
||||
|
||||
export interface CustomWorldAgentSessionSnapshot {
|
||||
sessionId: string;
|
||||
currentTurn: number;
|
||||
anchorContent: EightAnchorContent;
|
||||
progressPercent: number;
|
||||
lastAssistantReply: string | null;
|
||||
stage: CustomWorldAgentStage;
|
||||
focusCardId: string | null;
|
||||
creatorIntent: Record<string, unknown> | null;
|
||||
@@ -351,6 +414,7 @@ export interface CreateCustomWorldAgentSessionResponse {
|
||||
export interface SendCustomWorldAgentMessageRequest {
|
||||
clientMessageId: string;
|
||||
text: string;
|
||||
quickFillRequested?: boolean;
|
||||
focusCardId?: string | null;
|
||||
selectedCardIds?: string[];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user