Simple Breaking Waves in Maya
来源:互联网 发布:淘宝玉器店 编辑:程序博客网 时间:2024/04/25 09:56
之前的博文中写了个使用Houdini来做breaking wave的方法,鉴于出了一个Maya商业教程,为了给Mayaer涨涨士气今天在Maya里也实现了下。
原理都是一样的,最初需要解决的问题就是如何动态改变每个point的坐标,Maya中没有vop sop这种东西,但是粒子可以任意的改变posPP,而柔体就是直接受粒子控制的模型,所以这个问题直接解决:把模型转换为柔体,然后给柔体的粒子shape新加表达式。
另一个问题就是如何给平面增加海浪细节,这个就更简单了,同时用HOT和我们的柔体给原始的平面做blendshape,这样这个平面就既有海浪又能卷起来。
制作方法
把一个平面转换为softbody,然后在creation里加如下表达式
- if(pPlane1ParticleShape.particleId==0) {
- catch("windowPref -r rampWin");
- if(`window -exists rampWin`)
- deleteUI rampWin;
- window -title "Rollingwave Control" rampWin;
- columnLayout;
- optionVar -stringValueAppend "falloffCurveOptionVar" "0,1,3";
- optionVar -stringValueAppend "falloffCurveOptionVar" "1,0,3";
- gradientControlNoAttr -h 250 -w 600 -optionVar "falloffCurveOptionVar" falloffCurve1;
- showWindow;
- print (pPlane1ParticleShape.position0);
- }
然后在runtime里加:
- vector $ref = <<locator1.translateX,locator1.translateY,locator1.translateZ>>;
- vector $p = pPlane1ParticleShape.position0;
- vector $diff = $p-$ref;
- $diff = <<$diff.x/locator1.scaleX, $diff.y/locator1.scaleY, $diff.z/locator1.scaleZ>>;
- float $dist = mag($diff);
- pPlane1ParticleShape.rgbPP = $dist/locator1.preScale;
- // roll
- // ( x*cos(a)+y*sin(a) , x*sin(a)-y*cos(a) )
- float $alpha = `gradientControlNoAttr -valueAtPoint $dist -query falloffCurve1`;
- $alpha*= locator1.roll/180*3.14;
- float $x = $diff.x*cos($alpha)+$diff.y*sin($alpha);
- float $y = $diff.x*sin($alpha)-$diff.y*cos($alpha);
- $ref = <<$ref.x, -$ref.y, $ref.z>>;
- pPlane1ParticleShape.position = <<$x*locator1.scaleX, $y*locator1.scaleY, $p.z>>+$ref;
这个就是把每个点的坐标转换到locator1的局部坐标,因为在mel里做矩阵乘法比较麻烦,所以只是用了一个简化的方法。大家瞅瞅都懂的。
最后还是因为为了我的教程想为Maya说两句:
1.如果单纯特效的话那Maya和Houdini是没法比的,不要说软件用好了都一样,这个真不是人不人的问题。
2.但是如果在一个动画公司那是100%离不开Maya的,包括很多针对CG角色的影视公司也是。因为对这些公司而言Maya不止是一个软件,更多的是作为一个平台运转于流程中,其他的软件从前期到后期都要围绕这个核心来,原因很简单,因为Maya的Rigging牛逼。模型可以在Max里做Zbrush里做无所谓,但是如果Rigging在Maya里做那动画就必须在Maya里,动画在Maya里那渲染就要在Maya里,所以注定在很多的公司是离不开Maya的。而我们学Mel并不只是为了特效,更多的是为了Rigging、提速、以及了解Maya以便解决整个流程的问题
就是这样的。
0 0
- Simple Breaking Waves in Maya
- Simple Breaking Waves in Maya
- Simple Breaking Waves in Maya
- Simple Breaking Waves in Houdini
- 3.4 Breaking changes in 2.0
- Linear Workflow In Maya
- Curlnoise in Maya
- some tips in Maya
- Silverlight 2的变化(Breaking Changes in Silverlight 2)
- VC++2010 关键变化 (Breaking Changes in Visual C++ 2010 )
- Triangle waves
- simple query in prolog
- Simple socket in Java
- Simple socket in Perl
- maya
- maya
- Change Language in OS but keep Maya UI in English
- Breaking Free
- 【Scala类型系统】隐式转换与隐式参数
- 取得手机屏幕大小
- C++小程序开发(1)--加法测试题
- fflush函数作用浅析
- Python计算机视觉:第六章 图像聚类
- Simple Breaking Waves in Maya
- Android onConfigureChanges 是如何被调用的
- java 序列化
- MATLAB信号处理仿真-基带脉冲成形的数字滤波器
- Python计算机视觉:第七章 图像搜索
- 纯虚函数
- Python计算机视觉:第八章 图像类容分类
- 分治法
- CSS框模型(Box Model)初学理解