本文实例为大家分享了p5.js绘制自画像的具体代码,供大家参考,具体内容如下
绘制结果
人物头上的呆毛会一直运动,鼠标出现在画面上时左上角会有一个小猫咪头随着鼠标移动,而且人物的眼睛也会一直看向小猫的方向
代码介绍
整个图全部由贝塞尔曲线,直线和圆组成
贝塞尔曲线的代码结构大概就是
beginShape(); vertex(180,600);//曲线起点 bezierVertex(180,600,300,100,420,600); //第一个控制点坐标,第二个控制点坐标,终点坐标 endShape(CLOSE);
控制点我完全是凭感觉找的,先写一个大概的位置,然后再慢慢调整坐标;
可以先在最后添加一行显示当前鼠标坐标的辅助代码
text(mouseX+" "+mouseY,mouseX,mouseY);
这样找点会方便很多;
然后就是反复用贝塞尔曲线,由于它是填充图形,所以要注意覆盖关系,先画头发,然后再身体,脸等等一层层往上;
动态的部分就是添加了两根会动的呆毛,设置时间,让它周期性左右摇摆
var t=millis()/500; stroke(254,219,126); strokeWeight(2); fill(255,245,204); beginShape(); vertex(300,70); bezierVertex(260+20*abs(sin(t)),60,275+20*abs(sin(t)),50,270+20*abs(sin(t)),30); bezierVertex(280+20*abs(sin(t)),50,275+20*abs(sin(t)),60,300,70); endShape(CLOSE); beginShape(); vertex(300,70); bezierVertex(310+20*abs(sin(t)),60,315+20*abs(sin(t)),50,320+20*abs(sin(t)),40); endShape(CLOSE);//呆毛
小猫原本是在衣服上不会动的
因为要做交互,想不出来还能做什么,所以把所有坐标都改成了跟mouseX,mouseY相关的变量;
然后把眼睛高光的圆心坐标也改成了会随鼠标点移动的变量:
var t1=(mouseX-300)/300*4.5; var t2=(mouseY-235)/365*4.5; fill(255); noStroke(); ellipse(253+t1,235+t2,5,10); ellipse(353+t1,235+t2,5,10);//眼睛高光
总结
这次试验总体难度不算大,就是要一直计算调整坐标非常麻烦,所以也只能画出这种笔画非常少的简笔画,再复杂写实一点可能会比较困难,其实代码大部分都是重复的,只用改一下坐标就可以了,总的来说做起来还是很有趣的。
完整代码
function setup(){ createCanvas(600,600); } function draw(){ background(249,234,239); fill(255); drawgirl(); drawcat(); // text(mouseX+" "+mouseY,mouseX,mouseY); } function drawgirl(){ stroke(254,219,126); strokeWeight(2); fill(255,243,187); beginShape(); vertex(130,600); bezierVertex(-50,470,230,470,80,350); bezierVertex(20,290,100,260,135,220); bezierVertex(180,150,150,70,300,60); bezierVertex(450,70,420,150,465,220); bezierVertex(500,260,580,290,520,350); bezierVertex(370,470,650,470,470,600); endShape();//头发 fill(197,235,255); stroke(252,235,160); beginShape(); vertex(180,600); bezierVertex(180,600,300,100,420,600); endShape(CLOSE);//身体 fill(255); stroke(244,206,200); beginShape(); vertex(180,220); bezierVertex(180,400,290,300,290,380); bezierVertex(290,410,310,410,310,380); bezierVertex(310,300,420,400,420,220); bezierVertex(420,220,330,200,300,130); bezierVertex(270,200,180,220,180,220); endShape(CLOSE);//脸 beginShape() vertex(179,223); bezierVertex(150,225,150,250,181,258); endShape(CLOSE); beginShape() vertex(421,223); bezierVertex(450,225,450,250,419,258); endShape(CLOSE);//耳朵 noFill(); stroke(254,219,126); beginShape(); vertex(420,220); bezierVertex(420,220,330,200,300,130); bezierVertex(270,200,180,220,180,220); bezierVertex(180,220,270,200,300,130); bezierVertex(330,200,420,220,420,220); endShape(CLOSE);//发际线 stroke(227,156,160); strokeWeight(3); beginShape(); vertex(230,210) bezierVertex(245,200,260,200,270,210); bezierVertex(260,200,245,200,230,210); endShape(CLOSE); beginShape(); vertex(370,210); bezierVertex(355,200,340,200,330,210); bezierVertex(340,200,355,200,370,210); endShape(CLOSE);//眉毛 stroke(227,109,115); beginShape(); vertex(290,300); bezierVertex(295,310,305,310,310,300); endShape();//嘴巴 fill(0); ellipse(250,240,15,25); ellipse(350,240,15,25);//眼睛 var t1=(mouseX-300)/300*4.5; var t2=(mouseY-235)/365*4.5; fill(255); noStroke(); ellipse(253+t1,235+t2,5,10); ellipse(353+t1,235+t2,5,10);//眼睛高光 noStroke(); fill(254,221,224); ellipse(230,280,25,25); ellipse(370,280,25,25);//腮红 var t=millis()/500; stroke(254,219,126); strokeWeight(2); fill(255,245,204); beginShape(); vertex(300,70); bezierVertex(260+20*abs(sin(t)),60,275+20*abs(sin(t)),50,270+20*abs(sin(t)),30); bezierVertex(280+20*abs(sin(t)),50,275+20*abs(sin(t)),60,300,70); endShape(CLOSE); beginShape(); vertex(300,70); bezierVertex(310+20*abs(sin(t)),60,315+20*abs(sin(t)),50,320+20*abs(sin(t)),40); endShape(CLOSE);//呆毛 } function drawcat(){ stroke(191,126,120); fill(254,211,179); beginShape(); vertex(mouseX-48,mouseY-33); bezierVertex(mouseX-50,mouseY-45,mouseX-50,mouseY-60,mouseX-31,mouseY-49); endShape(CLOSE); beginShape(); vertex(mouseX+8,mouseY-33); bezierVertex(mouseX+10,mouseY-45,mouseX+10,mouseY-60,mouseX-9,mouseY-49); endShape(CLOSE);//猫耳朵 fill(255); ellipse(mouseX-20,mouseY-20,60,55);//猫猫头 noStroke(); fill(254,211,179); beginShape(); vertex(mouseX-50,mouseY-20); bezierVertex(mouseX-30,mouseY-20,mouseX-20,mouseY-30,mouseX-20,mouseY-40); bezierVertex(mouseX-20,mouseY-30,mouseX-10,mouseY-20,mouseX+10,mouseY-20); bezierVertex(mouseX+10,mouseY-60,mouseX-50,mouseY-60,mouseX-50,mouseY-20); endShape(CLOSE); stroke(191,126,120); beginShape(); vertex(mouseX+10,mouseY-20); bezierVertex(mouseX+10,mouseY-60,mouseX-50,mouseY-60,mouseX-50,mouseY-20); bezierVertex(mouseX-50,mouseY-60,mouseX+10,mouseY-60,mouseX+10,mouseY-20); endShape(CLOSE);//头上黄色部分的毛 stroke(191,126,120); fill(191,126,120); ellipse(mouseX-35,mouseY-27,5,10); ellipse(mouseX-5,mouseY-27,5,10);//眼睛 ellipse(mouseX-20,mouseY-22,4,2);//鼻子 noFill(); beginShape(); vertex(mouseX-28,mouseY-14); bezierVertex(mouseX-24,mouseY-13,mouseX-22,mouseY-14,mouseX-20,mouseY-15); bezierVertex(mouseX-18,mouseY-13,mouseX-16,mouseY-13,mouseX-12,mouseY-14); endShape();//嘴巴 stroke(191,126,120); line(mouseX-50,mouseY-20,mouseX-43,mouseY-19); line(mouseX-48,mouseY-11,mouseX-42,mouseY-14); line(mouseX+10,mouseY-20,mouseX+3,mouseY-19); line(mouseX+8,mouseY-11,mouseX+2,mouseY-14);//胡子 }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]