你怎么画像蜡笔?

时间:2009-02-03 22:50:47

标签: graphics

Crayon Physics Deluxe是最近推出的商业游戏。观看主链接上的视频,了解我在说什么。

它允许您绘制形状并让它们与适当的物理反应。目标是使用您构建的装置和形状将球移动到屏幕上的星星上。

虽然游戏基本上是热门Box2D Physics Engine的包装器,但它确实有一个功能,我很好奇它是如何实现的。

它的绘图看起来非常非常像蜡笔。你可以看到蜡笔的质地,因为它绘制的厚度和暗度都有所不同,就像真正的蜡笔画一样。

alt text
(来源:kloonigames.com alt text
(来源:kloonigames.com

背景纹理可免费使用here

alt text http://img267.imageshack.us/img267/1488/crayonmh7.png
关闭蜡笔画 - 注意变化的黑暗

使用什么样的算法以看起来像蜡笔的方式渲染这些线?这是一个简单的纹理应用随机厚度和黑暗还是还有更多的东西?

7 个答案:

答案 0 :(得分:21)

我记得(很久以前)读过算法的简短描述:

  • 对于线条的一般形式,您将该线段在一个随机点处分成两部分,并将此点略微移离其位置(该变化取决于该点到四肢的距离)。递归/随机重复。 通过这种方式,你的线条不是“完美”(直线)

  • 对于给定的片段,您可以通过扩展一个肢体或另一个肢体(或两者)来“略微”过度。 通过这种方式,您没有完美的关节。如果我记得很清楚,最好是扩展原始肢体,但是如果你想要明显分割它们,你可以为子段做到这一点。

  • 使用pattern / stamp

  • 绘制线条
  • 还有(已经提到的)用不同的起始和结束不透明度绘制的可能性(模仿在绘图结束时释放笔的倾向)

  • 您可以在线条的开头和结尾使用不同尺寸的印章(也可以模仿在绘图结束时释放笔的倾向)。为了达到同样的效果,您还可以绘制两次线条,其中一个边缘有一个小的变化(在这种情况下要小心alpha,因为线条将被绘制两次)

  • 最后,对于给定的行,您可以多次执行先前的修改(即绘制两行,具有不同的变化):如果他们犯了一些错误,人们往往会重复一行。

    < / LI>

此致

答案 1 :(得分:7)

如果你把图像向上吹,你可以看到一个重复的印章图案......当它从a移动到b时,它可能会使用一个小的分类 - 甚至可能会旋转它们。

线路的摇摆不是那么难以做到的。划分为一堆随机区段,选择稍微偏离直接路线的位置并绘制样条线。

答案 2 :(得分:7)

这是一个paper,它使用大量的数学运算来模拟使用摩擦模型在纸上沉积蜡。但我认为你最好的选择是使用重复模式,正如另一位读者所提到的那样,并根据压力改变不透明度。

对于不完美的线条绘制部分,我有blog entry描述如何使用贝塞尔曲线来完成它。

答案 3 :(得分:4)

你可以根据速度来制定黑暗。这只是测量光标在此帧和最后一帧之间行进的距离(记住毕达哥拉斯定理),然后当你在屏幕上绘制该线段时,根据你测量的距离调整alpha(不透明度)。

答案 4 :(得分:4)

有一篇名为Mimicking Hand Drawn Pencil Lines的论文,涵盖了你所追求的一些内容。虽然它没有提供非常详细的算法视图,但作者确实涵盖了他们使用的步骤的基础知识。

本文包含有关如何生成线条的高级描述,以及它们如何为线条生成纹理,并且它们得到的结果与您想要的结果类似。

答案 5 :(得分:3)

关于rendering chart series to look like XKCD comics的这篇文章有一个扰乱行的算法,这可能是相关的。它不包括计算蜡笔画线的纹理,但它提供了一种方法,使人类的方式看起来不直观。

示例输出:

enter image description here

答案 6 :(得分:0)

我认为最简单的方法就是在整个过程中使用随机黑暗(可能是某些渐变)的纹理,并随机设置大小。