生殖性虹膜

2020-06-23 05:23:17

以下是关于我的程序草图Iris如何工作的详细信息。这是我最近创作的最快、最有趣的素描之一。

有一天,我醒来对自己说:我应该画一幅丰富多彩的虹膜素描。我不记得为什么了。

我把它作为一个想法添加到我要创作的p5js草图清单中,上周三在等待布洛芬起作用时(我头疼了两天),就开始用它了。在短短两个下午的时间里,我就得到了一个令我非常满意的结果。

有几件事需要考虑“我会对此进行编程”。首先,问题是:这是可行的吗?在这种情况下,因为我知道它可以被“人类”画出来,所以答案是肯定的。下一个问题是我将如何做这件事?为了准备,我看了YouTube上关于如何用ProCreate画眼睛的教程。这给了我所需要的结构思想:如果您不知道如何绘制/绘制/构造对象,使用代码创建它是非常困难的。

我首先实现了一个边界模糊的实心圆。我对“疯狂之夜”中的月光和光环所做的大致相同。

有了这个,我就可以有一个虹膜(虽然是平的)和一个瞳孔(兴趣不大)。

下一步就是在虹膜上添加一些图案。虹膜有一个线形(如果我没记错的话,是肌肉纤维)图案从外面的瞳孔流出。在我的第一个实现中,我编写了瞳孔和外部虹膜之间的线条生成器。该方法将产生长度为N(对于大N)的线,其长度由辐射形状的Perlin噪声调整。我对这个学生使用了类似的方法。这是因为瞳孔不是完美的圆形,而是轮廓参差不齐(因为虹膜是肌肉)。

线的生成由外部瞳孔和外部虹膜之间的随机位置(以百分比表示)和边界之前任何可用的填充的大小百分比来参数化。因此,例如,如果初始位置在0.5(50%或中间),则大小为1(100%)的线将最大限度地延伸到虹膜有色区域的整个跨度。如果初始位置为0.9(因此,几乎在外部边界),100%大小将仅填充从80%的虹膜到100%的虹膜的宽度范围。

这是一个很好的开始,对于一个快速的编码过程来说,看起来相当不错。我增加了一些亮点:小学、中学和小学生。瞳孔是假的:真正的瞳孔不会发光,瞳孔是个洞。但是有了它图像看起来好多了,我不太在意。高光只是一组不透明度非常低的放射状线条。在第一个模型中,不透明度降低到边界,但沿半径是恒定的。

这个肌肉纤维模型在相对较低的分辨率下看起来不错,但放大后,很明显它就是Meh。更好的解决方案:用同样的方法构建多边形和等高线。代码上的差异很小,结果上的差异是显著的。你可以毫无问题地放大它,它看起来很不错。不过,带有行的旧代码仍然存在:将两者结合起来会产生最佳结果。我还找了一套很好的虹膜颜色。还需要稍微调整一下,有些果岭感觉太绿了。

在这个改变之后(在瞳孔中也有类似的改变),我调整了高光以使其更平滑。在p5js中很难得到真正平滑的“怪异”形状。最后,我手动调整了尺寸和数字,直到它看起来足够好。使用这种方法,Alpha交错是不可避免的。我一直在浮现的一个想法是,使用类似于这些弧形的多边形形状,但略有摇晃:这样你就会认为阿尔法锯齿和不平坦的边界结合在一起只是虹膜本身的产物。这是一个值得探索的想法,但我认为草图已经完成了。

我对纤维的圆盘起始角进行了随机化,并在珀林噪声中添加了一些种子。最后,添加散布在虹膜上的随机小椭圆。虹膜有这种随机性。

与多边形的闭合重合(使用curveVertex意味着您至少需要4个折点,并重复最后一个折点以确保它闭合…。我忘了\_(ツ)_/使它看起来比代码正常工作时看起来更参差不齐,但是结果更好。