anidoodle 是做什麼的?
完全由程式碼繪製的圖像、影片與互動作品。一個純函數繪製每一幀畫面;另一個純函數合成每一段音訊樣本。相同的原始碼在任何機器上、任何尺寸、任何長度下,都能重建相同的像素與相同的聲音。
引擎只是最簡單的部分。作品之所以被丟棄,是因為沒有重點、主題只是自身的圖示、風格只是調色盤的更換、音樂沒有形式,或是創作者耗盡耐心去審核片段。這項技能承載了避免這些問題的工藝。
從提問開始,然後建構
閱讀 references/workflows/start-here.md 並執行其導入流程:一次只問一個問題,只針對請求中未明確的部分,並先提出你的建議。他們在創作什麼,採用哪種風格(顯示圖庫表:https://github.com/alexgreensh/anidoodle/blob/main/skills/anidoodle/assets/styles.jpg;列表位於 references/styles/INDEX.md),什麼形狀(1x1、9x16、16x9、4x5 或任意寬 x 高),多長(任意長度;永遠不要設上限),什麼聲音(靜音或某種音樂風格與情緒),哪些角色。「你決定」代表你來選擇,並用一句話說明理由。在開始繪製前,將答案寫成一份簡短的簡報。
你在創作什麼?
| 創作類型 | 閱讀文件 |
|---|---|
| 靜態插圖:主圖、重點插圖、封面、卡片、海報、系列作品 | 下方的靜態工作流程,references/formats.md |
| 會自己繪製的圖像(縮時、幕後花絮) | references/workflows/drawing-process.md |
| 循環動畫、貼圖、動態標誌、背景動畫 | 下方的循環工作流程,references/formats.md |
| 故事短片,任意長度 | 下方的影片工作流程,references/workflows/long-film.md |
| 解說動畫或資訊圖表 | references/workflows/explainer.md |
| 產品發布或宣傳影片(歡迎使用他們的截圖) | references/workflows/launch-video.md;建構在 references/workflows/launch-video-kit.md 之上 |
| 對 UI 產生反應的互動式網頁動畫 | references/workflows/interactive.md |
| 繪畫教學,或「我要怎麼畫這個?」 | references/workflows/teach-drawing.md |
| 在任何風格下保持完全一致的角色(從木刻到積木風格) | references/workflows/character-consistency.md,references/anatomy.md |
| 從他們的圖片比對出風格 | references/workflows/adapt-a-style.md |
| 配樂或原聲帶 | references/music/README.md |
- 音樂:為你的影片創作自己的配樂(
references/music/README.md);node tools/music.mjs check <score.ts#export>必須通過,才能讓人類聆聽。 - 音效:
references/music/sound-design.md。14 種分層、帶種子的音效,由影片影格觸發(透過filmSfx);配樂會進行閃避,且每個音效提示必須在配樂音量的 6 dB 範圍內。音效僅在實際方向改變時使用,每部影片一個上升音效加一個撞擊音效。 - 產品發布影片:
launchTemplate.ts能從數據渲染產品的發布內容:提示、為此繪製的圖版、為此創作的配樂、文字、安裝指令;節省 token 的習慣記載於references/working-method.md。
七條定律
- 每件作品都有一個重點。 靜態插圖:一個想法、一個焦點主體、一束光。一部影片:一個轉變、一個回報、一個會回歸的象徵。 →
references/storytelling.md - 明確說明寫實程度。 對於動物、物體和人物,都要說出解剖結構、視角以及你參考的資料。 →
references/realism-and-craft.md,references/anatomy.md - 風格是一種做標記的方式。 改變介質、邊緣和標記的順序,而不只是調色盤。 →
references/styles.md - 先用一張靜態插圖證明外觀,再進行端到端建構。 之後,設置關卡反而弊大於利。 →
references/working-method.md - 合約是絕對的。 只能使用純函數
(frame, env)(對於互動作品,還包括輸入日誌),僅使用rng(seed),不使用時鐘,不使用ctx.filter。不產生或下載任何東西;使用者提供的圖片可以嵌入,並透過雜湊值固定。 →references/determinism-and-contract.md - 音樂需要計劃,而不是形容詞。 風格、每個段落的情绪、作為數據的樂譜,然後進行測量。你無法聽到它,所以在上架前必須由一位人類聆聽。 →
references/music/ - 一人指導,一人建構,兩人都要寫下所有事情。 當工作階段品質下降時,重新開始;檔案就是記憶。 →
references/working-method.md
工作流程
靜態插圖。 (1) 用一句話說出想法;說出焦點主體和光線。 (2) 對任何存在的實物打開真實參考資料,並記錄是哪個。 (3) 選擇風格,並先閱讀其圖版標題。 (4) 按照該介質的順序繪製。 (5) 使用 still.mjs 以完整尺寸渲染,對裁切區域(臉部、手部、腳部、關節;請參閱 references/craft-bar.md)執行細節檢查,並以書面方式進行評論。 ✋ 一次審核。 (6) 從相同原始碼交付所有要求的尺寸和形狀,並說明已列印 reproducible。
循環動畫。 如同靜態插圖,再加上:每個動作在循環中是週期性的,主體永不停止,每秒都有東西在動。檢查接縫(最後一幀與第 0 幀)。 ✋ 一次審核,在動態檔案上進行。
影片。 (1) 用三句話說出故事(設定、轉變、回報)和象徵;對於較長的影片,加上一個主幹和每章一句話。如果你寫不出來,就停止。 (2) 網格:一個節拍 = 60 x fps / bpm 幀,bpm 來自簡報中的配樂;一個提示表格記錄每個影格編號,並在載入時運行檢查器。 (3) 對任何存在的實物使用真實參考資料。 (4) 一張外觀檢查用的靜態圖,選取最難的影格,以書面方式評論。 ✋ 審核。 (5) 一個 8 秒的音樂樣本。 ✋ 審核。 (6) 建構整部影片;機械檢查持續運行。 (7) 從渲染的檔案進行一次審查:每個節拍一個連絡表,每個剪接成對顯示,靜音時段數據。一份排序後的修正清單,一次重建。 (8) ✋ 最終審核。 說明你驗證了什麼,以及你無法驗證什麼。
最多三個審核關卡。審核是一種預算;將其花在出錯代價高昂的地方。
工藝標準
測試標準:一位自豪的人類插畫家會交付這個作品嗎?還是這只是機械式的形狀組合?完整的判斷指標表位於 references/craft-bar.md。最常見的致命問題包括:由橢圓構成的主體、僅重新著色的風格替代、淡入而非繪製的物件、關節如同橡膠般的人物,以及在不同鏡頭中畫法不一致的角色。
任何會動的作品都不能有死音:每秒必須有可見的變化。一部會自我繪製的影片應宣告 kind: "drawing",並以更嚴格的標準評判;靜止畫面仍算失敗。
引擎
engine/ 是可攜式藝術核心加上工具集。engine/src/canvas-core 對 DOM 或任何後端一無所知。W、H、fps 和 durationFrames 來自影片的 meta。鏡頭運動(平移、縮放、視差、晃動)來自 engine/src/canvas-core/camera.ts:請參閱 references/camera.md。render.mjs --blur N 使用動態模糊渲染(N 個子影格在線性光下平均);預設路徑則保持不變。
node <skill>/engine/tools/scaffold.mjs ~/art --film intro --format 9x16 --duration 12 # 秒
cd ~/art && npm install && npx playwright-core install chromium
node tools/still.mjs intro --frame 0 --out out/look.png --scale 2 # 一張靜態圖,附帶雜湊值
node tools/render.mjs intro # MP4;--out x.gif|x.webm|x.apng
node tools/gate.mjs intro # 確定性、合約、死音
node tools/emit.mjs intro --out out/intro.html # 一個自包含的單機播放器
| 工具 | 功能 |
|---|---|
scaffold.mjs | 建立包含靜態圖和/或影片的專案;--duration、--format 或 --size、--fps、--bpm |
still.mjs / render.mjs | 繪製兩次影格並附帶雜湊值(--frames a,b,c --sheet 在一個瀏覽器中) / 以任何格式渲染作品(--from/--to、--poster-frame、--hashes) |
gate.mjs | 確定性、合約、死音、偽影;--self-test 證明它可以失敗 |
registry.mjs / gallery.mjs | 直接從圖版讀取的風格列表 / 圖庫表 |
docs-check.mjs | 當任何文件的風格計數、長度或路徑與程式碼不一致時失敗 |
verify-export.mjs | 對渲染檔案進行品質保證:影格、時長、配樂;可選首幀檢查、循環接縫檢查、--delivery |
test.mjs (npm test) | engine/test/ 中的單元測試套件,無需瀏覽器 |
music.mjs | 渲染並測量配樂;check 對其進行檢查(調性、主音量、保護、分軌、新穎性) |
sfx.mjs | 音效工具組:list、one、kit <dir>、test |
四個後端,一個藝術核心:playwright、html-player、remotion、hyperframes。
→ references/backends-and-adapters.md
實作範例
- 風格圖版位於
engine/src/canvas-core/:每個風格都有一張靜態圖和一部繪製過程的影片,並在標頭和references/styles/<id>.md中提供配方。 - MECHANICAL LEPIDOPTERA 位於
example/:一部 47 秒的有配樂影片。使用scaffold.mjs ~/study --example。
研究它們。不要複製它們。 工藝標準無法透過繼承來滿足。
誠實的限制
你無法聽到配樂、觀看影片動態,或使用互動式作品。關於它們的所有聲明都來自測量或人類的回饋;請說明是哪一種。一個綠色勾號在重新執行之前都只是聲明。在信任一張靜態圖之前,先用 --scale 2 渲染一個影格:透過錯誤變換合成的圖層在 1 倍率下看起來正常,但在 2 倍率下就會出現問題。