Communitygithub.com

z1fex/06-角色與臉部表情

為任何主題建立原創3D卡通角色(圓頭、豆型身體、細枝四肢、連指手掌),搭配膚色、品牌配色服裝、髮型、帽子、眼鏡與鬍子,並透過眨眼切換繪製臉部表情來演出。用於影片選角時使用。

06-角色與臉部表情 是什麼?

此技能提供了在3D場景中快速建立卡通角色並賦予其豐富表情表演的完整管線。開發者可透過 `makeCharacter()` 函式定義角色的身體比例、膚色、雙色豆型身體、髮型、帽子、眼鏡與鬍子等外觀,並將歷史人物或抽象物體(如蘋果、行星)轉化為一致風格的卡通造型,同時避免版權角色。臉部系統使用平面貼花(decal),支援多達20種表情(如中性、震驚、得意、暈眩等),並嚴格遵循「透過眨眼切換表情」的動畫規則——在重音節拍前2幀完成切換,且不允許形變過渡,確保卡通表演的節奏感與清晰度。角色可添加手持道具(如書本、保齡球),並支援自然眨眼列表。此技能特別適合需要在手機螢幕上清晰區分角色、並透過表情驅動敘事的影片或動畫專案。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/z1fex/3D-Cartoon-Style-Animation-Claude-Skill/tree/HEAD/skills/06-characters-and-faces

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

6 · 角色與臉部表情

身體

makeCharacter(spec) 在 recipe/engine/character.mjs 中建立骨架:頭部半徑 0.42、身體高度 0.8、腿部 0.52、手臂 0.30 + 0.28。這些比例即為風格:大圓頭、分為上下兩色的豆狀身體、細瘦的 Anthracite 色細枝四肢、膚色連指手掌、圓潤的 Cognac 色鞋子。

const host = makeCharacter({
  name: 'host', skin: SKIN.tan,
  top: BRAND.blueCoral, bottom: BRAND.anthracite, split: 0.32, width: 1.0,
  hair: 'curly', hairColor: '#2a1d18',
  hat: null, glasses: true, beard: false,
  face: { browColor: BRAND.anthracite, browThick: 3.4, mustache: null },
  extras: torso => { /* 添加領巾、鈕扣、徽章、工具腰帶… */ },
});
host.root.position.set(x, 0, z); place.scene.add(host.root);
選項值
skinSKIN.light / fair / medium / tan / brown / deep,或任意十六進位色。可混合使用於不同角色。
top, bottom, split, width豆狀身體的兩種顏色、交界位置(0–1 表示高度)、以及寬度係數(1.06 使身材更壯)。
hairshort(或 cap)、bob、bun、ponytail、curly、spiky、bald,以及兩種時代假髮:newton(長捲髮)與 einstein(帶自發光的凌亂白髮)。
hat / hatColorcap、tophat(可搭配 hatBand)、helmet(圓頂盔)、hardhat、beret、crown
glassestrue 或指定鏡框顏色:圓框覆蓋於繪製的眼睛之上。
beardtrue(使用髮色)或指定顏色。
face{ browColor, browThick, mustache }:眉毛顏色與粗細,以及可選的繪製鬍子顏色。
extras(torso)使用 part(geometry, color) 添加服裝零件:領巾、領子、鈕扣、徽章、工具。

為新主題設計角色: 先選擇輪廓(在手機尺寸下,頭髮或帽子形狀是最明顯的識別特徵),然後為上衣選一個品牌主色,再選膚色。歷史人物將被繪製成我們自己的卡通風格:時代感的頭髮和服裝就已足夠(牛頓的捲曲假髮與 Rouge Noir 大衣;愛因斯坦的凌亂白髮、鬍子與 Blue Coral 毛衣)。切勿複製受版權保護的角色。

帶有臉部的物體(蘋果、行星、分子、機器):使用 faces.mjs 中的 faceDecal(radius, { skin: <物體顏色> }) 為它們添加臉部,將眼皮顏色設為物體顏色,並將該物體的群組加入場景的 faceCamera 清單,使其能面向鏡頭。

臉部

頭部前方的平面繪製貼花(faceDecal):眉毛、帶瞳孔與高光的眼睛、嘴巴、沒有鼻子,所有元素皆來自同一組形狀家族。無唇形同步;臉部表情即為表演本身。

表情(faces.mjs 中的 EXPRESSIONS):neutral, content, sleepy, surprised, shocked, curious, thinking, eureka, delighted, smug, knowing, confused, worried(帶一滴汗)、proud(臉紅)、no, wheee, dizzy(螺旋眼)、lookDown。若要新增表情,複製一個現有條目並修改眉毛 [內側角度, 外側角度](度數)、lid(0 睜開 … 1 閉合)、look(瞳孔偏移)、eye 與 pupil 縮放、以及 mouth(flat, smile, smirk, side, wavy, o, grin, shout)。

臉部切換(參考規則,已測量)

  • 僅能透過眨眼切換:一個半閉框架,一個全閉框架,然後出現新臉孔。
  • 新臉孔需在重音單詞前 2 幀出現(W(i) - FACE)。
  • 禁止在表情之間形變過渡。
  • 主要角色約每 1.2 秒換一次新臉;物體則在其故事節拍處切換(蘋果在「wrong」這個詞上從 smug 轉為 shocked)。
  • 長時間保持表情時的自然眨眼:傳入 blinks 時間列表。
rig.faceAt(t, [[0, 'curious'], [W(17) - FACE, 'smug']], [0.75, 6.2]);   // 切換,然後自然眨眼
objectFace.set('shocked');                                              // 物體直接設定

雙手與手持道具

rig.handPos('L' | 'R' | 'both') 回傳目前姿勢下手部的世界座標;每一幀將手持道具放置於該位置(牛頓手中的書,愛因斯坦丟擲保齡球前的球)。rig.headPos() 提供頭部中心位置以供取景。

檢查事項

  • 在手機尺寸下,能否僅憑輪廓區分每個角色?
  • 眼皮顏色是否與膚色或身體顏色一致(避免眨眼時透視)?
  • 臉部是否在每個表演鏡頭中都面向攝影機?

Individual skills in this repo

This repo contains 3 individual skills — each has its own dedicated page.

相關技能