p5.js如何绘制创意自画的像

  介绍

这篇文章主要介绍p5。js如何绘制创意自画的像,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

具体内容如下

<强>绘制结果

 p5。js如何绘制创意自画像

人物头上的呆毛会一直运动,鼠标出现在画面上时左上角会有一个小猫咪头随着鼠标移动,而且人物的眼睛也会一直看向小猫的方向

<强>代码介绍

整个图全部由贝塞尔曲线,直线和圆组成
贝塞尔曲线的代码结构大概就是

beginShape ();   顶点(180600);//曲线起点//第bezierVertex(180600300100420600);,一个控制点坐标,第二个控制点坐标,终点坐标   endShape(关闭);

控制点我完全是凭感觉找的,先写一个大概的位置,然后再慢慢调整坐标;

可以先在最后添加一行显示当前鼠标坐标的辅助代码

文本(mouseX +“,“+像老鼠的,mouseX,像老鼠的);

这样找点会方便很多;

然后就是反复用贝塞尔曲线,由于它是填充图形,所以要注意覆盖关系,先画头发,然后再身体,脸等等一层层往上;

动态的部分就是添加了两根会动的呆毛,设置时间,让它周期性左右摇摆

var  t=米尔斯()/500;   ,   ,中风(254219126);   ,strokeWeight (2);   ,填满(255245204);   ,beginShape ();   ,顶点(300、70);   ,bezierVertex (260 + 20 * abs (sin (t)), 60275 + 20 * abs (sin (t)), 50270 + 20 * abs (sin (t)), 30);   ,bezierVertex (280 + 20 * abs (sin (t)), 50275 + 20 * abs (sin (t)), 60300年,70年);   ,endShape(关闭);   ,beginShape ();   ,顶点(300、70);   ,bezierVertex (310 + 20 * abs (sin (t)), 60315 + 20 * abs (sin (t)), 50320 + 20 * abs (sin (t)), 40);   ,endShape(关闭);//呆毛

小猫原本是在衣服上不会动的

 p5。js如何绘制创意自画像

因为要做交互,想不出来还能做什么,所以把所有坐标都改成了跟mouseX,像老鼠的相关的变量;
然后把眼睛高光的圆心坐标也改成了会随鼠标点移动的变量:

var  t1=(mouseX - 300)/300 * 4.5;   var  t2=(像老鼠的- 235)/365 * 4.5;   填满(255);   noStroke ();   椭圆(253 + t1,235 + t2, 5、10);   椭圆(353 + t1,235 + t2, 5、10);//眼睛高光

<强>总结

这次试验总体难度不算大,就是要一直计算调整坐标非常麻烦,所以也只能画出这种笔画非常少的简笔画,再复杂写实一点可能会比较困难,其实代码大部分都是重复的,只用改一下坐标就可以了,总的来说做起来还是很有趣的。

<强>完整代码

function 设置(){   ,createCanvas (600600);   ,}   ,   function 画(){   ,背景(249234239);   ,填满(255);   ,   ,drawgirl ();   ,drawcat ();   ,   ,//文本(mouseX +“,“+像老鼠的,mouseX,像老鼠的);   }      function  drawgirl () {   ,   ,中风(254219126);   ,strokeWeight (2);   ,填满(255243187);   ,beginShape ();   ,顶点(130600);   ,bezierVertex (-50470230470、80350);   ,bezierVertex (20290100260135220);   ,bezierVertex (180150150、70300、60);   ,bezierVertex (450、70420150465220);   ,bezierVertex (500260580290520350);   ,bezierVertex (370470650470470600);   ,endShape();//头发         ,填满(197235255);   ,中风(252235160);   ,beginShape ();   ,顶点(180600);   ,bezierVertex (180600300100420600),,   ,endShape(关闭);//身体   ,   ,   ,填满(255);   ,中风(244206200);   ,beginShape ();   ,顶点(180220);   ,bezierVertex (180400290300290380);   ,bezierVertex (290410310410310380);   ,bezierVertex (310300420400420220);   ,bezierVertex (420220330200300130);   ,bezierVertex (270200180220180220);   ,endShape(关闭);//脸         ,beginShape ()   ,顶点(179223);   ,bezierVertex (150225150250181258);   ,endShape(关闭);   ,beginShape ()   ,顶点(421223);   ,bezierVertex (450225450250419258);   ,endShape(关闭);//耳朵   ,   ,   ,noFill ();   ,中风(254219126);   ,beginShape ();   ,顶点(420220);   ,bezierVertex (420220330200300130);   ,bezierVertex (270200180220180220);   ,bezierVertex (180220270200300130);   ,bezierVertex (330200420220420220);   ,endShape(关闭);//发际线         ,中风(227156160);   ,strokeWeight (3);   ,beginShape ();   ,顶点(230210)   ,bezierVertex (245200260200270210);   ,bezierVertex (260200245200230210);   ,endShape(关闭);   ,beginShape ();   ,顶点(370210);   ,bezierVertex (355200340200330210);   ,bezierVertex (340200355200370210);   ,endShape(关闭);//眉毛   ,   ,   ,中风(227109115);   ,beginShape ();   ,顶点(290300);   ,bezierVertex (295310305310310300);   ,endShape();//嘴巴         ,填满(0);   ,椭圆(250240,15日,25);   ,椭圆(350240,15日,25);//眼睛   ,   ,   ,var  t1=(mousex - 300)/300 * 4.5;   ,var  t2=(像老鼠的- 235)/365 * 4.5;   ,填满(255);   ,noStroke ();   ,椭圆(253 + t1,235 + t2, 5、10);   ,椭圆(353 + t1,235 + t2, 5、10);//眼睛高光         ,noStroke ();   ,填满(254221224);   ,椭圆(230280、25、25);   ,椭圆(370280、25、25);//腮红         ,var  t=米尔斯()/500;   ,中风(254219126);   ,strokeWeight (2);   ,填满(255245204);   ,beginShape ();   ,顶点(300、70);   ,bezierVertex (260 + 20 * abs (sin (t)), 60275 + 20 * abs (sin (t)), 50270 + 20 * abs (sin (t)), 30);   ,bezierVertex (280 + 20 * abs (sin (t)), 50275 + 20 * abs (sin (t)), 60300年,70年);   ,endShape(关闭);   ,beginShape ();   ,顶点(300、70);   ,bezierVertex (310 + 20 * abs (sin (t)), 60315 + 20 * abs (sin (t)), 50320 + 20 * abs (sin (t)), 40);   ,endShape(关闭);//呆毛   ,}         function  drawcat () {   ,   ,中风(191126120);   ,填满(254211179);   ,beginShape ();   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

p5.js如何绘制创意自画的像