Maya用Expression实现让鸡蛋自己翻滚的效果

本文的目的是探讨一下用Expression等方法来实现不规则圆的物体(如鸡蛋,变形的轮胎)在平面上无滑动的滚动效果,由于不用关键桢key,而且速率可调,这样重用率高,从而效率也提高了。

源代码

我希望提供这样的思路,能起到抛砖引玉的作用,让更多的人来关注,研究Maya,MEL,Expression,来实现更好的效果,进而促进这一领域的范围更广,层次更深的应用,交流和合作。唯愿如此

//************** eggVer2.txt ***********************
// Egg rolling motion ---- Version 2.0
// Author: Luonaldo
// First create date: about March, 2003
// Last updated: 2003/09/10 ---->add looptimes.
// Last updated: 2003/09/17 ---->delete unused content.debug passed.
//to keep two curves vertical.
verCurve.rotateY = tanCurve.rotateY + 90;
float $times = eggBasePoint.loopTimes;
//NECESSARY CONDITION 1: rotateZ *************
EggBody.rotateZ = sign($times) * verCurve.rotateY;
//NECESSARY CONDITION 2: translateY *************
EggBody.translateY = distPivPointShape.distance + eggBasePoint.translateY;
float $distance;
$distance=distPivTouchShape.distance;
motionPath1.uValue = abs(($times % 1));
float $arclen;
$arclen=curveInfo1.arcLength * motionPath1.uValue;
// Now compare whether the pivotPoint is in front of or
// behind the touchPoint.
float $verRy;
float $refRy;
float $sign1;
float $alpha;
$verRy = (verCurve.ry > 0) ? verCurve.ry : (360 + verCurve.ry);
$refRy = (refCurve.ry > 0) ? refCurve.ry : (360 + refCurve.ry);
//to make 0< alpha <180
$alpha = (($verRy - $refRy) + 360) % 180;
//-1:behand, 1:front, begin:uvalue=0
$sign1= ($alpha > 90)? (-1) : 1;
//NECESSARY CONDITION 3: translateX *************
EggBody.translateX = -($arclen + $sign1*$distance)
* sign($times)
//times sign decide direction
- (curveInfo1.arcLength) * trunc($times)
//full times Length
+ eggBasePoint.translateX;
//egg base offset
//egg's tz is based on eggBasePoint.tz
EggBody.translateZ = eggBasePoint.translateZ;
//The end.


这是一个二维的模型,O是curve的pivot,D是垂足,T是鸡蛋和平面的接触点,C是曲线模型的起始点,直线dt代表地面,线段od代表物体中心离地面的距离,弧线ct的长度可以由curveInfo.arcLength给出。物体滚动的距离其实就是(架设从c点接触地面开始):弧ct + 线段dt。(或者减,看垂足d是在滚动方向的前方还是后方)。图中线段od和dt是用MAYA自带的measureTools/distanceTool直接测量的。我想这样比自己计算两点间距或者勾股定理套公式要省事一些,也好理解一点吧。

由于有的物体边缘内凹,所以在滚动的时候内凹的部分接触不到地面,在物体翻滚之前,需要做一个二维的轮廓模型,在凹陷的地方取直线,微微有一点点外凸最好,用这个模型取得位移和旋转的坐标,而用真实的物体做动画。在motionPath的uValue中调节曲线,这里还是要key几个关键帧的。但是比起全手动要简单,还能随时更改快慢。

用一个静态的模型,实现对动态运动的控制。图中的鸡蛋受一个locator控制它的基准坐标,这样即使做过动画,也能很方便的移动到另一个位置。graph Editor中是loopTimes的曲线,% 1 后给uValue, 用来控制快慢和方向。

时间: 2024-09-26 20:33:23

Maya用Expression实现让鸡蛋自己翻滚的效果的相关文章

使用expression design制作silverlight LOGO那种烟雾效果教程(翻译)

转自http://www.cnblogs.com/ubosm/archive/2010/11/02/1867374.html 很久没有给网站更新东西了,因为很忙,马上又要考四级了,多半又过不了.惨啊....因为英语的原因吧,就翻译了国外的一篇技术文章,这样即更新了网站又学了英语. 原文地址:http://geekswithblogs.net/tkokke/archive/2009/10/16/twirling-smoke-effect-in-expression-design.aspx 文中要使

android新闻客户端 页面 翻滚 方法的理解

问题描述 android新闻客户端 页面 翻滚 方法的理解 scrollTo(1 1) 里面的 1 ,1表示什么意思呢? 右侧可以实现向下翻滚的效果 解决方案 这个要看它怎么定义的,不是系统类库.应该是表示位置的参数

ehcache memcache redis 三大缓存对比

最近项目组有用到这三个缓存,去各自的官方看了下,觉得还真的各有千秋!今天特意归纳下各个缓存的优缺点,仅供参考!  Ehcache 在java项目广泛的使用.它是一个开源的.设计于提高在数据从RDBMS中取出来的高花费.高延迟采取的一种缓存方案.正因为Ehcache具有健壮性(基于java开发).被认证(具有apache 2.0  license).充满特色(稍后会详细介绍),所以被用于大型复杂分布式web application的各个节点中. 什么特色? 1.  够快 Ehcache的发行有一段

js-看图 当复选框勾上就 修改css 样式 变成不可见 我改了 好多次

问题描述 看图 当复选框勾上就 修改css 样式 变成不可见 我改了 好多次 看图 当复选框勾上就 修改css 样式 变成不可见 我要改为当它勾上的时候变成只读状态 我改了好多次 一直不成功 readonly="true" background:expression(this.readOnly=true) 这些都没效果 请问怎么做??? 解决方案 设置disabled属性,MyCheckbox.disabled = true 解决方案二: displa : none;

非常漂亮的相册集 使用jquery制作相册集_jquery

一.简单的图像翻滚 image-rollover常被用在交互式导航栏上,当我们的鼠标移动到导航栏时,按钮的外观改变.例如我们以如下几幅黑白缩略图作为导航图表,当鼠标移动到指定图标时,图标变为明亮的彩色图片.预览如下: 该页面的代码十分简单,我们以此为例逐步实现图像的翻滚: img-rollover.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>

网页中返回顶部代码(多种方法)另附注释说明_jquery

下面就说下简单的返回顶部效果的代码实现,附注释说明. 1. 最简单的静态返回顶部,点击直接跳转页面顶部,常见于固定放置在页面底部返回顶部功能 方法一:用命名锚点击返回到顶部预设的id为top的元素 复制代码 代码如下: <a href="#top" target="_self">返回顶部</a> 方法二:操作scrooll函数用来控制滚动条的位置(第一个参数是水平位置,第二个参数是垂直位置) 复制代码 代码如下: <a href=&qu

使用PHP+JavaScript将HTML页面转换为图片的实例分享_javascript技巧

1,准备要素 1)替换字体的js文件 js代码: function com_stewartspeak_replacement() { /* Dynamic Heading Generator By Stewart Rosenberger http://www.stewartspeak.com/headings/ This script searches through a web page for specific or general elements and replaces them wi

Maya制作在粒子群中挖洞

MAYA的粒子系统,粒子系统不同于其他OBJECTIVE,除了对其进行宏观的位置变化,缩放,旋转,几乎不可能像ploy 和nurbs一样进行细节微调,想象一下一个有10万以上的粒子群,要把它变成个什么样子,我想没有什么人可有这样的耐性,有幸的是在maya中有两种方法可以对其进行控制变换,第一就是很常用的fields(力场)和goal,使用fields可以变换粒子个体在空间中的位置,速度等等,但要完全取得粒子系统的控制权那就是使用expression + goal.我接下来要讲的就是利用这种方法在

随手理财让年终奖“翻滚”吧

辞旧迎新,一大波"年终奖"即将来袭.近日,有关调查机构发布调研报告,列出全国各地平均年终奖数额.上海平均年终奖以8523元位居全国第一.深圳.北京.广州.杭州分别位列二至五位.该排名一发布,大家都开始在各种社交平台上乐此不疲地吐槽自己的年终奖.随手记理财社区发起了关于年终奖话题的讨论,随手记社区用户"北小若"收到的年终奖是辣条,用户"小小手印"收到了一张带薪休假卷...各种奇葩年终奖层出不穷,让人哭笑不得.年终奖少的用户表示拖后腿,要哭晕在厕所: