计算机动画8

关节动画

考虑内部骨架的运动,考虑的是运动学上的控制,不考虑引起运动的力,区别于动力学
用于人物、动物运动或者非人物的拟人化控制

基本概念

  • 关节:如果两个刚体互相连接且能够发生相对运动,则这两个刚体关联部分称为关节
  • 关节链:将一系列一次相连的刚体通过关节连接而成的开链
  • 链杆:关节链中每一段刚体
  • 基结点:关节链的起点
  • **末端影响器 **:关节链的自由末端(End effector)
    关节链
  • 状态空间:关节链结构所有可能状态的向量空间
  • 状态向量:状态空间中的向量
  • 关节链结构的自由度(Degree of freedom - DOF):完全确定关节链结构状态所需的独立变量个数
  • 单个自由度关节:允许在一个方向上运动
  • 复杂关节:大于一个自由度的关节

正向运动学

如何从给定的状态向量计算各个链杆的位置,尤其是末端影响器的位置
动画师通过直接指定关节处关节运动参数来控制物体的运动

计算方法

基本思想:分段计算结果

说明:θ以逆时针为正,C位末端影响器,状态空间 ( θ 1 θ 2 θ 3 ) \left(\begin{matrix}\theta_1 \\ \theta_2\\ \theta_3\end{matrix}\right) θ1θ2θ3

三链杆
分段计算可以获得如下函数:
{ x C = L 1 c o s θ 1 + L 2 c o s ( θ 1 + θ 2 ) + L 3 c o s ( θ 1 + θ 2 + θ 3 ) y C = L 1 s i n θ 1 + L 2 s i n ( θ 1 + θ 2 ) + L 3 s i n ( θ 1 + θ 2 + θ 3 ) \begin{cases}x_C=L_1cos\theta_1+L_2cos(\theta_1+\theta_2)+L_3cos(\theta_1+\theta_2+\theta_3)\\ y_C=L_1sin\theta_1+L_2sin(\theta_1+\theta_2)+L_3sin(\theta_1+\theta_2+\theta_3) \end{cases} {xC=L1cosθ1+L2cos(θ1+θ2)+L3cos(θ1+θ2+θ3)yC=L1sinθ1+L2sin(θ1+θ2)+L3sin(θ1+θ2+θ3)
如果用齐次坐标表示
( x y 1 ) = M 1 , 2 M 1 , 1 M 2 , 2 M 2 , 1 M 3 , 2 M 3 , 1 O 其 中 O = [ θ 1 θ 2 θ 3 ] , M 3 , 1 = [ 1 0 L 3 0 1 0 0 0 1 ] , M 3 , 2 = [ c o s θ 3 − s i n θ 3 0 s i n θ 3 c o s θ 3 0 0 0 1 ] \left(\begin{matrix} x\\y\\1 \end{matrix}\right)=M_{1,2}M_{1,1}M_{2,2}M_{2,1}M_{3,2}M_{3,1}O\\ 其中 O=\left[\begin{matrix}\theta_1 \\ \theta_2\\\theta_3\end{matrix}\right], M_{3,1}=\left[ \begin{matrix} 1 & 0 & L_3\\ 0 & 1 & 0\\ 0 & 0 &1 \end{matrix} \right], M_{3,2}= \left[ \begin{matrix} cos\theta_3 & -sin\theta_3 & 0\\ sin\theta_3 & cos\theta_3 & 0\\ 0 & 0 &1 \end{matrix} \right] xy1=M1,2M1,1M2,2M2,1M3,2M3,1OO=θ1θ2θ3,M3,1=100010L301,M3,2=cosθ3sinθ30sinθ3cosθ30001

逆向动力学

目标驱动,如何从末端位置 计算状态向量的位置

意义:动画设计者只需要控制末端位置,而不需要控制整个关节链结构,从而简化动画设计。动画师可以不用从头到尾调试,可只精调生成的结果

计算方法

根据末端影响器位置进行插值运算
通过计算正向动力学的方程(组)求出解

  • 解析法(适用于简单系统)
  • 数值计算(常见Jacobian)

存在困难:

  • 求解有0个、一个或多个:过约束系统(存在过多限制条件且不存在对应解)、欠约束系统(系统约束较少且存在多个解)
  • 奇异问题:在一条直线上
解析法

解析法例子

已知:末端影响器位置(X,Y),链杆长度: L 1 , L 2 L_1,L_2 L1,L2

可达空间 L 1 − L 2 ≤ X 2 + Y 2 ≤ L 1 + L 2 L_1 -L_2 \leq \sqrt{X^2+Y^2} \leq L_1+L_2 L1L2X2+Y2 L1+L2

使用余弦定理求解

在这里插入图片描述

θ T = a r c c o s ( X X 2 + Y 2 ) θ 1 = a r c c o s ( L 1 2 + ( X 2 + Y 2 ) − L 2 2 2 L 1 X 2 + Y 2 ) + θ T θ 2 = a r c c o s ( L 1 2 + L 2 2 − ( X 2 + Y 2 ) 2 L 1 L 2 ) \theta_T=arccos(\frac{X}{\sqrt{X^2+Y^2}})\\ \theta_1=arccos(\frac{L_1^2+(X^2+Y^2)-L_2^2}{2L_1\sqrt{X^2+Y^2}})+\theta_T\\ \theta_2=arccos(\frac{L_1^2+L_2^2-(X^2+Y^2)}{2L_1L_2}) θT=arccos(X2+Y2 X)θ1=arccos(2L1X2+Y2 L12+(X2+Y2)L22)+θTθ2=arccos(2L1L2L12+L22(X2+Y2))

Jacobian法

使用牛顿迭代法
`
牛顿法例子

求解发 f ( x ) = 0 f(x)=0 f(x)=0
(1)选择接近函数 f ( x ) f(x) f(x)零点的值 x 0 x_0 x0
(2)计算 f ( x 0 ) f(x_0) f(x0)和切线斜率 f ′ ( x 0 ) f'(x_0) f(x0)
(3)计算经过 ( x 0 , f ( x 0 ) ) (x_0,f(x_0)) (x0,f(x0))并且斜率位 f ′ ( x 0 ) f'(x_0) f(x0)的直线和 x x x轴的交点 x 1 x_1 x1: f ( x 0 ) = ( x 0 − x ) ∗ f ′ ( x 0 ) f(x_0)=(x_0-x)*f'(x_0) f(x0)=(x0x)f(x0)
(4)可推出迭代公式 x n + 1 = x n − f ( x n ) f ′ ( x n ) x_{n+1}=x_n - \frac{f(x_n)}{f'(x_n)} xn+1=xnf(xn)f(xn),并利用迭代公式去逼近最优解

牛顿迭代法收敛速度很快,能以较快速度不断靠近方程的根,但是不能保证最优解,只是计算方程的一个近似值

以三链杆关节链为例
  • 构建函数
    根据之前正向动力学所得的方程组构建函数, θ 1 , θ 2 , θ 3 \theta_1,\theta_2,\theta_3 θ1,θ2,θ3为自变量
    { f 1 ( θ 1 , θ 2 , θ 3 ) = L 1 c o s θ 1 + L 2 c o s ( θ 1 + θ 2 ) + L 3 c o s ( θ 1 + θ 2 + θ 3 ) − x f 2 ( θ 1 , θ 2 , θ 3 ) = L 1 s i n θ 1 + L 2 s i n ( θ 1 + θ 2 ) + L 3 s i n ( θ 1 + θ 2 + θ 3 ) − y \begin{cases} f_1(\theta_1,\theta_2,\theta_3)=L_1cos\theta_1+L_2cos(\theta_1+\theta_2)+L_3cos(\theta_1+\theta_2+\theta_3)-x\\ f_2(\theta_1,\theta_2,\theta_3)=L_1sin\theta_1+L_2sin(\theta_1+\theta_2)+L_3sin(\theta_1+\theta_2+\theta_3)-y \end{cases} {f1(θ1,θ2,θ3)=L1cosθ1+L2cos(θ1+θ2)+L3cos(θ1+θ2+θ3)xf2(θ1,θ2,θ3)=L1sinθ1+L2sin(θ1+θ2)+L3sin(θ1+θ2+θ3)y

  • 构造雅可比矩阵
    [ ∂ f 1 ∂ θ 1 ∂ f 1 ∂ θ 2 ∂ f 1 ∂ θ 3 ∂ f 2 ∂ θ 1 ∂ f 2 ∂ θ 2 ∂ f 2 ∂ θ 3 ] = [ J 1 , 1 − L 2 s i n ( θ 1 + θ 2 ) − L 3 s i n ( θ 1 + θ 2 + θ 3 ) − L 3 s i n ( θ 1 + θ 2 + θ 3 ) J 2 , 1 L 2 c o s ( θ 1 + θ 2 ) + L 3 c o s ( θ 1 + θ 2 + θ 3 ) L 3 c o s ( θ 1 + θ 2 + θ 3 ) ] 其 中 J 1 , 1 = − L 1 s i n ( θ 1 ) − L 2 s i n ( θ 1 + θ 2 ) − L 3 s i n ( θ 1 + θ 2 + θ 3 ) J 2 , 1 = L 1 c o s ( θ 1 ) + L 2 c o s ( θ 1 + θ 2 ) + L 3 c o s ( θ 1 + θ 2 + θ 3 ) \left[\begin{matrix} \frac{\partial f_1}{\partial \theta_1} & \frac{\partial f_1}{\partial \theta_2} & \frac{\partial f_1}{\partial \theta_3} \\ \frac{\partial f_2}{\partial \theta_1} & \frac{\partial f_2}{\partial \theta_2} & \frac{\partial f_2}{\partial \theta_3} \end{matrix}\right]= \left[\begin{matrix} J_{1,1} & -L_2sin(\theta_1+\theta_2)-L_3sin(\theta_1+\theta_2+\theta_3) & -L_3sin(\theta_1+\theta_2+\theta_3) \\ J_{2,1} & L_2cos(\theta_1+\theta_2)+L_3cos(\theta_1+\theta_2+\theta_3) & L_3cos(\theta_1+\theta_2+\theta_3) \end{matrix}\right]\\ 其中 J_{1,1}=-L_1sin(\theta_1)-L_2sin(\theta_1+\theta_2)-L_3sin(\theta_1+\theta_2+\theta_3)\\ J_{2,1}=L_1cos(\theta_1)+L_2cos(\theta_1+\theta_2)+L_3cos(\theta_1+\theta_2+\theta_3) [θ1f1θ1f2θ2f1θ2f2θ3f1θ3f2]=[J1,1J2,1L2sin(θ1+θ2)L3sin(θ1+θ2+θ3)L2cos(θ1+θ2)+L3cos(θ1+θ2+θ3)L3sin(θ1+θ2+θ3)L3cos(θ1+θ2+θ3)]J1,1=L1sin(θ1)L2sin(θ1+θ2)L3sin(θ1+θ2+θ3)J2,1=L1cos(θ1)+L2cos(θ1+θ2)+L3cos(θ1+θ2+θ3)

  • 迭代
    ( θ 1 n + 1 θ 2 n + 1 θ 3 n + 1 ) = ( θ 1 n θ 2 n θ 3 n ) − J − 1 ( f 1 ( θ 1 n , θ 2 n , θ 3 n ) f 2 ( θ 1 n , θ 2 n , θ 3 n ) ) \left(\begin{matrix} \theta_1^{n+1}\\ \theta_2^{n+1}\\ \theta_3^{n+1} \end{matrix}\right)= \left(\begin{matrix} \theta_1^{n}\\ \theta_2^{n}\\ \theta_3^{n} \end{matrix}\right)-J^{-1} \left(\begin{matrix} f_1(\theta_1^n, \theta_2^n,\theta_3^n)\\ f_2(\theta_1^n, \theta_2^n,\theta_3^n) \end{matrix}\right) θ1n+1θ2n+1θ3n+1=θ1nθ2nθ3nJ1(f1(θ1n,θ2n,θ3n)f2(θ1n,θ2n,θ3n))

这里求的是J的广义逆矩阵 J + J^+ J+

  • 迭代停止条件:若 n > n m a x n>n_{max} n>nmax或方程组值变化 < ε <\varepsilon <ε则停止,返回KaTeX parse error: No such environment: at position 7: \begin{̲}̲

基于层次建模的数据结构

将角色分解成若干个关节链结构,并形成骨架树
过程

  1. 人体骨骼抽象成关节和链杆组成的模型
  2. 取某个关节点为根节点,建立骨架树
  3. 通过关节链的正向运动学和逆向运动学求解骨架树的正向和逆向运动
    在这里插入图片描述

研究方向

  • 骨架与角色模型绑定

  • 中性姿态或静止姿态在这里插入图片描述
    问题:某些点属于多个部分,如何实现多个部分共同影响一个点
    分离导致了变化不自然

  • 顶点混合
    关节处用柔性部分连接
    柔性部分的一部分顶点有前关联部分的矩阵变化所得,另一部分由后关联部分的矩阵来变换
    一个顶点由几个不同的矩阵加权变换在这里插入图片描述

  • 基于样本的权重确定

  • 骨架与三维角色模型的自动绑定

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于微信小程序的家政服务预约系统采用PHP语言和微信小程序技术,数据库采用Mysql,运行软件为微信开发者工具。本系统实现了管理员和客户、员工三个角色的功能。管理员的功能为客户管理、员工管理、家政服务管理、服务预约管理、员工风采管理、客户需求管理、接单管理等。客户的功能为查看家政服务进行预约和发布自己的需求以及管理预约信息和接单信息等。员工可以查看预约信息和进行接单。本系统实现了网上预约家政服务的流程化管理,可以帮助工作人员的管理工作和帮助客户查询家政服务的相关信息,改变了客户找家政服务的方式,提高了预约家政服务的效率。 本系统是针对网上预约家政服务开发的工作管理系统,包括到所有的工作内容。可以使网上预约家政服务的工作合理化和流程化。本系统包括手机端设计和电脑端设计,有界面和数据库。本系统的使用角色分为管理员和客户、员工三个身份。管理员可以管理系统里的所有信息。员工可以发布服务信息和查询客户的需求进行接单。客户可以发布需求和预约家政服务以及管理预约信息、接单信息。 本功能可以实现家政服务信息的查询和删除,管理员添加家政服务信息功能填写正确的信息就可以实现家政服务信息的添加,点击家政服务信息管理功能可以看到基于微信小程序的家政服务预约系统里所有家政服务的信息,在添加家政服务信息的界面里需要填写标题信息,当信息填写不正确就会造成家政服务信息添加失败。员工风采信息可以使客户更好的了解员工。员工风采信息管理的流程为,管理员点击员工风采信息管理功能,查看员工风采信息,点击员工风采信息添加功能,输入员工风采信息然后点击提交按钮就可以完成员工风采信息的添加。客户需求信息关系着客户的家政服务预约,管理员可以查询和修改客户需求信息,还可以查看客户需求的添加时间。接单信息属于本系统里的核心数据,管理员可以对接单的信息进行查询。本功能设计的目的可以使家政服务进行及时的安排。管理员可以查询员工信息,可以进行修改删除。 客户可以查看自己的预约和修改自己的资料并发布需求以及管理接单信息等。 在首页里可以看到管理员添加和管理的信息,客户可以在首页里进行家政服务的预约和公司介绍信息的了解。 员工可以查询客户需求进行接单以及管理家政服务信息和留言信息、收藏信息等。
数字社区解决方案是一套综合性的系统,旨在通过新基建实现社区的数字化转型,打通智慧城市建设的"最后一公里"。该方案以国家政策为背景,响应了国务院、公安部和中央政法会议的号召,强调了社会治安防控体系的建设以及社区治理创新的重要性。 该方案的建设标准由中央综治办牵头,采用"9+X"模式,通过信息采集、案(事)件流转等手段,实现五级信息中心的互联互通,提升综治工作的可预见性、精确性和高效性。然而,当前社区面临信息化管理手段不足、安全隐患、人员动向难以掌握和数据资源融合难等问题。 为了解决这些问题,数字社区建设目标提出了"通-治-服"的治理理念,通过街道社区、区政府、公安部门和居民的共同努力,实现社区的平安、幸福和便捷。建设思路围绕"3+N"模式,即人工智能、物联网和数据资源,结合态势感知、业务分析和指挥调度,构建起一个全面的数据支持系统。 数字社区的治理体系通过"一张图"实现社区内各维度的综合态势可视化,"一套表"进行业务分析,"一张网"完成指挥调度。这些工具共同提升了社区治理的智能化和效率。同时,数字社区还提供了包括智慧通行、智慧环保、居家养老和便民服务等在内的多样化数字服务,旨在提升居民的生活质量。 在硬件方面,数字社区拥有IOT物联网边缘网关盒子和AI边缘分析盒子,这些设备能够快速集成老旧小区的物联设备,实现传统摄像设备的智能化改造。平台优势体现在数字化能力中台和多样化的应用,支持云、边、端的协同工作,实现模块化集成。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值