我需要一种算法来渲染柔和的画笔笔触

时间:2020-03-05 18:59:34  来源:igfitidea点击:

我有一系列鼠标点,笔触宽度和柔软度。我可以绘制柔和的圆圈和柔和的线条。我应该使用哪种算法绘制点数组?我希望交叉线看起来也很漂亮,而且端点也不错。

解决方案

回答

我认为也许我们正在寻找样条算法。

这是样条教程,我们可能会发现有帮助:

[http://www.doc.ic.ac.uk/~dfg/AndysSplineTutorial/index.html]

大多数有关图形编程的书籍也涵盖了该主题。

干杯。

回答

我绝对会为此选择Bezier,尤其是我将实现分段立方Bezier,它确实易于实现和掌握,并且被3D Studio max和Photoshop广泛使用。

这是一个很好的来源:
http://local.wasp.uwa.edu.au/~pbourke/surfaces_curves/bezier/cubicbezier.html

假设我们在两个点之间有一个顺序,要设置四个控制点,我们应该执行以下操作:

我定义点P [i]和点P [i + 1]之间的切线

  • T1 =(P [i + 1]-P [i-1])
  • T2 =(P [i + 2]-P [i])

要创建两点之间的分段,请执行以下操作:

  • 控制点Q1:P [i]
  • 控制点Q2:沿Q1切线的点=> Q1 + 0.3T1
  • 控制点Q3:沿着与Q4相切的点=> Q4-0.3T2
  • 控制点Q4:P [i + 1]

我选择0.3T的原因是任意的,以使其具有足够的"强度",但又不过分,可以使用更详尽的方法来解决加速问题(C2连续性)。

享受

回答

我想出了一个非常柔软的渐变圆,反复画出一个笔画,并使用乘法进行混合。

回答

从Gooch&Gooch的"非真实感渲染"开始,我们可能会发现Pham的作品很有用,请参阅PDF解释算法。

Tateosian有一篇不错的概述文章,其中用漂亮的图片更详细地解释了其他技术。仅靠贝塞尔曲线绘制并不能产生想要的效果(取决于想要获得的效果)。但是,我当然会从Paul的工作开始,看看用软笔画一下是否足够好。

有人警告,这个领域有很多专利。