跳至内容

近乎完美的像素画线条:Krita 谷歌暑期编程 (GSoC) 2024 项目简报

上一篇文章 | 2024年 九月 10 日 星期二 | 阅读所需时间: 4 分钟 | 下一篇文章

不知不觉又一个夏天* 过去了,今年的谷歌暑期编程项目 (GSoC) 也即将结束。

谷歌暑期编程 (GSoC) 项目的简要介绍

如果您熟悉 谷歌暑期编程 项目 (简称 GSoC),它是谷歌每年都会举办的一项活动,谷歌会向参与者支付报酬,让他们为像 Krita 这样的自由开源软件 (简称 FOSS) 项目贡献新功能和改进。这项活动对于各方来说都是双赢的:对于贡献者来说,这是一份不错的暑期工作和学习经验,还可以鼓励新鲜血液加入自由开源软件的工作中去。理论上它也能强化谷歌等公司所依赖的自由开源软件软件生态。

像许多其他自由开源软件项目一样,Krita 已经连续多年参与谷歌暑期编程活动,这些成功的项目带来了一些不错的改进,比如改进的资源管理器、全新的分镜头脚本面板、录像面板等等。

更重要的是,近年来谷歌向所有人敞开了大门 (不再只是面向高等教育学生),这样来自各行各业和不同背景的人都可以参与进来。我个人非常赞赏谷歌使得这个项目变得更加开放和公平。当然,要想成功被项目选中,你可能需要具备一定的编程基础知识和良好的沟通能力。

所以如果您觉得参与自由开源软件的开发有意思,而且你认为自己有能力,那么谷歌暑期编程活动或许是一个很好的途径,既可以让你获得报酬,又可以为您喜欢的自由开源项目项目做出贡献。

近乎完美的像素画线条

Krita 在今年的谷歌暑期编程活动中有一个项目:Ken Lo 的 Pixel Perfect Lines (完美的像素画线条),其目标是为像素画/精灵图画师创造更流畅的工作流程,让他们可以画出“完美”的单像素线条。

那么什么是一条“完美”的像素线条呢?

绘画的核心价值在于自我表达,所以并真正不存在客观上的好坏对错。不过任何画种都有一些人们喜闻乐见的惯例和传统,像素画也不例外。对于像素画来说,其中一个惯例就是对干净整洁、清晰明确的单像素线条的偏爱,这种线条常见于用于勾勒出角色或其他物体的轮廓的线条。按照我的个人理解,符合审美惯例的高质量单像素线条应该包含尽可能少的直角转折 (如 L 形、T 形等)。不使用直角即可画出优美流畅的曲线——这本来是大家觉得理所当然、不值一提的事情。然而当您在极低的分辨率下绘制像素画时,你会发现做到这一点这并没有想象的那么简单。

为了解决这个问题,Ken 的谷歌暑期编程项目计划为 Krita 添加一个新功能,让像素画师能够使用画笔的笔触绘制出平滑、流畅、单像素线条。目前这个项目已经接近完成,笔刷工具新增了一个全新的“像素画”平滑选项 (位于工具选项面板中),它将在很大程度上改善使用 Krita 绘制像素画的工作效率。

示例:

此图演示了有无像素画平滑模式的区别:红色线条没有使用平滑模式,绿色线条使用像素画平滑模式。红色线条中的蓝色像素是我们试图消除的直角像素。请注意:红色和绿色线条是分别手动绘制的,因此它们可能不完全相同。

这个平滑模式生成的线条其实还不能算是“完美的像素画线条”,但已经相当非常接近理想的效果了。我和 Ken 在这次谷歌暑期编程项目中为达到这个目标做了许多努力,Ken 进行了大量研究,探讨如何实现这一效果。然而我们最终的结论是,要在 Krita 中实现我们心目中的“完美的像素画线条”可能需要对程序的笔刷逻辑进行较大的更改,而谷歌暑期编程项目的剩余时间不足以完成这些更改。我认为这也是一个很好的教训——最初的计划碰壁之后,与其继续钻牛角尖,我们将不得不调整当初的目标以适应新情况。

也就是说,即便使用了像素画平滑,画出的线条会依然带有少量的直角像素,需要手动擦掉它们。但肯定的是,Ken 已经通过 2024 年的谷歌暑期编程项目大幅提升了 Krita 的单像素线条品质,我相信这将为所有使用 Krita 作为创作工具的精灵图画师、像素画师、游戏开发者等带来更好的使用体验。

当然,我们也不会就这样放弃实现完美像素画线条的目标。如果您有任何能帮助该功能更上一层楼的想法,请随时联系我们!

如何使用像素画平滑功能

前面我们介绍了这项功能的细节,现在让我们看看如何使用它。

要使用全新的像素画笔刷平滑算法,请先选择手绘笔刷工具或类似的工具,然后打开“工具选项”面板,在“防抖和笔画平滑”下拉菜单中选中“像素画”。如果您使用常规笔刷预设在大尺寸画布上绘制,您应该不会发现任何性能或者线条品质的变化。而如果您使用“像素画-1”笔刷预设时,您会发现大动态的笔触可以画出更漂亮的像素画线条。

在工具选项面板中点开“防抖和笔画平滑”下拉菜单,将它设置为“像素画”

结语

以上就是 Krita 在 2024 年谷歌暑期编程活动中的项目内容了。

我们衷心感谢谷歌再次与 Krita 这样的自由开源项目合作,为大家带来又一个成功的谷歌暑期编程项目。我们也感谢今年 Krita 谷歌暑期编程项目的参与者 Ken 所做出的贡献。

最后,请让我感谢所有 Krita 的支持者和贡献者——无论是像本期简讯这样通过谷歌暑期编程活动、还是通过 Krita 发展基金 向我们捐款、亦或是 源源不断的志愿者们提交的大量代码贡献,Krita 作为一个自由开源软件项目离不开您的支持。

Emmet

*在北半球是暑期,在南半球应该是冬季