【Maya】坦克履带的绑定

  • A+
所属分类:MayaScript

 

我以maya传统的曲线路径动画为基础,写了一个Python批处理脚本(下载地址在文章最下面),可以快速实现履带效果的绑定。简单说明下原理:逐个复制模型并生成可批量控制的路径动画。

【优点】

1.封闭或开放的NURBS曲线、贝塞尔曲线均可适用;

2.绑定前后都可以对曲线进行编辑和重建;

3.能制作不规则的路径动画;

4.计算速度快,控制简便;

5.动画组件容易管理。

【不足】

1.因为路径动画采用的是欧拉旋转插值,交叉或转角尖锐的曲线上可能发生翻转,需要手动优化曲线的CV点分布。

*对于履带绑定来说,以上情况几乎不会出现。

2.转角大的曲线部分,履带板间距会增大导致分离现象(maya的路径动画计算发生了误差)。

3.暂不支持一体化的传送带绑定。


【坦克履带简介】

世界上多数主战坦克的履带链环,由同规格的履带板通过履带销连接而成。二战时,出现过采用不同规格履带板的坦克,例如著名的前苏联T-34/85中型坦克和KV-1S重型坦克。

【Maya】坦克履带的绑定

而现代坦克除了大量采用同规格单销式履带,更先进的主站坦克会采用特殊的同规格双销式履带,如我国的ZTZ-99式主战坦克、德国的豹二主战坦克和美国的M1A2主战坦克。

【Maya】坦克履带的绑定

【Maya】坦克履带的绑定

【Maya】坦克履带的绑定


这里以前苏联IS-3重型坦克和T-34/85中型坦克为例进行履带绑定。

【Maya】坦克履带的绑定

【单销履带的绑定】

模型的单位没要求,不过maya中大体上有两种规格:按1厘米等于1米计算(也就是maya中的数值看做是米为单位,虽然默认是厘米);按实际长度计算。默认创建的履带控制器是半径为3厘米的圆圈,可根据需要进行缩放。本例中的模型是按米为单位。

为了更好的匹配履带行进方向,应该将坦克正面朝向世界坐标Z轴正向,也就是对着屏幕外。

【Maya】坦克履带的绑定

*资料中IS-3重型坦克的一侧履带板是86块,本例用的模型采用的是83块。

1.通过NURBS曲线绘制履带的运动路径。分别以驱动轮和导向轮的旋转轴心为圆心,调整NURBS圆圈的大小以匹配履带和轮子的接触点。

【Maya】坦克履带的绑定

2.沿着负重轮和拖带轮的轮廓,将NURBS路径绘制完成。

【Maya】坦克履带的绑定

3.微调CV点后,将驱动轮和导向轮的NURBS曲线截断,连接多段NURBS曲线成一条封闭的曲线。

【Maya】坦克履带的绑定

4.调整履带板模型的旋转轴心点至履带销孔的中间位置,并上移至履带板和轮子接触的表面,然后将履带板移动到零点(也可以放到你容易找到的地方),正面朝向Z轴正向(对着屏幕外),冻结坐标

【Maya】坦克履带的绑定

5.在脚本编辑器ScriptEditor中的Python栏输入:

import vivitrack

vivitrack.mainw()

如果要启动中文版,则将vivitrack改成vivitrackcn,不过maya中给节点命名时候禁止使用中文和特殊符号。

执行代码,启动脚本,载入曲线和履带板,设定好履带板的数量和名称。脚本界面提供了曲线长度和销孔间距的数值显示,因为“履带周长=销孔间距*履带数量”,所以根据数值可以适当的调整曲线长度。由于外置脚本不具备自动刷新功能,所以每次更改曲线长度后要重新加载曲线,脚本界面才会显示当前曲线长度。当调整曲线达到最接近的履带长度值,点击生成履带按钮完成绑定。

*如果后期会对个别履带板进行编辑,例如掉落或者更换模型,可以将履带板成组后再选择组生成履带。

6.重建曲线或微调曲线CV点,使履带板彼此完美相连。要注意:外圈红色线圈是参考曲线,须保持和内圈蓝色路径曲线平行,所以调整蓝色曲线时候也要同时进行红色曲线的调整,包括重建曲线功能的应用。可以对这两条曲线进行控制,实现履带随地面起伏的效果。

【Maya】坦克履带的绑定

7.复制蓝色路径曲线,移动到坦克另一边,制作另外一侧的履带, 然后隐藏或删除原履带板模型。

【Maya】坦克履带的绑定

8.圆形带箭头的NURBS控制器可以移动到任意的位置,并可等比放大缩小。控制履带运动的是控制器的RotateX属性,履带行进的实际距离等于圆圈的滚动距离。公式如下:

履带行进距离=0.0523*控制器Scale值* 旋转角度

旋转角度=(履带行进距离*19.108)/控制器Scale值

【Maya】坦克履带的绑定

*如果需要同时移动履带和控制器,可以将路径曲线和控制器成组。目前没有添加“行进时履带自动转动”的功能,是考虑到履带打滑的情况。

9.根据驱动轮、导向轮和负重轮的半径,由用户自定义表达式来实现联动。这里我将控制器缩放至驱动轮的作用半径,然后根据半径比来控制其他轮子的转动。

【Maya】坦克履带的绑定

参考上面所说的计算公式。例如我打算行进10米,那么控制器的X轴旋转值应该是:Rotate=(10*19.108)/0.113≈1691。对整个模型组设置位移关键帧,对圆圈控制器设置旋转关键帧,至此,简单的坦克行进动画完成了。如果发现履带在地面上有明显打滑,那说明是坦克组位移的动画曲线和控制器X轴旋转的动画曲线过渡不一致,要注意统一动画曲线的过渡类型,例如线性或平坦式。

【效果】


【双规格或双销履带的绑定】
步骤同单销履带的绑定,只是要生成两套履带控制系统。因为履带板的运动由控制器的旋转值决定,直接成组后转动两个控制器是没有效果的,所以这里使用maya的约束进行。

1.绑定履带板和履带销,保持两个控制器一样的大小。

【Maya】坦克履带的绑定

2.转动履带销控制器,使履带板和履带销相互咬合。

【Maya】坦克履带的绑定

3.复制履带板控制器作为主控制器,分别对原履带板控制器和履带销控制器进行X轴旋转的约束。约束的选项设置如下:

【Maya】坦克履带的绑定

【T34/85效果】

【Maya】坦克履带的绑定

【豹二坦克效果】

【Maya】坦克履带的绑定


【特别说明】

Maya中NURBS的均分功能,并不能保证每个CV点都达到完全相等的间距,而曲线的UV值也并不能准确的匹配实际的长度值,尤其在大转折的地方更容易出现长短不一的现象。因为基于NURBS曲线,路径动画的计算误差现在还无法解决,只能在动画镜头和运动模糊的处理下避免穿帮。履带板数量越少,它们的转弯半径越小,准确度就越差一侧履带板的数量在80以上绑定效果最好

【Maya】坦克履带的绑定

【增强操作】

扩展曲线至履带板销孔中心(相当于增大转弯半径),可以提高履带板的吻合度,接近完美效果。

*如果扩展曲线范围过大,则会造成转弯处的履带板彼此穿插。

【Maya】坦克履带的绑定 【Maya】坦克履带的绑定


脚本下载(Download Script)vivitrackVer1.0


 

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:1   其中:访客  1   博主  0

    • 匿名 匿名 1

      我该怎么注册呢?