以前做拉伸都是用缩放来做的,貌似什么教程之类的都是用缩放做的,很难找到用位移做拉伸的资料,今天试了一下自己的方法,结果是成功,哈哈,特来写出学习心得和大家一起分享,如有错误的地方也请大家指正。
我们首先来说说用translate做拉伸骨骼的原理,先看下图
我们创建四节骨骼分别为joint1 joint2 joint3 joint4,上图左边的骨骼为原始状态未拉伸时候的骨骼,右边的骨骼为左边骨骼拉伸后的状态,骨骼的创建方式为XYZ,因为这种创建方式下骨骼的长度和translateX的值是相等的,骨骼的位移信息是一个相对于上一节骨骼的值,上图中
那拉伸后了呢?呵呵自然是a'/L'了,这两个比值是相等的,呵呵,这是个万能等式啊,不用去考虑骨骼是不是等长,因为它同样也适合于等长的情况,好下面我们又要做数学题了,哈哈,写出并化简下列等式关系:
我们已经算出joint2拉伸后的长度值了,那joint1 joint3 joint4 呢 呵呵一样的算法啊
接着我们为曲线创建一个长度信息节点 arclen -ch 1
接着写表达式吧
joint1.translateX = curveInfo1.arcLength *
joint2.translateX = curveInfo1.arcLength * 1.437 / 5.750;
joint3.translateX = curveInfo1.arcLength * 1.454 / 5.750;
joint4.translateX = curveInfo1.arcLength * 1.420 / 5.750;
自此局部拉伸基本差不多了,再要考虑的就是整体缩放的问题,要怎么做呢呵呵?考考大家。