作者oopFoo (3d)
看板GameDesign
标题Re: [程式] 游戏数学:Sterp - 物件旋转摆扭解构
时间Tue Sep 4 18:12:11 2018
※ 引述《cjcat2266 (CJ Cat)》之铭言:
: 最近在看一个GDC影片的时候讲者提到
: 旋转的 "摆扭解构" (swing-twist decomposition)
: 只是一语带过,但勾起了我的好奇心,所以就开始研究
: 研究後觉得算蛮有用的工具,所以就写了一篇文来整理和分享心得
: 一般从一个旋转渐变到另外一个旋转
: 是用球线性内插 (slerp, spherical linear interpolation)
: 数学上的意义是,代表旋转的四元数沿着4D球体表面的最短大圆路径移动
: 虽然在4D定义上是"最短路径",不过在某些情况下,slerp的效果不是最理想的
: 例如一个长竿在slerp的时候,两端视觉上并不是沿着3D球体表面的最短大圆路径
: 理想上两端应该要沿着大圆路径"摆动" (swing),然後本身沿着长轴"扭动" (twist)
: 这个时候就需要用摆扭解构把旋转分成摆动和扭动两个部分
: 後两部分各自内插後再组合,就可以达到理想的效果
: 详细解释(含插图动画)、推导、Unity中的实作和证明,请见:
: http://allenchou.net/2018/05/game-math-swing-twist-interpolation-sterp/
:
好棒。好久没在想quaternion的东东,虽然还是在用。
nlerp不知你听过吗?
http://number-none.com/product/Understanding%20Slerp,%20Then%20Not%20Using%20It/
游戏上来讲,其实比较好用。nlerp是commutative,也cheaper to compute.
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.231.146.94
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/GameDesign/M.1536055935.A.2E0.html
1F:推 cjcat2266: 有啊,没有特别需求就是用nlerp 09/05 00:27
好棒。可惜厉害的人才都必须离开台湾。
2F:推 cjcat2266: 我认为不能这麽说,在台湾的人才不少吧 09/05 15:32
3F:→ cjcat2266: 在一些国内业界论坛出入,其实可以看到顶标水准不输国 09/05 15:35
4F:→ cjcat2266: 外的 09/05 15:35
台湾还是有神人
5F:推 elcnick: 其实Unity3d的Quaternion.Lerp就是nlerp 09/06 02:39
谢谢,之前不太确定lerp就是nlerp,没研究游戏engine太久了。
不过还是Jonathan Blow解释清楚。google "lerp vs slerp"那个unity forum看了,没讲到重点。
※ 编辑: oopFoo (36.231.129.217), 09/06/2018 10:40:24
6F:推 cjcat2266: 官方文件上有写Quaternion.Lerp就是Nlerp 09/06 13:32
7F:推 newyellow: 其实我不太用 slerp,都是用 lerp 再搭配 Curve 使用 09/15 00:14