免裝 Python 就能做動畫了,而廚房裡的人最懂「備料一整晚」的苦
一位開發者把數學動畫引擎 Manim 搬進瀏覽器、免裝 Python,我們把這件「省掉備料直接開火」的事,翻譯成廚房裡的備料、爐火與一盤熱菜上桌的故事。
9 月 9 日,V2EX 上有人分享了作品:一個能在瀏覽器裡直接跑 Manim 的網站。Manim 是那套很有名的數學動畫引擎,頻道 3Blue1Brown 裡那些會動的函數圖形、旋轉的幾何體,都是它畫出來的。做這個站的人說,起因很簡單:他想做點動畫,結果一整晚都耗在裝環境上。Python 版本對不上、套件安裝超時、LaTeX 要下載好幾個 GB、中文字體缺東缺西,每一關都卡人,而這些事情跟「做動畫」本身沒有半點關係。
所以他後來把這一整層拿掉了。用瀏覽器技術把真正的 Manim 引擎搬進網頁裡,打開就能寫、就能跑、就能匯出影片,什麼都不用裝。
這件事看起來是工程師的新聞,但你如果進過廚房,會覺得這個故事熟得不得了。
想做一道菜,卻先花了一整晚備料
你有沒有過這種經驗:晚上突然很想喫一盤炒得鑊氣十足的牛肉河粉,於是出門買材料。牛肉要逆紋切薄片,河粉要挑寬的、當天做的,豆芽要掐頭去尾,醬汁裡的生抽老抽蠔油糖得先調好一碗。等你把這些全部處理完,抬頭一看,十一點了。
火都還沒開。
這就是那位開發者遇到的困境。他想做的只是「一段動畫」,就像你想做的只是「一盤河粉」,可是真正喫掉時間的,是前置作業。切肉的刀要磨,砧板要洗,醬要調,這些工當然重要,但它們不是那道菜好喫的原因。菜好不好喫,看你下鍋後那三十秒的手感:鍋燒到冒煙,油滑一圈,牛肉下鍋那聲「嗤啦」,邊緣從粉紅轉成焦褐,香氣竄上來的那一瞬間。
他把環境安裝這一層刪掉,等於是把砧板上的活全部包辦好,你走到爐前,鍋已經熱了。
這和我們之前聊過的改一味不用重燉整鍋是同一種體貼:真正耗人的往往不是那道菜,而是每次都要從頭來過的周邊流程。能省一次是一次,省下來的力氣,留給鍋裡的那三十秒。
慢一點沒關係,打得開比較重要
這個站有個技術取捨,我覺得很像家裡那口舊炒鍋。
開發者選擇用比較通用的繪圖方式渲染,而不是最新最快的那種。代價是慢一些,好處是真的能打開。他說,許多機器跟瀏覽器還跑不動最新的技術,連通訊軟體內建瀏覽器都開不了。所以他寧可慢,換一個「人人都能用」。
廚房裡也一直是這樣。大火快炒的爐當然猛,可是大多數家庭爐臺的火力就是那樣,於是發展出來一整套「小火慢煸」的功夫:蒜頭用中小火慢慢煸到金黃,蔥油用小火熬半小時,紅燒肉先用糖色染出琥珀殼再燜一個半鐘頭。快不一定是好,能穩定做出來的,才是你的菜。
實測裡有個數字:一段切線動畫,480p、每秒十五幀、九十幀畫面,渲染約二點六秒。這速度對專業需求不算頂尖,開發者自己也說,四K長片這種重活,本機還是快得多。它接手的是「從入門到出片」這一段。就像家裡的電鍋:你不會用它辦一桌酒席,但今晚要一鍋蓬鬆的白飯,它從來沒讓你失望過。
那個會「看」的幫手
這個站還有個有意思的設計。它內建一個 AI 助手,你說一句話或傳一張題目照片,它就寫程式、試跑、讀錯誤訊息、自己改。特別的是,每次動畫跑成功,它會自動抽五張畫面拼起來給模型看。於是像「跑是跑通了,可是文字標籤跟圓形疊在一起」「字跑出畫面外」這種不會報錯、只有眼睛看得出來的問題,它也抓得到。
這簡直就是在描述廚房裡試菜的人。
程式碼的錯誤訊息,就像湯不夠鹹:嚐一口就知道,加鹽就好。可是「文字跟圖形疊到了」這種問題,是嚐不出來的,你得親眼看看那盤菜擺出來的樣子。顏色是否協調,分量是否勻稱,湯勺舀起來的稠度對不對,這些都得靠眼睛。會做菜的人都知道,舌頭和眼睛缺一不可。一鍋湯味道對了,但如果料全部沉底、上桌時看起來清清如水,那鍋湯就少了一半的說服力。
這個 AI 助手被教會了「看」,就像學徒終於被師傅允許站到出菜口,不只是躲在後場嚐味道。
家常菜的位置
當然它有短板。第一次進頁面要下載幾十 MB 的引擎,網路慢的時候等得更久;手機能看能跑,但編輯體驗普通;一些需要特殊套件的功能用不了。開發者列得老實,一項一項攤開,像菜單上寫明「本店牛肉今日售完」的那種老實。
這種老實,我覺得比功能本身可貴。它清楚自己接手的是「想試試看」的那一段,而不是要取代誰。就像巷口那家麵攤從不說自己是國宴主廚,但凌晨一點你餓的時候,它在那裡,火是開的,湯是滾的。
說到底,做菜最怕的從來不是難,是「還沒開始就被勸退」。想燉一鍋紅燒肉的人,如果第一關是「先去養一頭豬」,十個人有九個放棄。能夠把門檻拿掉、讓人先嚐到成果的味道,這份體貼,跟端上桌的那盤熱菜一樣實在。這也是我們聊過的十萬人以下的爐火,終於不用辦大餐背後同一個道理:把不必要的繁複拿掉,爐火才能留給真正想煮的人。
今晚若你想試點新東西,無論是寫一段會動的數學,還是挑戰一道沒做過的菜,記得一個原則:先把火開起來。備料的坑,能少一個是一個。味道,等下鍋之後再慢慢調。