Motion Graphs
Motion Graphs
内容来自于这篇论文。在Motion Matching中会使用这里面动画切换的技术。
动作捕捉的数据很难更改?编辑技术仅对运动的微小更改才可靠。如果数据跟实际使用场景的需求不同,就必须重新补捉,这代价就十分大了。这个是真的么?
这篇论文的目标是保留动作捕捉的真实感,同时也赋予用户控制和指挥角色的能力。简单来说,就是不需要担心角色是否有正确的动画,这个系统会从列表中选取最符合当前情况的一个动画来播放。
这篇论文提供了一个方法:把所有的基础动捕动画合成一个数据库,这个数据库叫做Motion Graphs
。其主要功能是选择当前需要的动画,且可以自动生成两个动画之间的过渡。
Motion Graphs
把动画合成问题转化为以下问题之一选择节点序列或图形寻路。
Related Work
Motion Graphs
是创建一个连续流式动画序列,而不是去修改任何一个原动画数据。
Motion Graphs
是一个自动的move trees
。自动生成。
Motion Graph Construction
一个运动片段被定义为角色参数的定期采样,其中包括根关节的位置和四元数代表每个关节的方向。
标记初始化动画切片相似的程度,直接混合两个切片得到过渡动画。
- describe our algorithm for detecting a set of candidate transition
points - how we select among these candidate transitions
- how blends are created at the chosen transition points
- how to prune the graph to eliminate problematic edges
Detecting Candidate Transitions
动捕数据就是:
- Vector:根节点位置
- Quaternion:骨骼节点的旋转
普通的混合有以下三点问题:
- 简单的向量无法解释混合使用到的所有参数。如某些骨骼在混合时,他对结果的影响过大。需要手动添加混合权重来平衡混合。
- 运动仅定义为刚性2D坐标变换。
- 丝滑的混合不仅需要节点的位置和旋转信息,还需要速度加速度等数据,来做支撑。
把两个姿势转化为点集合(point clouds),然后求这两个点集中的两个点的距离。
这里是有点没看明白,他后面求权重用这个距离,然后所有距离的最小值作为权重。没明白。
最后就怎么转化到了一张图啊,还是2D。
Selecting Transition Points
设置一个阈值来做过渡
Creating Transitions
如果求到的两个点集合(A,B)的距离能够满足阈值,然后就创建一个从当前帧开始长度为k
的两段动画的过渡。首先从2D的转换图上对其动画B。
然后对节点的位置使用线性插值,对旋转使用球面线性插值。
Pruning The Graph
不是所有节点都可以从一个节点到另一个节点。所以需要对节点裁剪,这里我理解的是对每个节点做分类,也有就是打上标签。
把同一标签的节点集合起来做连接。SCC
是一组节点的极大集合,使得任意有序节点对(u,v)
都存在连接图行走。SCC
可以使用Tarjan
算法在O(V+E)
时间内计算。
Extracting Motion
Converting Graph Walks To Motion
动作图上的每个边都是一段动作,图行走对应于通过将这些片段依次放置来生成的动作。
Searching For Motion
使用了公式,没看懂。看起来就是求图的最短路径的问题。