当选择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. 关于谷歌浏览器不能播放背景音乐的问题(与IE的不同之处)

    第一篇博文 忍受寂寞,抵制诱惑,持之以恒. 开发时,以下代码在IE浏览器上能顺利播放背景音乐,可在谷歌浏览器上却没有动静. <html> <body> <bgsound ...

  2. C: const and static keywords

    原文:http://www.noxeos.com/2011/07/29/c-const-static-keywords/ C: const and static keywords Ok, once a ...

  3. CSS3中的calc()

    什么是calc()? calc是英文单词calculate(计算)的缩写,是css3的一个新增的功能; MDN的解释为可以用在任何长度,数值,时间,角度,频率等处; /* property: calc ...

  4. SAP技术相关Tcode

    ABAP的常用tcode 开发----------------------------------------------- SE51  屏幕制作 SE91  MESSAGE OBJECT SE80  ...

  5. 桥牌笔记:Skill Level 4 D8

    西拿黑桃K.A后,转攻小方块. 看来只有一个小红桃失张了.飞方块没有必要冒险.但将牌分布4-0时会有点麻烦.

  6. sublime: useful commands

    CMD+R go to function in current file CMD+Option+Down find function definition in another file (from ...

  7. IOS中(Xcode) DEBUG模式(RELEASE模式)控制NSLog输出,NSLog两种不同情况的输出方式

    [新年新气象,2016/01/04] 俺们在开发IOS程序过程中,经常需要用到NSLog输出一些信息,甚至有的开发过程,必须在控制台查看输出,有经验的程序员通过控制台输出就能知道整个数据交互的一个流程 ...

  8. 【读书笔记】iOS-Objective-C对C的扩展基础知识

    一,Xcode的.m扩展名表示文件含有Objective-C代码,应由Objective-C编译器处理.C编译器处理名称以.c结尾的文件,而C++编译器处理.cpp文件.在Xcode中,所有这些编译工 ...

  9. 使用Apache Tomcat Maven插件部署运行 Web 项目

    什么是Apache Tomcat Maven Plugin? Maven Plugin 是Apache Tomcat 提供的一个Maven插件,它可以在你没有tomcat容器时将任何一个war项目文件 ...

  10. 关于EditText的一点深入的了解

    最近在开发android下的记事本程序时,频繁的使用EditText控件,折腾来折腾去,算是对其的了解更深入了一些.特将这些收获记录如下: 一.几个属性的介绍 android:gravity=&quo ...