游戏蛮牛学习群(纯技术交流,不闲聊):959392658
排列三2014079期正版藏机图 手机端
查看: 14270|回复: 102
发新帖

查看今日排列三开机号: [外文翻译] 程序性动画——触手的逆向运动学

  [复制链接]  [移动端链接]
排名
10428
昨日变化
5

排列三2014079期正版藏机图 www.d0po.cn 13

主题

164

帖子

477

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
70381
好友
8
蛮牛币
602
威望
0
注册时间
2015-1-22
在线时间
188 小时
最后登录
2018-11-30
跳转到指定楼层
楼主
发表于 2017-11-2 11:02:36 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
本帖最后由 小妞牛 于 2017-11-2 11:12 编辑

触手的逆向运动学

这篇文章继续我们深入逆向运动学的旅程。你将学到怎样应用这个有力的技术来创造富有真实感的触手方法。





你可以从这里找到此系列所有的章节:
Part 7:蜘蛛腿的逆向运动学

在帖子的底端你都可以找到一个链接来下载所有必要的资源和场景来再现这些教程。

前言

在教程的前一章“机械手臂的逆向运动学”中,我们讨论了在机械手臂上怎样使用梯度下降来完成逆向运动学。这种由机械完成的运动,比复杂的人体关节简单得多。对于一个机械手臂而言,每个关节都由一个发动机控制。同理,对于一个生物手臂来讲,每块肌肉都是一个可以自行收缩和扩张的独立马达。

一些生物具备几个可以到达任意角度的关节,例如大象的鼻子、章鱼的触手等。将这些肢干模型化是一种挺特别的挑战,目前介绍的这些传统技术并不能产生非常真实的效果。

我们将从前一篇文章的例子开始,继续挑战,直到我们获得模型足够真实的行为为止。

触手绑定骨骼

当我们创建一个机械手臂之后,每个部分都是可独立移动的。相对而言,触手可以弯曲。这是一个我们无法忽略的基本特征,如果我们想要让它看起来真实的话。我们的触手需要能够弯曲。

一个可以允许这个基本特征的Unity组件叫做“Skinned Mesh Renderer”:



然而,Unity并不提供从编辑器创建Skinned Mesh Renderer的方法。一款3D建模软件,比如说Blender,此时就被需要了。下图展示了余下教程中将被使用的触手模型,里面有一系列明显的Bones骨骼),一个接着一个。它们是允许模型弯曲的Objects。



给模型加骨骼,也称为绑定Rigging),已经超出了本教程的范围。下面链接提供了比较好的骨骼绑定说明。(网址如下:https://en.wikibooks.org/wiki/Blender_3D:_Noob_to_Pro/Bones)

骨骼和关节

给予触手逆向运动学的下一步是为每一个骨骼挂载一个RobotJoint脚本。通过这么做,我们赋予了我们的逆向运动学求解器一个使触手弯曲的能力。

对于普通的章鱼来说,每个“关节”都能够沿着它自身的三个轴向,自由的旋转。在“机械手臂的逆向运动学”中设计的代码,很可惜,只允许关节沿着单个轴向移动。改变这个代码对于已有脚本而言,将意味着把它们引入了一个新的复杂等级。反过来说,我们可以转动关节的轴向,使关节0转向X轴、关节1转向Y轴、关节2转向Z轴等等。这会导致不自然的行为,但是如果骨骼足够小,你就有可能不会感到有任何问题。

在随教程附带的可下载Unity工程文件中,这个名为SetRobotJointWeights的脚本会自动初始化触手所有关节的参数?;蛘?,你也可以为了更好的控制每个骨骼的移动方式而自己来编写脚本。

缓和功能

下面的动画展示了两个触手。左边的那个抵着红色球体的触手使用的是“机械手臂的逆向运动学”中提出的算法,与之相反,右边的那个通过一个更加有机化的螺旋式运动来增加一个真实化的新扭曲。这个例子已经足够让我们明白为什么触手需要一个单独的教程。



两个触手都依赖梯度下降,不同之处在于它们试图最小化的误差函数。左边的机械触手只想碰到球,并不关心任何其他参数。一旦末梢执行器碰到了球,聚合度被满足,然后触手就会停止移动。

另一方面,右边的触手,正在最小化不同的函数。用于机械手臂的DistanceFromTarget类被一个新的更复杂的类替代了。我们能设计一个新的误差函数类来关注其他几个我们关心的参数。教程中展示的触手试着最小化三个不同的函数:

1.与目标的距离:已经定义好了。

2.末梢执行器的角度:在这条中,触手试着匹配我们想让物体达到的角度。这种行为能被看做上述动画,就是右侧触手围着球体螺旋式运动的样子。自从每个关节都有了一个移动的极限范围之后,这个范围限制将引发沿着骨骼链传播的连锁反应。我们可以强迫触手匹配物体试图达到的角度,通过这么做,我们可以测量末梢执行器和目标转角之间的角度。Unity有可以实现这项功能的便利函数:Quaternion.Angle

[C#] 纯文本查看 复制代码
float rotationPenalty =
    Mathf.Abs
    (
         Quaternion.Angle(EndEffector.rotation, Destination.rotation) / 180f
    );


像这样匹配本地角度,可能并不总是个好主意。根据情况,你可能想让你的触手用不同的方式对齐。

3.扭曲:让肢干保持在一个不自然的位置看起来是十分不舒服的。这个参数使盘绕方案处于非常不利的境地,强制逆向运动学更线性、简单的旋转。为了计算扭曲的惩罚,我们首先要定义在我们的环境中什么是“扭曲”。定义它最简单的方法是作为所有关节角度的平均值。这种想让触手保持放松状态的惩罚方案,要求许多扭曲。

[C#] 纯文本查看 复制代码
float torsionPenalty = 0;
for (int i = 0; i < solution.Length; i++)
     torsionPenalty += Mathf.Abs(solution);
torsionPenalty /= solution.Length;


这三种惩罚分数导致触手以更加真实的方式移动。更复杂的版本能确保它们即使当其他限制被完全满足时也保持晃动。

注意1:使用不同单位
那三个参数更有可能在不同的单位被表达。

当末梢执行器旋转的单位是角度时,与目标之间的距离可能是米。根据它们的价值重新测量它们很重要,便于不再衡量10度和距离目标10米的不同。
理想中,0和1之间应该被标准化。然后,可以使用系数来确定它们的相对重要性:

[C#] 纯文本查看 复制代码
public float ErrorFunction (Vector3 target, float [] angles)
{
    return
        NormalisedDistance(target, angles) * DistanceWeight +
        NormalisedRotation(target, angles) * RotationWeight +
        NormalisedTorsion (target, angles) * TorsionWeight  ;
}


这个方法也给触手的良好行为提供了好的控制。它们可以根据情况随时被改变,以此来改变触手的移动方式。例如,你可以增加TorsionWeight类来解开触手凌乱的纠结。

注意2:我们没有分析定义!

正向运动学的典型性问题可以被模型化分析。这意味着我们可以展示一个问题并解决它。我们已经提到过了‘解决逆向运动学对偶问题的分析方法’的存在。

我们现在说的是一个函数,是一个可能的,不能被解析描述的一个函数。如果我们必须选择使用典型的可分析的方法来解决逆向运动学,我们就不能给我们的触手增加那些细微的差别了。使用梯度下降意味着我们几乎能够最小化任何随机函数,无论我们是否拥有它的方程式。

扩展

我们能做的改进扩展几乎没有限制。减速函数能够增加你触手的真实性,当触手越靠近目标时,触手就应该越慢。

同样的,触手不应该碰到自己。为了避免这个,可以给每个关节上加上精准碰撞器。然而,这会导致触手离奇的行为。代码忽略了碰撞,可能仍然会收敛一个发生自碰撞的方案。一个解决方法是修改适应函数(fitness function)便于自相交方案被高度处罚。




你可以从这里下载Unity项目工程:https://www.patreon.com/posts/8928832
从这里可以下载机械手臂的3D模型:https://3dwarehouse.sketchup.com/model/92e064854f4dd504c8ab9067fbd9681d/Robotic-Arm-stainless-steel-R6Stainless
从这里可以下载触手(带骨骼)模型:https://sketchfab.com/models/8fcc783af94246a0b8febf424a4b96b9#download

原文作者:Alan Zucconi
原文链接:https://www.alanzucconi.com/2017/04/12/tentacles/


扫描下方二维码关注排列三2014079期正版藏机图官方微信~每日都有精选干货与你分享呦~

本文由蛮牛译馆倾情奉献,翻译:小妞牛,如有问题请及时联系,除合作社区 及 合作媒体 外,禁止转载!


5熟悉之中
936/1000
排名
3207
昨日变化
2

7

主题

240

帖子

936

积分

Rank: 5Rank: 5

UID
64688
好友
0
蛮牛币
1269
威望
0
注册时间
2014-12-30
在线时间
243 小时
最后登录
2018-12-7
沙发
发表于 2017-11-2 17:13:06 | 只看该作者
很不错的应用,先Mark一个,到时应该用得着。。

5熟悉之中
762/1000
排名
5195
昨日变化
1

20

主题

350

帖子

762

积分

Rank: 5Rank: 5

UID
249218
好友
3
蛮牛币
2736
威望
0
注册时间
2017-10-17
在线时间
118 小时
最后登录
2018-12-10
板凳
发表于 2017-11-3 08:31:39 | 只看该作者
很不错  很实用 谢谢楼主分享

点评

新手有点懵,不过感觉很Nice!  发表于 2018-10-29 23:26

3偶尔光临
281/300
排名
8684
昨日变化
3

3

主题

58

帖子

281

积分

Rank: 3Rank: 3Rank: 3

UID
245484
好友
0
蛮牛币
610
威望
0
注册时间
2017-9-22
在线时间
88 小时
最后登录
2018-5-11
地板
发表于 2017-11-3 08:44:42 | 只看该作者
6666666666666666
[发帖际遇]: 一个袋子砸在了 Unity5611 头上,Unity5611 赚了 1 蛮牛币. 幸运榜 / 衰神榜

7日久生情
3490/5000
排名
469
昨日变化
1

7

主题

309

帖子

3490

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
22945
好友
1
蛮牛币
3984
威望
0
注册时间
2014-4-26
在线时间
1726 小时
最后登录
2018-12-13
5#
发表于 2017-11-3 09:05:05 | 只看该作者
能提供工程最好了 ~ ~

7日久生情
1767/5000
排名
1151
昨日变化
3

1

主题

172

帖子

1767

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
132507
好友
0
蛮牛币
2930
威望
0
注册时间
2015-12-24
在线时间
612 小时
最后登录
2018-11-6
6#
发表于 2017-11-3 10:11:04 | 只看该作者
感觉吊吊的,有时间看看

7日久生情
4317/5000
排名
2389
昨日变化

5

主题

3109

帖子

4317

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
209186
好友
5
蛮牛币
5515
威望
0
注册时间
2017-3-1
在线时间
631 小时
最后登录
2018-11-8
7#
发表于 2017-11-3 11:21:27 | 只看该作者
好腻害,谢谢分享

7日久生情
1531/5000
排名
1724
昨日变化
3

0

主题

475

帖子

1531

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
170014
好友
0
蛮牛币
5671
威望
0
注册时间
2016-9-21
在线时间
317 小时
最后登录
2018-7-21
QQ
8#
发表于 2017-11-3 12:16:31 | 只看该作者
好邪恶

7日久生情
2089/5000
排名
1840
昨日变化
7

45

主题

777

帖子

2089

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
219600
好友
7
蛮牛币
2895
威望
0
注册时间
2017-4-27
在线时间
567 小时
最后登录
2018-12-13
9#
发表于 2017-11-3 12:31:12 | 只看该作者
感谢分享,学习了
[发帖际遇]: fengjing 在网吧通宵,花了 1 蛮牛币. 幸运榜 / 衰神榜

排名
19445
昨日变化
11

0

主题

18

帖子

79

积分

Rank: 2Rank: 2

UID
226555
好友
0
蛮牛币
99
威望
0
注册时间
2017-6-13
在线时间
34 小时
最后登录
2018-4-24
10#
发表于 2017-11-3 17:59:51 | 只看该作者
6666666666666666

5熟悉之中
557/1000
排名
5084
昨日变化
1

0

主题

48

帖子

557

积分

Rank: 5Rank: 5

UID
148615
好友
0
蛮牛币
888
威望
0
注册时间
2016-5-15
在线时间
239 小时
最后登录
2018-4-5
11#
发表于 2017-11-4 16:54:09 | 只看该作者
厉害了好触手。。。

6蛮牛粉丝
1163/1500
排名
1583
昨日变化
4

0

主题

47

帖子

1163

积分

Rank: 6Rank: 6Rank: 6

UID
178205
好友
0
蛮牛币
3723
威望
0
注册时间
2016-10-25
在线时间
336 小时
最后登录
2018-12-13
12#
发表于 2017-11-6 17:14:45 | 只看该作者
牛批牛批牛批牛批牛批牛批牛批牛批牛批牛批

7日久生情
1807/5000
排名
1020
昨日变化
1

7

主题

255

帖子

1807

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
20039
好友
3
蛮牛币
5882
威望
0
注册时间
2014-4-2
在线时间
493 小时
最后登录
2018-10-29
QQ
13#
发表于 2017-11-6 17:15:41 | 只看该作者
66666666  不明觉厉~!

6蛮牛粉丝
1163/1500
排名
1583
昨日变化
4

0

主题

47

帖子

1163

积分

Rank: 6Rank: 6Rank: 6

UID
178205
好友
0
蛮牛币
3723
威望
0
注册时间
2016-10-25
在线时间
336 小时
最后登录
2018-12-13
14#
发表于 2017-11-6 17:16:22 | 只看该作者
很不错  很实用 谢谢楼主分享

3偶尔光临
224/300
排名
11979
昨日变化
3

0

主题

70

帖子

224

积分

Rank: 3Rank: 3Rank: 3

UID
3758
好友
0
蛮牛币
1268
威望
0
注册时间
2013-9-12
在线时间
78 小时
最后登录
2018-11-13
15#
发表于 2017-11-7 09:49:38 | 只看该作者
好腻害,谢谢分享

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

快速回复 排列三2014079期正版藏机图 返回列表
  • 首批限竞房正式入市 戳三大盘看详情! ——凤凰网房产北京 2018-12-09
  • 世界杯频爆冷门网友大呼“天台见”!警方:不要冲动,不要跳楼 2018-08-21
  • 始终如一的是:美国优先。 2018-08-21
  • 525| 682| 698| 469| 875| 378| 853| 59| 220| 568|