当选择static solve的时候,求解的流程如下:

1.获得内力
2.qresidual = 外力-内力,qdelta = qresidual, qdelta的非约束元素赋给bufferConstrained

3.用tangentStiffnessMatrix给systemMatrix A赋值
4.求解A * buffer = bufferConstrained
5.把buffer指定为qdelta不受约束的部分

由此可见,实质上是求解 tangentStiffnessMat * dx = 外力 - 内力
而tangentStiffnessMatrix*dx等于内力增量,于是式子就是 内力 + 内力增量 = 外力
实际上就是牛顿法求平衡位置

关于static solve有个问题,就是static solve不考虑点自身的加速度,于是如果不存在约束,一直迭代下去,最终结果一般就是rest pose,这样如何进行动态的物理模拟?
Efficient Simulation of Secondary Motion in Rig-Space这篇论文,大概是认为惯性力与弹力相比是小到可以忽略不计的,可以认为是把物体的运动无限放慢,直到每个时刻物体加速度都接近0;也可以认为物体的硬度十分大,于是惯性力可以忽略。于是每个运动时刻,物体的内部点位置就与受力平衡时的位置一样。

进行了这个假定之后,内部点的位置就可以用外部点去表示,于是自然就想到用某种方式去逼近这种表示。上述论文就是用外部点的线性组合去表示。


为了获得权重,可以有以下两种方法:
1.由用户指定几组参数配置,得出模型的不同姿态,利用这些姿态完成权重的计算。最后利用算出的权重进行模拟。模拟过程中,内部顶点可能需要有较好的初始化位置,可以考虑用重心坐标这类方法。这种方法可以让用户任意指定姿态。
2.论文的方法,在rest pose下,给表面点一些初速度,进行模拟。模拟过程中内部点只求平衡位置,而表面点还是要考虑质量和加速度(也就是去掉 H = h^2 / 2 * (as^T * Ms * as + aq^T * Mq * aq) + W 中的 aq^T * Mq * aq 项,这样不需要对原有的模拟算法进行大改,实现比较方便,无需专门初始化

大概看了调和坐标的论文Harmonic Coordinates for Character Articulation,大概意思是通过给边界点i指定δ函数的边界条件,通过求解拉普拉斯方程来算得这个点对周围区域的影响权重。方法计算量比较大。


当前要完成的任务有:
1.实现static solve求内部点的平衡位置。为了获得较好的初始化位置,可以考虑用重心坐标这类方法
具体可以往rigSimulate加一个shake的flag,功能是求解关键帧动画的内部点位置,并保存。保存成文件?可以保存成rigState,然后允许用户读取、保存rigState,这样就可以自由读取结果而不担心结果冲突。rigState可以用Matlab矩阵的格式,这样就可以容易被matlab插件读取了。
此时要搞一个切换开关,就是把参数param赋值为initParam的值,而不是赋值为内部的模拟值。用户通过给initParam设置动画控制shaking参数。
2.用python完成权重的计算
可以考虑先读取保存好的rigState,运行算法,再把结果保存。算法实现好之后再考虑变成mel命令。
3.实现消除了内部点自由度的模拟算法
读取权重算法结果,进行模拟。



看ImplicitBackwardEulerSparse关于static solve的代码的更多相关文章

  1. c#代码 天气接口 一分钟搞懂你的博客为什么没人看 看完python这段爬虫代码,java流泪了c#沉默了 图片二进制转换与存入数据库相关 C#7.0--引用返回值和引用局部变量 JS直接调用C#后台方法(ajax调用) Linq To Json SqlServer 递归查询

    天气预报的程序.程序并不难. 看到这个需求第一个想法就是只要找到合适天气预报接口一切都是小意思,说干就干,立马跟学生沟通价格. ​ ​不过谈报价的过程中,差点没让我一口老血喷键盘上,话说我们程序猿的人 ...

  2. 一文看懂Stacking!(含Python代码)

    一文看懂Stacking!(含Python代码) https://mp.weixin.qq.com/s/faQNTGgBZdZyyZscdhjwUQ

  3. 我们为什么要看《超实用的Node.JS代码段》

    不知道自己Node.JS水平如何?看这张图 如果一半以上的你都不会,必须看这本书,一线工程师用代码和功能页面来告诉你每一个技巧点. 都会一点,但不知道如何检验自己,看看本书提供的面试题: 1.     ...

  4. c++聪聪看书(低数据版代码)

    聪聪是一个善良可爱.睿智聪慧的好孩子.聪聪喜欢看书,这一天她在看一本书时看到了这样一个问题:给你一个正整数n,你要将它分成若干个自然数Ai的和的形式,并且使得这若干个自然数Ai的乘积尽量大,并输出最大 ...

  5. PHP_Bibel阅读学习(一)——看书看经典,写文写代码

    基础快速再看一下,然后每天有新的好玩的看. 这本书,反正好评不少,就是`PHP和MySQL Web开发`,机械工业出版社,澳洲人写的,红皮,有兴趣的可以看一下. 第一篇 使用PHP 一.入门 5分钟翻 ...

  6. 黑马程序员——JAVA基础之主函数main和静态static,静态代码块

    ------- android培训.java培训.期待与您交流! ---------- 主函数:是一个特殊的函数.作为程序的入口,可以被jvm调用. 主函数的定义: public:代表着该函数访问权限 ...

  7. C语言-人狼羊菜问题-最容易看懂的解决方法及代码

    题目描述:农夫需要把狼.羊.菜和自己运到河对岸去,只有农夫能够划船,而且船比较小,除农夫之外每次只能运一种东西,还有一个棘手问题,就是如果没有农夫看着,羊会偷吃菜,狼会吃羊.请考虑一种方法,让农夫能够 ...

  8. 构造方法、封装、关键字(this、static)和代码块的介绍

    1.构造方法 1.1 构造方法与成员方法的区别 构造方法分为无参构造和有参构造,其中有参构造方法和无参构造方法为方法的重载关系. 构造方法在初始化一个类的对象时进行调用,它没有返回值,方法名与类名相同 ...

  9. 看完python这段爬虫代码,java流泪了c#沉默了

    哈哈,其实很简单,寥寥几行代码网页爬一部小说,不卖关子,立刻开始. 首先安装所需的包,requests,BeautifulSoup4 控制台执行 pip install requests pip in ...

随机推荐

  1. Jquey Form 异步提交文件参数并且在http 信息头header中加上一定参数

    1.下载jQuery.Form 包 官网下载:http://jquery.malsup.com/form/#download 2.模拟代码: <!DOCTYPE html> <htm ...

  2. 用Path来绘制一些图形

    Path是android中用来封装几何学路径的一个类,因为Path在图形绘制上占的比重还是相当大的.你可以用它来绘制各种样式的几何图形,做图表什么的都可以. 一.画线段 1.1 lineT(float ...

  3. IP 协议首部格式与其配套使用的四个协议(ARP,RARP,ICMP,IGMP)

    目录 IP协议首部格式地址解析协议 ARP逆向地址解析协议 RARP网际控制报文协议 ICMP网际组管理协议IGMP IP 数据报首部 IP数据报首部格式: 最高位在左边,记为0 bit:最低位在右边 ...

  4. 【读书笔记】iOS-GCD-系统提供的dispatch方法

    系统提供的dispatch方法如下: //系统提供的dispatch方法 //后台执行: dispatch_async(dispatch_get_global_queue(0, 0), ^{ // s ...

  5. 单例模式(oc)

    //主函数 main.m #import <Foundation/Foundation.h> #import "Singleton.h" int main(int ar ...

  6. iOS edgesForExtendedLayout、extendedLayoutIncludesOpaqueBars、automaticallyAdjustsScrollViewInsets属性详解

    edgesForExtendedLayout: 在IOS7以后 ViewController 开始使用全屏布局的,而且是默认的行为通常涉及到布局,就离不开这个属性 edgesForExtendedLa ...

  7. iOS多线程-05-多图下载

    效果图 常见问题及解决方法 图片重复下载 将内存保存在内存或沙盒中. 若下载的图片量较大,则会出现UI界面不流畅的现象 在子线程中执行下载操作,然后回到主线程成中进行UI界面的刷新. 由于cell的循 ...

  8. sublime text 3 如何安装 package control

    sublime text3 是个很好的编辑工具,前端程序员觉得她很好,我是在一次视频中看到她能帮助自动完成很多快捷的操作. 为什么安装? 如果想要给sublime text 中安装别的插件(这里称呼为 ...

  9. CTF中那些脑洞大开的编码和加密

    0x00 前言 正文开始之前先闲扯几句吧,玩CTF的小伙伴也许会遇到类似这样的问题:表哥,你知道这是什么加密吗?其实CTF中脑洞密码题(非现代加密方式)一般都是各种古典密码的变形,一般出题者会对密文进 ...

  10. Entity Framework做IN查询

    开发中遇到的Too high level of nesting for select错误 项目使用了Entity Framework结合Mysql, 遇到了一个非常奇怪的性能问题,一个看起来非常简单的 ...