准备实现体积蒙皮

之前发现,牛顿法在迭代的过程中容易收敛到局部。现在想通过减少变量的个数(不求解内部点的位置)来避免此种情况。

主要参考Efficient Simulation of Secondary Motion in Rig-Space这篇论文的方法。

方法的基本思路是,在解算的过程中,不考虑内部点的加速度,认为内部点始终处于平衡状态。于是内部点的位置唯一由表面顶点决定。既然是唯一决定,就可以考虑用某种方法近似这种决定方式。其中一种方法,就是用表面点的线性加权近似,这种方法本质上与线性蒙皮一样,因此称为体积蒙皮。

当前首要任务是,实现static solve的模拟。

时间: 2024-11-02 16:47:22

准备实现体积蒙皮的相关文章

实现PD控制

尝试为场加入PD控制 在之前的模拟中,需要最小化一个能量函数H. 这样做的原因是,由理想约束的特性(约束反力垂直于虚位移),对于不含体积蒙皮的情况,可以推出 对于表面点,有 J^T * Σfs = 0 对于内部点,有 Σfn = 0 而对于体积蒙皮的情况, 对于表面点,仍有 J^T * Σfs = 0 对于内部点,有 J^T * W^T * fn = 0 其中W为蒙皮权重矩阵 综合两种情况,可以发现,这些力平衡情况都同H函数对内部点n.对参数p的导数等于零是等价的. 不含体积蒙皮的情况,dH/d

改进的共轭梯度法

今天看到共轭梯度法的两种实现,一种称为fletcher-reeves(FR-CG)方法,另一种称为polak-ribiere(PR-CG)方法. 在含体积蒙皮的模拟过程中,两者差别不大 又对比了wolfe的c1,c2取值,发现c2取0.1时,共轭梯度法在初始阶段收敛较取0.45时快,但后期收敛慢 在不含体积蒙皮的模拟过程中,两者性能略有差别.但差别与是否只取大于0的beta,是否在梯度与上次迭代梯度方向相近时直接去最速下降法有关.有时候FR较快,有时候PR较快. 最后按照numerical op

程序员初见Maya 之 简单骨骼蒙皮动画

作为一个Unity3d程序员,和3D动画打交道的时间占了工作的大半.每天从美术手里接过热乎乎的FBX,导入到Unity3d,对其进行一番Clip切割,修改一下Scale比例,然后到代码中修改一下状态机,调试每一个动作. 但是终究是用别人的成品. FBX导入到编辑器中,看到有Root.LeftBone.Bone123456这些节点,不知道是什么东西. 这种很迷糊的感觉. 趁清明回家,花一天熟悉Maya的基础知识,做一个最简单的骨骼蒙皮动画. 开发工具: Maya2015 Unity3d 安装May

C语言 · 求圆面积表面积体积

算法提高 3-3求圆面积表面积体积 时间限制:1.0s   内存限制:256.0MB 问题描述 接受用户输?的数值,输出以该值为半径的(1)圆面积,(2)球体表面积,(3)球体体积.pi 取值3.1415926536 ,结果保留10位小数,每一列占20个字符,左对齐. 样例输入 一个满足题目要求的输入范例.例:1 样例输出 与上面的样例输入对应的输出.例:(第一行1是输入,第二行是输出) 数据规模和约定 所有结果在double类型的表示范围内. 1 #include<stdio.h> 2 #d

[分享] WIN7x64封装体积小于4G制作过程

raymond 发表于 2015-11-1 18:27:17 https://www.itsk.com/thread-359041-1-1.html 前人栽树,后人乘凉!感谢各位大神的作品!我只是按部就班操作了一下,没有任何的技术含量. 此贴只为想封装进4G的朋友而提供个参考,高手千万略过!!!原版党就请忽略此贴吧!!! 就不贴图了,看多了也看够了,都一个样子.直接出过程: 工具: 1.ZS的SysCeo_Win7_Ultimate_V10母盘(百度一下)2.EasyHotfix_3.6.201

虚幻4视频笔记002:精简StarterContent文件夹体积

#虚幻4#视频笔记:精简StarterContent文件夹体积 . 在很多练习项目和测试项目中,都会使用StarterContent文件夹,但是该文件夹体积巨大,如果项目数量多会占用大量空间,并且分享起来也很麻烦.这里提供了一种精简体积的简单方法.注意明确视频内容后再对项目进行精简,并且也不要在生产环境中使用这个技巧. 油管: http://t.cn/Rtgk4is 度盘:http://t.cn/Rtgk46v

POJ 2184(01背包)(负体积)

http://poj.org/problem?id=2184 http://blog.csdn.net/liuqiyao_01/article/details/8753686 对于负体积问题,可以先定义一个“零点”shift,将dp[shift]设为0,其他都设为-INF. 然后负体积从0往maxn+cost更新,正体积从maxn往shift更新. 最后从shift到maxn中找最大值,shift以下的值不会被遍历到 #include <iostream> #include <strin

hdu 2002 计算球体积

计算球体积 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 102749    Accepted Submission(s): 42550 Problem Description 根据输入的半径值,计算球的体积. Input 输入数据有多组,每组占一行,每行包括一个实数,表示球的半径. Output 输出对应的球的体积,对于每组输入数据

减小Delphi XE5编译出来的程序体积

. 默认Delphi XE, XE2, XE3,XE4,XE5, XE6 ... 编译出来的程序体积很大. 一般用两个方法可以很大程度上减少程序体积. 一.在工程中用编译指令禁用RTTI 禁用的方法很简单,就是要在工程 的Uses语句前添加下面的定义就可以了: { Reduce EXE size by disabling as much of RTTI as possible (delphi 2009/2010) } {$IF CompilerVersion >= 21.0} {$WEAKLIN