You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
5.0 KiB
5.0 KiB
对白类型和画外音角色设计总结
设计日期: 2026-02-02
设计版本: v2.0(方案B)
设计演进
初始方案(已废弃)
- ❌ 在 role_type 中增加 4 = narrator(旁白)
- ❌ 问题:维度混乱(主角/配角/群演 按重要性分类,旁白按出场方式分类)
最终方案(已采纳)
- ✅ 保持 role_type 原样(1=主角, 2=配角, 3=群演)
- ✅ 新增 is_offscreen 字段标识画外音角色
- ✅ 新增 dialogue_type 字段区分对白类型
核心设计理念
三维度分离
维度1:角色重要性(role_type)
- 描述角色在剧情中的地位
- 1 = main(主角)
- 2 = supporting(配角)
- 3 = extra(群演)
维度2:出场方式(is_offscreen)
- 描述角色是否出现在画面中
- false = 出现在画面中(默认)
- true = 画外音角色(如纪录片解说员)
维度3:对白类型(dialogue_type)
- 描述对白的表现形式
- 1 = normal(普通对白)
- 2 = inner_monologue(内心OS)
- 3 = narration(旁白)
数据库变更
screenplay_characters 表
-- 新增字段
is_offscreen BOOLEAN NOT NULL DEFAULT false
-- 列注释
COMMENT ON COLUMN screenplay_characters.is_offscreen IS
'是否为画外音角色(不出现在画面中,如纪录片解说员)';
-- 索引
CREATE INDEX idx_screenplay_characters_offscreen
ON screenplay_characters(is_offscreen)
WHERE is_offscreen = true;
storyboard_dialogues 表
-- 新增字段
dialogue_type SMALLINT NOT NULL DEFAULT 1
-- 列注释
COMMENT ON COLUMN storyboard_dialogues.dialogue_type IS
'对白类型:1=normal(普通对白), 2=inner_monologue(内心OS), 3=narration(旁白)';
-- 索引
CREATE INDEX idx_storyboard_dialogues_type
ON storyboard_dialogues(dialogue_type)
WHERE dialogue_type != 1;
使用场景示例
场景1:纪录片解说员
{
"character": {
"name": "解说员",
"role_type": "main", // 重要性:主角(贯穿全片)
"is_offscreen": true // 出场方式:画外音
},
"dialogue": {
"content": "公元627年,唐僧踏上了西行之路...",
"dialogue_type": "narration" // 表现形式:旁白
}
}
场景2:甄嬛的回忆旁白
{
"character": {
"name": "甄嬛",
"role_type": "main", // 重要性:主角
"is_offscreen": false // 出场方式:画面中
},
"dialogue": {
"content": "那一年,我还是个天真的少女...",
"dialogue_type": "narration" // 表现形式:旁白(回忆画外音)
}
}
场景3:孙悟空的内心OS
{
"character": {
"name": "孙悟空",
"role_type": "main", // 重要性:主角
"is_offscreen": false // 出场方式:画面中
},
"dialogue": {
"content": "师父又在念紧箍咒了,我得忍住...",
"dialogue_type": "inner_monologue" // 表现形式:内心OS
}
}
设计优势
1. 维度清晰
- 三个维度互不干扰,各司其职
- 避免了分类标准混乱的问题
2. 灵活性高
- 支持任意组合:主角+画外音+旁白、主角+画面中+内心OS 等
- 不强制约束,保持最大灵活性
3. 扩展性好
- 未来可以轻松增加更多对白类型(画外音、独白、aside等)
- 可以增加更多角色属性(如 is_virtual 虚拟角色等)
4. 业务价值
- 资源库筛选:可以筛选
is_offscreen = true的角色 - AI生成优化:画外音角色不需要生成角色形象图片
- 统计分析:准确统计各类角色数量
- TTS处理:根据对白类型使用不同音色
前端实现建议
角色编辑表单
<FormField label="角色类型">
<Select value={character.roleType}>
<option value="main">主角</option>
<option value="supporting">配角</option>
<option value="extra">群演</option>
</Select>
</FormField>
<FormField label="出场方式">
<Checkbox checked={character.isOffscreen}>
画外音角色(不出现在画面中)
</Checkbox>
</FormField>
对白编辑表单
<FormField label="对白类型">
<Select value={dialogue.dialogueType}>
<option value="normal">普通对白</option>
<option value="inner_monologue">内心OS</option>
<option value="narration">旁白</option>
</Select>
</FormField>
时间轴对白轨道样式
const getDialogueStyle = (type: DialogueType) => {
switch (type) {
case 'inner_monologue':
return 'bg-purple-100 border-purple-400 italic';
case 'narration':
return 'bg-amber-100 border-amber-400';
default:
return 'bg-blue-100 border-blue-400';
}
};
相关文档
设计版本: v2.0
最后更新: 2026-02-02