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是一个独特且深思熟虑的渲染引擎,挑战了传统的光栅化方法,专注于艺术性和精确性。