Dust3D项目实训十 | 基于SkeletonIkMover的骨骼运动分析

本文详细介绍了Dust3D软件中用于骨骼运动控制的模块,重点探讨了逆向运动学(IK)算法的应用,包括循环坐标下降法(CCD)的实现细节。通过对SkeletonIkMover类的源码分析,展示了如何通过CCD求解骨骼运动,以及在迭代过程中如何调整关节角度以达到目标位置。此外,还讨论了关节限制条件在IK计算中的处理方法。

2021SC@SDUSC

目录

分析概括

模块功能

IK算法

关键代码分析

SkeletonIkMover.h分析

CCD求解骨骼运动算法

SkeletonIkMover.cpp分析


分析概括

模块功能

该模块主要用于骨骼的运动控制,主要作用于Dust3D中的姿势模块,可以通过控制骨骼来控制几何体的姿势和动作

IK算法

骨络动画中有两种骨骼绑定模式:FK(正向运动学,Forward Kinematics)和IK(逆向运动学, Inverse Kinematics)两种。Dust3D中主要采用了IK控制骨骼运动,先确定子骨骼的方位,反向推导出其继承链上n级父骨骼方位。

IK的计算方法可分为两种:ccd方法和雅可比转置矩阵法。

1.循环坐标下降法(Dust3D所用的方法,详情见后文)

2.可以使用雅可比转置矩阵,它定义了末端效应器如何基于整个系统的瞬时变换而变化(末端效应器就是指整个骨骼链的末端),求得的矩阵示转置,就可以得到要求的矩阵。

 

关键代码分析



SkeletonIkMover.h分析

struct SkeletonIkNode
{//IK节点信息
    QUuid id;
    QVector3D position;
    QVector3D newPosition;
};

class SkeletonIkMover : public QO
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值