AI News HubLIVE
站內改寫2 分鐘閱讀

Krbn:一款鉛筆風格3D渲染器,輸出SVG

Krbn是一個基於網路的引擎,用於非真實感的鉛筆風格渲染,專為抽象和技術場景設計。它透過分析幾何體生成筆觸,而非傳統的光柵化,支援精確的輪廓線、隱藏線處理、交叉陰影線等功能。該專案使用TypeScript編寫,採用MIT許可證,並利用AI輔助開發。

來源Hacker News AI作者: vpalos

Krbn是一個創新的Web引擎,專注於非真實感的鉛筆風格渲染,將3D場景轉換為可縮放向量圖形(SVG)。與傳統的圖形引擎不同,Krbn不關心畫素顏色,而是模擬藝術家繪製線條的方式——決定哪些線條應該畫,哪些應該省略。

引擎的核心在於推導、分類和樣式化幾何體的筆觸。例如,球體、圓柱體和圓錐體的輪廓不是透過取樣網格邊緣得到,而是透過封閉形式精確計算的圓錐曲線;環面則產生真正的四次曲線。隱藏線不會被Z緩衝區消除,而是被分析地分割為可見和幽靈部分,如同草稿師用淡線保留盒子的遠處邊緣。

透明度工作方式也與紙張相似:沒有alpha通道,交叉陰影線天生半透明,筆畫間的空隙揭示背後的內容。陰影由陰影線密度表示,形狀則由陰影線方向定義,沿著每個表面的曲率流動——球體上的緯線和經線,環面上的極向環,任意網格上的追蹤流線。

精確性是專案的價值觀,而非最佳化。交集是低次多項式的根;退化情況——切線、重合圓錐曲線、相切尖點——是規範而非邊緣情況。回報是值得信賴的輸出:相同場景始終產生相同、位元組一致、可比較的SVG。

另一個反轉是:作者提供語義,引擎提供機制。你標記重要、焦點、角色等屬性,Krbn決定畫什麼、淡化什麼、抽象什麼,如同插畫師決定畫面主題。

引擎還支援動畫:抖動基於穩定的筆觸身份進行種子化,因此手繪線條在幀間不會跳動。軌道攝像機滑動輪廓;沒有閃爍、跳躍或重新分配抖動。

Krbn最初是一個研究原型,現已發展成完整管線:解析圖元目錄和三角形網格透過相同的五階段流水線渲染,包括隱藏線可見性、建議輪廓、手繪抖動和可變寬度筆觸。它採用MIT許可證,使用TypeScript編寫。

專案由作者的童年夢想驅動,利用一次醫療休假終於得以實現。作者坦誠地指出,專案重度依賴AI輔助,但方向、架構和標準由人類決定。程式碼透過AI協作編寫,然後像其他程式碼一樣經過審查和測試。

功能包括解析圖元(球體、橢球體、圓柱體、圓錐體、平面、多邊形、線、點和環面,每個都有精確輪廓)、自由曲線(螺旋線、貝塞爾曲線和函式圖)、三角形網格、精確隱藏線、相交曲線、建議輪廓、陰影線及色調、曲率跟隨陰影線、手繪抖動、可變筆觸寬度、抽象(細節過小則丟棄、色調量化、重合線合併)、高亮(X射線強調)和確定性SVG輸出。

架構概述:場景由一組FeatureSource組成,每幀執行五階段:特徵提取(輪廓、摺痕、邊界、建議和相交曲線及陰影區域)、可見性分類(將每條曲線分割為可見/隱藏區間)、抽象過濾(丟棄低於閾值的細節、合併、應用重要性)、樣式化(權重、種子化抖動、可變寬度、虛線、幽靈、陰影密度)和發射(取樣分析曲線並交給後端,目前為SVG)。

專案佈局包括src目錄下的數學、曲線、管線、場景、圖元、後端、網格等模組。開發使用bun安裝依賴,執行型別檢查、構建和測試。

作者還提到了另一個專案AhaBlitz,一個幫助羅馬尼亞學生準備數學考試的遊戲。

總的來說,Krbn是一個獨特且深思熟慮的渲染引擎,挑戰了傳統的光柵化方法,專注於藝術性和精確性。