资源描述:
《跳动的音符利用maya柔体制作随机动态音符》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、跳动的音符利用maya柔体制作随机动态音符Maya的柔体可以将儿何对象雨新创建为称为柔体的对象。可以使用各种动画技术使柔体像自然界屮的柔体对象那样弯曲、涟漪和凸起。通过对创建柔体时产生在模熨下的粒子应用动力场,利用粒子的特性,來实现对模型形态的改变。本教程将为人家介绍利用柔体來制作随机跳动音符的方法。制作思路是利用柔休曲线跟随特性,在扰动场的作用下,产生•随机波动來控制音符模型的显示。涉及的知识点有柔体粒子,扰动场,还有需要些Mel语言基础:for语句,if语句,xform命令查询曲线点坐标信息,f
2、loor[斶数。StepOl:创建音符模型,一列音符为一个组,名称为yinfu_grp_l,yinfu_grp_2....yinfu_grp_20依次盜加,每个组里的单个音符从下到上依次是yinfu.l,yinfu_2....yinfu_10.这里的模型要求每一个音符的高度是1cm,也就是maya默认的一个网格的髙度,这是为以后方便判断高度做准备,宽度设成2cmoStep02:用maya的CVCurveTool(创建曲线工具),创建一条直线命名为curvel,用RebuildCurve(重建曲线)命
3、令改变这条线的CV点数,确保和模型列数一致。注:通常创建曲线时,默认的CV点排序是从0开始。Step03:把曲线转化成柔体,执tJ'Soft/RigidBodies>CreateSoftBody(柔体/刚体>创建柔体)命令,柔体设置参数如下,在这里我们先将原始曲线复制,将原始曲线作为变形物体,将复制的曲线作为吸附目标来影-Inix
4、响原始曲线变化,而吸附的物体就是原始曲线上生成的粒子curvelParticleo层级结构参考下图。Creationoptions:
5、Duplicate^makeorig
6、inalsoft、Duplicateinputgraph:厂Hidenon-softobje匚匕VMakenon-softagoal:VWeight:)0.500r,5Create1Apply
7、Close1EditHelp逊SoftOptionsS3yf^.grp.63yWu.grp*=yWu.grp.8ny^qp.9JyWu.grp.H3yWu.grp」23yrfu_grp」33yWsp.M3yrfu.grpJSJyr/sp」6JyWu.grp」73yWu.grp」83yrfu.grp」9Jyr/
8、uqp.20Step04:给粒子curvelParticle添加Fields>Turbulence(扰动场),将其Magnitude(fc值)设为150,Attenuation(衰减)设为0,再调节粒子的goalweight(m随权重),播放可以看到曲线在随机上下摆动。如果认为幅度或者速度不够人,可以再调节Magnitude和goalweight,幅值越人,扰动越人,跟随权重越小,吸引力越小,摆动幅度越大,也可以调节扰动场的Frequency(频率),数值越大,就会产生越频繁的不规则运动,这里是默认
9、值1。GoalWeightsandObjectsGoalSmoothness3.000copyOfcurveShapelGoalA匚tivePPartideGoalWeightsGoalPointPositionsGoalPointNormalsGoalPointTangentUsGoalPointTangentVs0・300
10、i厂/CreateGoalWeiqht0PP
11、CreateGoalWorldPosition0PPCreateGoalWorldNormal0PPCreateGoalWorl
12、dTanqentU0PPCreateGoalWorldTanqentV0PPStep05:编写mel语言,用曲线上的每个CV点的Y坐标信息來判断音符模型的显示,并在播放的每-•帧给每个音符模型的显示通道setKeyframeoMel语言如下:int$i;//定义整数变量$i一定要加$for($i=l;$i<201;$i++)//for循环语句,循环从1开始到200结束{currentTime-edit$i;//编辑当前帧数,for循环结果是从第一帧播放到第200帧int$m;//定义整数变虽$m,下
13、边还有定义变虽,就不一一说明了for($m=l;$m<21;$m++)//循环20次,针对模型列数和曲线CV点序数float$py[]=xform-q-ws-t("curveShapel.cv["+$m+"]");//xform命令,査询曲线CV点的世界坐标,数值存到浮点数组Spy□里,Y轴坐标对应$pv[l])int$pyint=f1oor($py[1])+1;//floor函数为小于某值的嚴大整数if($pyint>10)//if语句,将$pyint限定在10以下