三维物体变形方法赋予了模拟物体的动态特性,但是随着物体模型的复杂度慢慢增加,对高质量的实时变形方法也提出了更高的要求。对于高精度的大型三维网格而言,通常会设计一个低精度的子网格,并构建子网格与原始网格之间的映射关系,然后通过控制低精度子网格的变形来驱动高精度原始网格的变形。[Wang et al. 2015]提出了一种线性子网格的构建方法,下面将介绍其主要原理。

  通用的网格形变能量函数可以表示成如下二次项形式:

其中A是与网格形状相关的半正定矩阵,SX删选出X中控制点所在的行,H是控制点所在的空间位置。

  如果选取二阶Laplacian形变能量函数,那么A = LTM-1LL是Laplacian矩阵,对于三角网格而言,常用的矩阵L表达式如下:

  但是这种定义方式是有缺陷的,它使得在网格内部满足线性光滑,而在网格边界处由于缺失角度信息而非线性光滑。事实上,对于边界顶点i,矩阵L中的行Li计算的是顶点i的拉普拉斯算子(laplacian)减去该点的法向导数(normal derivative),拉普拉斯算子是线性光滑的,而法向导数并不是。为了修复边界缺陷问题,对所有边界点所在的行加上法线导数得到新的线性光滑的Laplacian矩阵:

K = L + N

  边界点的法向导数N定义如下:

式中字母的具体含义如下图所示。

  对于四面体网格,可以得到类似的定义:

式中字母的具体含义如上图所示。

  有了上述理论之后,我们可以将高精度的原始网格通过精简方法得到低精度的子网格,并保证子网格的所有顶点都位于原始网格上,这样以子网格顶点为控制点可以得到子网格与原始网格之间的映射关系。

  对于子网格的动态模拟,可以用如下能量函数表示,其由E1和E2两部分组成,其中能量E1使得三维物体在模拟过程中保持细节特征,能量E2则描述了三维物体基于物理模拟的动态特性。

其中

本文为原创,转载请注明出处:http://www.cnblogs.com/shushen

参考文献:

[1] Yu Wang, Alec Jacobson, Jernej Barbič, and Ladislav Kavan. 2015. Linear subspace design for real-time shape deformation. ACM Trans. Graph. 34, 4, Article 57 (July 2015), 11 pages.

[2] Olga Sorkine and Marc Alexa. 2007. As-rigid-as-possible surface modeling. In Proceedings of the fifth Eurographics symposium on Geometry processing (SGP '07). Eurographics Association, Aire-la-Ville, Switzerland, Switzerland, 109-116.

物体自由落体动态模拟(Linear Subspace)的更多相关文章

  1. 小球自由落体动态模拟(Position Based Simulation)

    在过去的几十年中,基于物理的三维物体动态模拟成为了计算机图形学的研究热点,其中最常见的方法是基于力(force-based)的模拟方法,比如弹簧质点模型,它把物体抽象成一系列质点以及连接这些质点的弹簧 ...

  2. 洛谷 P1033 自由落体 Label:模拟&&非学习区警告

    题目描述 在高为 H 的天花板上有 n 个小球,体积不计,位置分别为 0,1,2,….n-1.在地面上有一个小车(长为 L,高为 K,距原点距离为 S1).已知小球下落距离计算公式为 d=1/2*g* ...

  3. [luoguP1033] 自由落体(模拟?)

    传送门 这不能算是数论题... 卡精度这事noip也做的出来.. 代码 #include <cmath> #include <cstdio> int n, ans; doubl ...

  4. 使用CSS3动画模拟实现小球自由落体效果

    使用纯CSS代码模拟实现小球自由落体效果: html代码如下: <div id="ballDiv"> <div id="ball">&l ...

  5. JavaScript模拟自由落体

    1.效果图 2.实现分析 利用Canvas画圆球.地面: 1.下落过程 物理知识回顾,物体下落过程(不计损耗)由重力势能转换成动能 重力势能 Ep = mgh 动能  Ek = (1/2)mv^2 速 ...

  6. OpenGL绘制自由落体小球

    OpenGL绘制自由落体小球 一.    程序运行的软硬件环境 本次设计在window10系统下进行,运用C++进行编写,在CodeBlocks环境下使用OpenGL进行设计. 所需环境配置分为2部分 ...

  7. canvas动画:自由落体运动

    经过前面的文章,我们已经能够在canvas画布上画出各种炫酷的图形和画面,但是这些画面都是禁止的,怎么样才能让他们动起来呢? 如何绘制基本图形可以参考:canvas基本图形绘制 如何对基本图形移动旋转 ...

  8. Javascript摸拟自由落体与上抛运动 说明!

    JavaScript 代码 //**************************************** //名称:Javascript摸拟自由落体与上抛运动! //作者:Gloot //邮箱 ...

  9. 洛谷——P1033 自由落体

    P1033 自由落体 题目描述 在高为 H 的天花板上有 n 个小球,体积不计,位置分别为 0,1,2,….n-1.在地面上有一个小车(长为 L,高为 K,距原点距离为 S1).已知小球下落距离计算公 ...

随机推荐

  1. 跨域访问之CORS

    CORS:定义 2014年1月16日,W3C的Web应用工作组(Web Applications Working Group)和Web应用安全工作组(Web AppSec)联合发布了跨源资源共享(Cr ...

  2. POJ 3342 Party at Hali-Bula / HDU 2412 Party at Hali-Bula / UVAlive 3794 Party at Hali-Bula / UVA 1220 Party at Hali-Bula(树型动态规划)

    POJ 3342 Party at Hali-Bula / HDU 2412 Party at Hali-Bula / UVAlive 3794 Party at Hali-Bula / UVA 12 ...

  3. 【故障处理】ERROR 1872 (HY000): Slave failed to initialize relay log info structure from the repository

    今天在使用冷备份文件重做从库时遇到一个报错,值得研究一下. 版本:MySQL5.6.27 一.报错现象 dba:(none)> start slave; ERROR (HY000): Slave ...

  4. 关于table表格td里内容是数字而且太长不换行的问题

    <p>table{table-layout:fixed}</p><p>table td{word-wrap:break-word}</p><p&g ...

  5. Java IO 之 BIO、NIO、AIO

    1.BIO.NIO.AIO解释 Java BIO : 同步并阻塞 (Blocking IO) 一个连接一个线程 即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不 ...

  6. 前端框架之bootstrap

    一.bootstrap按钮 1.按钮 <button class="btn btn-default">按钮</button><button class ...

  7. 决策树(C4.5)原理

    决策树c4.5算法是在决策树ID3上面演变而来. 在ID3中: 信息增益 按属性A划分数据集S的信息增益Gain(S,A)为样本集S的熵减去按属性A划分S后的样本子集的熵,即 在此基础上,C4.5计算 ...

  8. 初探JavaScript的截图实现

    最近参与了网易炉石盒子的相关页面开发,在做卡组分享页(地址:炉石盒子卡组分享),有个需求:用户可以把这个卡组以图片的形式分享给好友.最初的的做法是使用服务器把该页面转换成图片,然后把图片地址返回给前端 ...

  9. jdk 环境变量配置方法总结

    全部修改在用户变量/系统变量 系统变量→新建 JAVA_HOME 变量 .变量值填写jdk的安装目录(本人是 D:\java\Java\jdk1.8.0_72) 系统变量→寻找 Path 变量→编辑在 ...

  10. oracle ORA-00604/ORA-01653

    问题描述: ORA-00604: error occurred at recursive SQL level 1ORA-01653: unable to extend table SYS.AUD$ b ...