模拟刷笔效果的绘画应用

14

我正在尝试编写一个应用程序,可以使用模拟笔触创建类似于绘画的图片。是否有简单的方法来模拟笔触?例如,给定用户通过鼠标拖动鼠标的位置列表、笔刷宽度和笔刷纹理,如何确定要绘制到画布上的内容?

我尝试将笔刷纹理倾斜至鼠标移动方向,并在路径上涂抹几张笔刷贴图,但效果并不好。我认为我在角落处漏掉了笔刷纹理应缩小和扩大的地方。

如果能提供易于理解的简单链接,将不胜感激。我发现一些关于模拟油画等复杂学术论文,但我只想使用基本算法,如果可能的话,产生良好的结果就可以了。


除了坐标列表,你能获取时间戳吗?这可能让你暗化用户绘制缓慢或犹豫的运行。 - genpfault
为了逼真地模拟画笔的行为,您至少需要知道以下信息:坐标列表、压力、速度和笔/刷角度。普通鼠标只能收集有关坐标列表和速度的数据;您需要一个Wacom平板电脑来收集压力和可能的角度。您可以查看“Inkscape”如何使用其画笔工具,该工具对于仅使用鼠标绘图做得非常好。 - Lie Ryan
5个回答

8

2
Gooch的链接已经失效。请使用备用链接 - R D

7

这是一个经典的作品,来自1989年 - Paul Haeberli的 Dynadraw。它使用简单的动态模型来填充和平滑鼠标的原始位置。

虽然笔画是逐步绘制的多边形,但您应该能够使用动态过滤器生成的点来放置刷子纹理的副本。


谢谢,这看起来很有趣!我想知道是否有一个专门用于绘画笔触的类似算法。 - DrRobot
@DrRobot,我不确定你的意思是什么。Dynadraw确实是专门用于绘画笔触的,不是吗? - brainjam
哎呀,我以为这是一个类似笔的工具的模拟... :-/ 谢谢。 - DrRobot
@DrRobot,说得对,它很像笔。但正如我所说,应该很容易转换成刷子状。 - brainjam
@brainjam,我知道这段代码和这个线程都很老了,所以谁知道我是否会得到回应,但是网站上提到的“IRIS”是什么?它说“您可以将其保存到您的IRIS上,进行编译”,可能我错过了一些非常简单的东西或者太年轻不知道那是什么意思。 - LukeS
1
stackoverflow的蝙蝠信号运作良好。"Iris"是Silicon Graphics (SGI)在过去销售的一款图形工作站。例如,请参阅http://en.wikipedia.org/wiki/SGI_IRIS。 - brainjam

0
我能想到的方法是找出线上每个点画笔的强度,并在其上叠加许多均匀的纹理。每个纹理的alpha值对应着画笔在该位置向画布施加压力的“强度”。计算画笔施加压力的函数可能需要与输入相关联。
如果您进入像Photoshop或GIMP这样的工具,并观察它如何实现油漆刷工具,那么模拟接近它应该很容易。

我已经复制了GIMP目前的功能,但是GIMP似乎无法很好地模拟绘画。我已经设置了不透明度、间距和笔画角度跟随鼠标。由于画笔形状没有改变,所以转角看起来不正确,就像在GIMP中一样。 - DrRobot

0

虽然不完全符合您的要求,但我发现使用线条平滑技术(例如iPad上的Adobe Ideas或Mac上的Doozla)的应用程序可以产生更逼真和令人愉悦的画笔效果,因为您不会出现与跟踪鼠标移动完美相关的不自然的“锯齿”。


0
作为一位艺术家和热衷阅读的人,我有以下建议:在使用实线时,不要像添加自己的线条那样,而是从实线中“减去”图像。通过这样做,您可以保留角落的原有形状,然后图像的负空间将影响整个线条的纹理。不再有锯齿状的角落,线条看起来更加平滑。
此外,我喜欢Manilow提供的链接文章《使用区间样条模拟艺术笔触》,其中提出了一个很好的想法(非常感谢!): “Hsu等人引入了“骨架笔画”,这是可变形的图像,可以通过每个控制点进行锚定、缩放或变换。”
我认为这是处理急转弯的最佳方式。想象一下那些旧的文字艺术作品,您可以调整它们的拱形和曲线,文本会适应它们,但使用纹理图像。作为一位艺术家,我对任何不满意俗气的“火车车厢”线条的人表示感谢。谢谢大家。

根据目前的写法,你的回答不够清晰。请编辑以添加更多细节,帮助其他人理解这如何回答所提出的问题。你可以在帮助中心找到关于如何撰写好回答的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接