利用码绘与手绘表现婴儿的爬行动态效果

作品展示

首先是手绘的作品展示,由于手绘只画了7帧的关键帧,有一点点卡顿别太在意。。
在这里插入图片描述
接着码绘就是简单的骨骼联动,白色为左手左脚、蓝紫色为右手右脚(其实反过来看也无所谓只是便于区分防止看成同手同脚)。
在这里插入图片描述

码绘实现代码

float st1=0;
float x1=150;
float y1=200;
float x2=240;
float y2=230;
float x=0;
float y=10;
float color1=20;


void setup() {
  size(400, 400);
}

void draw() {
  float st2=1.8-0.5*cos(st1);
  float st3=1.8+0.5*cos(st1);
  float st4=2.5+0.6*cos(st1);
  float st5=2.5-0.6*cos(st1);
  float st6=1.2-0.2*cos(st1);
  float st7=1.2+0.2*cos(st1);
  float temp;
  background(0);
  
  stroke(color1,color1,80);
  fill(color1,color1,80);
  rect(x,y,90,320);
  rect(x+100,y,90,320);
  rect(x+200,y,90,320);
  rect(x+300,y,90,320);
  rect(x+400,y,90,320);
  rect(x-100,y,90,320);
  rect(x-200,y,90,320);
  rect(x-300,y,90,320);
  rect(x-400,y,90,320);
  x=x+2;
  color1=color1+0.2;
  if(x>=400){
    x=0;
    color1=20;
  }
  stroke(0);
  fill(0);
  rect(0,60,400,15);
  
  stroke(255);
  fill(255);
  ellipse(130+2*cos(2*st1), 155+2*cos(2*st1), 80, 80);
  line(130, 155, x1, y1);
  line(x1+20*sin(st1), y1, x1-20*sin(st1), y1);
  ellipse(x1+20*sin(st1), y1, 5, 5);
  line(x1, y1, x2, y2);
  line(x2-10*sin(st1), y2, x2+10*sin(st1), y2);
  ellipse(x2-10*sin(st1), y2, 5, 5);
  line(x1+20*sin(st1), y1, x1+20*sin(st1)+100*cos(st2), y1+100*sin(st2));
  line(x2-10*sin(st1), y2, x2-10*sin(st1)+80*cos(st7), y2+80*sin(st7));
  stroke(100,100,255);
  ellipse(x1-20*sin(st1), y1, 5, 5);
  ellipse(x2+10*sin(st1), y2, 5, 5);
  line(x1-20*sin(st1), y1, x1-20*sin(st1)+100*cos(st3), y1+100*sin(st3));
  line(x2+10*sin(st1), y2, x2+10*sin(st1)+80*cos(st6), y2+80*sin(st6));
  strokeWeight(10);
  stroke(255);
  line(x2-10*sin(st1)+80*cos(st7), y2+80*sin(st7), x2-10*sin(st1)+80*cos(st7)+20*cos(0.2), y2+80*sin(st7)+20*sin(0.2));
  line(x1+20*sin(st1)+100*cos(st2), y1+100*sin(st2), x1+20*sin(st1)+100*cos(st2)+20*cos(st4), y1+100*sin(st2)+20*sin(st4));
  stroke(100,100,255);
  line(x2+10*sin(st1)+80*cos(st6), y2+80*sin(st6), x2+10*sin(st1)+80*cos(st6)+20*cos(0.2), y2+80*sin(st6)+20*sin(0.2));
  line(x1-20*sin(st1)+100*cos(st3), y1+100*sin(st3), x1-20*sin(st1)+100*cos(st3)+20*cos(st5), y1+100*sin(st3)+20*sin(st5));
  strokeWeight(3);
  st1=st1+0.1;
  delay(15);
}

作品解释以及对码绘与手绘创作的一些看法

先分开说这两种创作方式吧。
通过processing绘制了一个模拟婴儿爬行的gif图,只要是利用三角函数和极坐标实现各个关节直接的传动,进而模拟出爬行的效果。完成这幅图的步骤大体上是:先在纸上标出各个关节的大制坐标、各个圆形的半径以及两点之间的距离。再将坐标利用代码一步一步实现,先实现躯干的联动后再加入手脚头的联动。整体完成时间比较少。但是展现出来的动态效果虽然更加流畅,但却没有特别美观。
通过手绘绘制一个婴儿的爬行动作就耗费了较多的时间。显示画出草稿、拿着草稿寻求老师的建议后再加以修改,最后决定大制的草稿后绘制关键帧,绘制完毕后上色。为了展现出一个婴儿在爬动还增加了一个向前进的玩具小车。不过相比起码绘的婴儿更像一个人类的婴儿。
而总体来说,在我看来,比较两种创作方式,由于是完成一个动态的作品,虽然手绘绘制相比码绘花费的时间稍多,但是表现内心想法的效果更佳。本人画技并不好但是也能基本展现出一个完整的婴儿图像,倘若在纯代码中实现相同的效果可能需要相比手绘更多的时间。因此我更倾向于主要利用手绘创作而码绘作为辅助的创作方式。码绘的辅助方式可以有很多,例如先用码绘实现简单的动态作为参考,或是利用码绘实现动态模型后加以手绘进行再次创作等。码绘为辅的创作方式可以有效提高手绘创作的效率与质量,是一个不错的选择呢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值