惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Martin Fowler
Martin Fowler
大猫的无限游戏
大猫的无限游戏
J
Java Code Geeks
罗磊的独立博客
雷峰网
雷峰网
G
Google Developers Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
爱范儿
爱范儿
B
Blog RSS Feed
腾讯CDC
Apple Machine Learning Research
Apple Machine Learning Research
D
Docker
Recent Announcements
Recent Announcements
T
Tailwind CSS Blog
博客园 - 聂微东
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Vercel News
Vercel News
小众软件
小众软件
人人都是产品经理
人人都是产品经理
云风的 BLOG
云风的 BLOG
IT之家
IT之家
Blog — PlanetScale
Blog — PlanetScale
I
InfoQ
S
SegmentFault 最新的问题

博客园 - Skyman

XML文件修改 - Skyman - 博客园 IE和FireFox中JavaScript的函数名的作用域的异同 - Skyman - 博客园 Javascript的assert() gif test CSS Sprites 周记(081124-081128) 几何变换矩阵 我的3D化身(Avatar) 真人3D Avatar 3D Dirichlet Free-Form Deformation(三维Dirichlet自由变形) UV UnWrap(UV展开) 图片拼接镶嵌(OpenGL实现) 模拟人生2人脸制作(转载) 脸部的黄金比例(转载) 使用WTL实现不规则窗口 最近在读《圣经》 《虚拟情人》Demo视频演示 《虚拟情人- Simone》 Demo演示 Papervision3D(Version 1.5)引擎源代码分析
Ha, I Can Touch The Ball Anywhere
Skyman · 2008-11-25 · via 博客园 - Skyman

    角色动画是构建虚拟世界(游戏和虚拟社区)一个比较重要的内容。因为虚拟世界最关键的是人与虚拟角色(即“化身”,Avatar)之间的交互,会动的世界才有生机。角色动画可分两种:预定义动画(predefined animation)和程序动画(procedural animation)。预定义动画是事先由美术师制作好的动画序列,程序运行时只能播放,不能改变;程序动画是在程序运行时实时生成。相比预定义动画,程序动画能实现更好的交互。

    程序动画可以用来实现物理动画(physics animation),物理动画可以让角色根据物理规律对外界作出相应的反应动作。物理动画现在已经开始应用到3D游戏里了。比如Crytek公司的CRYENGINE 2引擎就采用了这项技术,例如角色可以根据地形的坡度来自动调整站立的身姿,如下图所示:

    IK就是一种实现程序动画的方法。骨络动画分为FK(正向运动学,Forward Kinematics)和IK(逆向运动学, Inverse Kinematics)两种。FK这里就不细讲了,是最常用的设置动画的方法。这里主要讲一下IK,IK和FK相反,它是给定末端作用器的位置或方向,来反求各节点的位置。如下图所示:

    IK主要用于程序动画中,比如跑步时人的腿根据地形进行自适应,用手拿东西,用手握扶手开门等。如下图所示:

    IK计算有2种方法:解析法和迭代法。解析法速度快,但只适用于节点较少的情况;迭代法通用性强,但有时容易得到局部极小值。所以一般是这两种方法混用。IK的解的个数有多种情况:

                 

          (a) 无解                                  (b) 唯一解                      (c) 两个解                               (d) 许多解

    若节点数大于2个,就会出现有许多解的情况,那么如何选择最佳解呢,对人的手和腿来说,每个关键都有约束(转动角度的范围),那么就要考虑这些解有没有满足这些约束。但是可能满足这些约束的解不止一个,这时就要选择一个最佳的,比如视觉效果最好的。一种方法是选择消耗能量最少的那个(比如手臂各关节抬得最低)。

    FK可以实现比较自然的动画效果;IK可以用在程序中实时生成骨络的关键帧,这样就可以使角色根据外界环境实时的作出动作的反应,更真实。因为FK和IK各有优缺点,所以往往FK和IK混用(FK/IK blend)。

    上面说到IK能够更好的实现交互效果。比如在虚拟世界(游戏或虚拟社区)中,你可以让一个角色替你拿某样东西,等等,IK就能实现这种需求,这样会使我们和虚拟角色的交互更加有趣。下面是我最近做的一个小demo,演示的就是你把红色小球放在某一个地方,虚拟角色都可以用手摸到它。技术要点主要是:实时IK求解器和FK/IK混合。

高清版观看地址:http://www.youtube.com/watch?v=1cVD1zXcSz8&fmt=18

---------------------------------------------------
Author: Skyman (吴俊)
版权所有,未经允许,不得转载
---------------------------------------------------