很久以前就想写这么一个帖子,但是觉得要写起来需要配图比较麻烦,但是又经常看到有人对IK/FK有错误的认识。所以决定还是开始写,慢慢去完善和补充。我想这个帖子看下来,应该可以让美术以及不了解IK/FK的技术美术有个正确的概念。

IK是Inverse Kinematics,逆向运动或者叫反向运动。与之相对应的是FK全名Forward Kinematics,正向运动也可以叫前向运动。

在美术的思维中,正向运动就是父物体带动子物体,子物体无法影响父物体,反向运动则相反,子物体可以带动父物体,而父物体对子物体的影响仅限于参与整个IK骨骼链的根骨骼,其他的骨骼无法影响子物体。

如果想要正确理解逆向运动,比如明白为什么不存在所谓的“无缝切换”。平时说的无缝切换是指切换的时候没有抖动,但许多人以为,“无缝切换”就是无需切换,自动换用正向或逆向。要正确理解逆向,首先要换个方式去理解什么是正向以及什么是逆向。正向,就是从物体的变化求结果;逆向则是从结果求物体的变化。

比如说一个球在 0 0 0这个位置,正向运动就是向x方向移动10个单位,结果就是10 0 0。而逆向则是目标位置是10 0 0,这个球移动到该位置。

这个例子看起来似乎正向和反向没什么差别,不过如果是一个复杂一点的结构的话。比如说人的胳膊,正向运动就是上臂旋转四十五度,小臂旋转四十五度,然后手腕处在一个位置,假设是 10 10 10。这里需要上臂和小臂的旋转值。逆向呢,则是直接给出手腕的目标点 10 10 10,然后计算出小臂和上臂的旋转值,当然在三维空间里这个的结果是无限多个,所以,动画软件里的逆向需要有个朝向约束。

为什么会需要有逆向运动和正向运动,比如说一个引体向上的动作,手的位置是固定的,身体被胳膊带动,逆向运动很符合的子物体带动父物体的需求。再比如一个人挥舞一块板砖,如果只调节板砖或手腕的位置就可以完成整个胳膊的动画是很便捷的。而正向运动呢,比如说一个掰手腕的动作,是在一个平面上,以肘部为支点以上臂的朝向为轴向旋转,这个动作用逆向是非常难做的,不信的大可以用逆向做一下看看。二者都有其很方便的场合而且有时候一个很方便的时候恰恰是另一个很麻烦的时候。

我想现在应该已经可以理解为什么没有“无缝切换”,二者的动画计算方式是不同的,不可能同时使用两种计算方式,在某一时刻整个骨骼链要么是正向运动要么是逆向运动。如果要切换二者,必须有一个参数里控制当前是正向还是逆向,如果是正向就从父级一层层变换下来,如果是逆向,就从目标体推算当前骨骼正确的变换。

这个帖子我会慢慢补充,后面会介绍软件里的切换以及切换的原理,然后会介绍IK的一种比较快速的算法。有问题的请留言。

转载于:https://www.cnblogs.com/sitt/archive/2013/06/09/3128714.html

IK/FK之全面了解相关推荐

  1. 《The Art Of Effective Rigging In Blender》笔记:手臂部分的IK/FK切换

    下图是手臂部分结构的示意图,看起来有点复杂?实际上并不难理解.先解释一下原理:给手臂摆pose的时候,如果是类似挥臂一类的pose,那么用IK更方便一些,如果是类似俯卧撑或者推重物一类的pose,那么 ...

  2. Maya中IK动画与FK动画的转换技巧——小男孩跑酷动画为例

    1.在最后K了一个大概近300帧的男孩跑酷(部分),其中一个关键的小技术就是IK与FK系统. IK就是反向运动学,也就是下级影响上级,比如说常见的与手有关的动作,手拿东西等,这些动作是主动进行的,所以 ...

  3. 【Unity 骨骼动画】骨骼IK

    关于骨骼动画 3D模型 → 绑骨骼 → 刷权重 → K动画 →.FBX 带有轴心的一个 长方体 , 子父节点首位相连. 刷权重 让模型和骨骼形成相对位置的关系, 可以将多个点分配给一个骨头 IK &a ...

  4. Auto IK Rigger:一个可以真·一键绑定的轻量级Blender插件

    文章目录 前言 使用方法 0. 安装Auto IK Rigger插件 1. 架设骨架 and 蒙皮 2. 绑定 3. 原理 局限性 前言 比较知名的Blender绑定插件有自带的Rigify以及价值4 ...

  5. python可视化拖拽平台_【技术解码】不用控制器,只拖拽模型面就可以做动画!很好玩的动画工具...

    文章转自公众号: cg世界 前两天在B站上看到一个有意思的视频,是新一代动画模型绑定控制技术的功能展示,小编看过之后挺好奇,就到网上找了一些相关介绍,想和小伙伴们分享一下. 这款3D动画软件名为Rum ...

  6. python图像转字符画_Python3:图片转字符画

    防伪码:没有相当程度的孤独是不可能有内心的平和. 1.环境准备主机名IP系统Python版本 Python-01192.168.10.9CentOS release 6.9 (Final)3.5.4 ...

  7. Unity3D基础知识学习笔记

    1.基础知识: 标题栏 菜单栏 工具栏:变换工具.gizmos切换.播放控件.层列表.布局列表 功能窗口 2.资源及资源类型:在project里面能够create的资源.project面板可以对资源进 ...

  8. Blender-绑定动画Auto-Rig Pro 重映射动捕FBX 小K结合 的问题以及解决

    基本使用的教程参考: B站教程参考[Blender/零成本动捕]使用Autorig轻松重映射动捕BVH to FBX to MMD(VMD)等自定义骨骼[附带IK] 小K的FBX文件导入会报错,需要安 ...

  9. 虚幻C++入门个人笔记(3)——接口、智能指针、动画蓝图、行为树、EQS系统

    接口 接口的词义广泛,用来陈述功能.选项,与其他程序结构进行沟通的方式.接口抽象出了交互结构,提供了两个未知逻辑交互的便捷性.对于编程中,如何更好地设计低耦合程序起到了至关重要的作用.设计者可以在互不 ...

最新文章

  1. Stream Processing: Apache Kafka的Exactly-once的定义 原理和实现
  2. BP网络Python实现代码
  3. linux溢出总结+windows aslr地址随机化绕过
  4. 反序列化工具_JBOSS反序列化漏洞
  5. http --- 用于HTTP调试的最小型Perl Web 服务器
  6. ReviewForJob——桶式排序+基数排序(==多次桶式排序)
  7. shader weaver_具有自定义汇编程序,Weaver和运行时的可插拔知识
  8. 加速引擎SmartFlow助力浪潮云海超融合2021H1中国市场增速第一
  9. c语言dfs算法全排列代码,c语言dfs解决全排列问题
  10. UP装机部署步骤大纲
  11. win10更新后,gambit无法使用,出现exceed安装弹窗解决方法
  12. 分析日志的工具: 日志易
  13. 华为达芬奇AI芯片架构
  14. 股票大作手操盘术---择时
  15. 2022-08-13 00:00:00 - 2022-08-13 23:59:59这种格式,后端如何处理成为date类型
  16. 云杰恒指:7.19恒指期货早盘资讯
  17. 程序员如何优雅地写公众号
  18. Windows下字符串替换操作java.lang.IllegalArgumentException: character to be escaped is missing
  19. opcache php7,让子弹飞~利用 OPcache 扩展提升 PHP7 性能 | Laravel 篇
  20. Halcon 之 Measure_Pairs

热门文章

  1. 《人类简史》笔记一——快乐该如何计算
  2. Burp Suite汉化
  3. 神华SAP物资采购项目经验总结
  4. Qt6数据类型-qint8、quint8、qint16、quint16、qint32、quint32、qint64、quint64、uint、qlonglong、uchar、double
  5. 【推荐】好友新书《拿下Offer-数据分析师求职面试指南》(文末赠送5本!)...
  6. NDC2012:玩网游是为了满足心理需求
  7. Visit of the Great
  8. C语言中常用的格式符 占位符%d,%c,%f,%p,%x,%s,%m.n等的含义解释
  9. 【51NOD1366贫富差距】 floyd
  10. SQL Server 跨版本数据迁移实践