基本实现蒙皮模拟

今天把蒙皮模拟算法实现了。

具体方法是加载此前算出的权重矩阵,每个内部点都是表面点的加权平均。

于是求解的时候唯一的未知数就是参数p了。

这次牛顿法能够模拟,但是同之前不带权重的模拟算法一样,模拟过程中无法收敛到全局极值点。

出问题的是这根棒。

控制这根棒的参数有两个,一个是弯曲大小,另一个是弯曲方向。

当强制令弯曲方向不起作用是,能够正常模拟,结果如上图。

当让弯曲方向参数起作用时,结果如下,模型不弯曲。

检查原因,发现牛顿法模拟的过程中,首步的梯度、Hessian、以及求出的参数增量如下:

梯度 Hessian 参数增量
有方向参数
G=[21319.284966 ;0.000000 ;];

H=[

1734695.368102 7.202621 ;

7.202621 0.000000 ;

];

x=1.0e+03 *
[0 2.9599]
没有方向参数 G=[21319.284966 ;0.000000 ;];
H=[

1734695.368102 0.000000 ;

0.000000 0.000000 ;

];

x=[0.0123 0]

准备在应用牛顿法前使用其他方法,例如沿梯度下降。

加了一个很简单的梯度下降算法

  1. for (int ithIter = 0; ithIter < 5; ++ithIter)
  2. {
  3. double f;
  4. isSucceed &= m_fem->computeValueAndGrad(p, tVec, &f, &G);
  5. p -= G * 1e-6;
  6. if(G.norm() < m_minGradSize)
  7. break;
  8. }

然后模拟成功了,如图……

来自为知笔记(Wiz)

附件列表

时间: 2024-09-27 04:11:46

基本实现蒙皮模拟的相关文章

实现共轭梯度法蒙皮模拟

今天把一维搜索和共轭梯度法加在牛顿法前面,发现模拟比较顺利了. 这个是模拟的结果,从左到右硬度递增 来自为知笔记(Wiz) 附件列表 rodCG.gif rodCG0.gif rodCG2.gif

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

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

关于Unity中蒙皮网格和布料的使用

所以物体的要绘制出来就必须要有网格组件+材质属性,如果还需要其他特效或丰富内容的话,还可以再加组件. 蒙皮网格和布料 1: 例如要模拟衣服,随风摆动,模拟布料需要用到蒙皮网格和布料;2: 蒙皮网格可以模拟出非常柔软的网格体,用于布料和角色的蒙皮功能:3: 蒙皮网格 + 布料组件能模拟出布料效果:4: Skinned Mesh Renderer是一种网格渲染器,是一种渲染网格的方式;5: 布料是Cloth组件; 蒙皮网格的重要属性 Cast Shadows: 投影方式 包括: off, 单向(on

准备实现体积蒙皮

之前发现,牛顿法在迭代的过程中容易收敛到局部.现在想通过减少变量的个数(不求解内部点的位置)来避免此种情况. 主要参考Efficient Simulation of Secondary Motion in Rig-Space这篇论文的方法. 方法的基本思路是,在解算的过程中,不考虑内部点的加速度,认为内部点始终处于平衡状态.于是内部点的位置唯一由表面顶点决定.既然是唯一决定,就可以考虑用某种方法近似这种决定方式.其中一种方法,就是用表面点的线性加权近似,这种方法本质上与线性蒙皮一样,因此称为体积

九、Python+Selenium模拟用QQ登陆腾讯课堂,并提取报名课程(练习)

研究QQ登录规则的话,得分析大量Javascript的加密解密,比较耗时间.自己也是练习很少,短时间成功不了.所以走了个捷径. Selenium是一个WEB自动化测试工具,它运行时会直接实例化出一个浏览器,完全模拟用户的操作,比如点击链接.输入表单,点击按钮提交等.所以我们使用它可以很方便的来登录. 但是作为新手还是多多分析,尽量少用这个,以便提高自己的技术.在研究几天,在写一个自己满意的. import time # import random from bs4 import Beautifu

九、Python+Selenium模拟登录

研究QQ登录规则的话,得分析大量Javascript的加密解密,比较耗时间.自己也是练习很少,短时间成功不了.所以走了个捷径. Selenium是一个WEB自动化测试工具,它运行时会直接实例化出一个浏览器,完全模拟用户的操作,比如点击链接.输入表单,点击按钮提交等.所以我们使用它可以很方便的来登录. 但是作为新手还是多多分析,尽量少用这个,以便提高自己的技术.在研究几天,在写一个自己满意的. import time # import random from bs4 import Beautifu

CentOS系统启动及内核大破坏模拟实验

讲过了centos的启动流程,此时是不是想来点破坏呢?那就尽情的玩耍吧,记得在实验之前拍个快照,万一哪个环节错误恢复不回来了呢,毕竟数据无价,话不多说,开始. 一.删除伪系统根.(ramdisk文件) (1)模拟误操作删除ramdisk文件. ①模拟误删除initramfs-3.10.0-514.el7.x86_64.img文件. ②为当前正在使用的内核重新制作ramdisk文件 格式为:mkinitrd /boot/initramfs-$(uname -r).img $(uname -r) (

NYOJ 2356: 哈希计划【模拟】

题目描述 众所周知,LLM的算法之所以菜,就是因为成天打游戏,最近LLM突然想玩<金庸群侠传X>,结果进去后各种被虐,LLM就开始研究这个游戏的代码,顺便还学会了一点点点点lua语言,然后就开始了伟大的改游戏代码之旅,然后LLM发现自己too young了,这个游戏把所有的文本都进行了哈希,如果自己改了代码或者剧情文本的话它哈希出来的值就会和原来的哈希值不一样......然后游戏就会打不开.....,现在LLM发现了文本的哈希函数,要求你写个程序,功能为: 输入一段字符串,输出一个哈希值 为了

爬虫——模拟点击动态页面

动态页面的模拟点击: 以斗鱼直播为例:http://www.douyu.com/directory/all 爬取每页的房间名.直播类型.主播名称.在线人数等数据,然后模拟点击下一页,继续爬取 #!/usr/bin/python3 # -*- conding:utf-8 -*- __author__ = 'mayi' """ 动态页面的模拟点击: 模拟点击斗鱼直播:http://www.douyu.com/directory/all 爬取每页房间名.直播类型.主播名称.在线人数