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

其中A是与网格形状相关的半正定矩阵,SX删选出X中控制点所在的行,H是控制点所在的空间位置。
如果选取二阶Laplacian形变能量函数,那么A = LTM-1L,L是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)的更多相关文章
- 小球自由落体动态模拟(Position Based Simulation)
在过去的几十年中,基于物理的三维物体动态模拟成为了计算机图形学的研究热点,其中最常见的方法是基于力(force-based)的模拟方法,比如弹簧质点模型,它把物体抽象成一系列质点以及连接这些质点的弹簧 ...
- 洛谷 P1033 自由落体 Label:模拟&&非学习区警告
题目描述 在高为 H 的天花板上有 n 个小球,体积不计,位置分别为 0,1,2,….n-1.在地面上有一个小车(长为 L,高为 K,距原点距离为 S1).已知小球下落距离计算公式为 d=1/2*g* ...
- [luoguP1033] 自由落体(模拟?)
传送门 这不能算是数论题... 卡精度这事noip也做的出来.. 代码 #include <cmath> #include <cstdio> int n, ans; doubl ...
- 使用CSS3动画模拟实现小球自由落体效果
使用纯CSS代码模拟实现小球自由落体效果: html代码如下: <div id="ballDiv"> <div id="ball">&l ...
- JavaScript模拟自由落体
1.效果图 2.实现分析 利用Canvas画圆球.地面: 1.下落过程 物理知识回顾,物体下落过程(不计损耗)由重力势能转换成动能 重力势能 Ep = mgh 动能 Ek = (1/2)mv^2 速 ...
- OpenGL绘制自由落体小球
OpenGL绘制自由落体小球 一. 程序运行的软硬件环境 本次设计在window10系统下进行,运用C++进行编写,在CodeBlocks环境下使用OpenGL进行设计. 所需环境配置分为2部分 ...
- canvas动画:自由落体运动
经过前面的文章,我们已经能够在canvas画布上画出各种炫酷的图形和画面,但是这些画面都是禁止的,怎么样才能让他们动起来呢? 如何绘制基本图形可以参考:canvas基本图形绘制 如何对基本图形移动旋转 ...
- Javascript摸拟自由落体与上抛运动 说明!
JavaScript 代码 //**************************************** //名称:Javascript摸拟自由落体与上抛运动! //作者:Gloot //邮箱 ...
- 洛谷——P1033 自由落体
P1033 自由落体 题目描述 在高为 H 的天花板上有 n 个小球,体积不计,位置分别为 0,1,2,….n-1.在地面上有一个小车(长为 L,高为 K,距原点距离为 S1).已知小球下落距离计算公 ...
随机推荐
- 看懂 ,学会 .NET 事件的正确姿势
一.事件的本质 举个例子你是个取向正常的青年男性,有个身材火辣,年轻貌美,腿长肤白的美女,冲你一笑,给你讲了一个ABCD羊吃草的故事.你有什么反应?可能你关注点在于颜值,身材,故事,故事含 ...
- Let's Encrypt与DNS轮循
本文由网络安全研究员.securityheaders.io和report-uri.io创始人Scott Helme发布在其个人博客中.描述了如何使用Let's Encrypt的同时兼容DNS轮循. 早 ...
- Spring boot——logback 基础使用篇(一)
1 简单日志配置 spring boot内部使用Commons Logging来记录日志,但也保留外部接口可以让一些日志框架来进行实现,例如Java Util Logging,Log4J2还有Logb ...
- Android - 基于 Speex 的高度封装语音库,0 耦合使用
作者:林冠宏 / 指尖下的幽灵 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 博客:http://www.cnblogs.com/linguan ...
- java 文件读和写(整理)
1 读文件 1)按字节读取,FileInputStream用于读二进制文件,如,图片,声音,影像等 /** * 以字节为单位读取文件,常用于读二进制文件,如图片.声音.影像等文件. */ public ...
- redis 一般性使用概述
最近一段时间与redis接触比较频繁.发现有些东西还是工作中经常会用到的,自己也花了点时间巩固下.本篇文章主要是以总结性的方式梳理,因为redis的主题很大,任何一个技术点展开都是几篇文章的量.也可以 ...
- FPGA计算3行同列数据之和
实验:FPGA计算3行同列数据之和 实验要求:PC机通过串口发送3行数据(一行有56个数据,3行共有56*3=168个数据)给FPGA,FPGA计算3行同一列数据的和,并将结果通过串口返回给上位机. ...
- sping 框架学习之——初始篇
sping框架学习: 1,什么是spring框架 spring是J2EE应用程序框架,是轻量级的IoC和AOP的容器框架,主要是针对javaBean的生命周期进行管理的轻量级容器,可以单独使用,也可以 ...
- spring mvc4使用及json 日期转换解决方案
spring mvc使用注解方式配制,以及对rest风格的支持,真是完美致极.下面将这两天研究到的问题做个总结,供参考.1.request对象的获取方式1:在controller方法上加入reques ...
- Apache Kafka系列(一)
摘要: 1.Apache Kafka基本概念 2.Kafka的安装 3.基本工具创建Topic 本文基于centos7, Apache Kafka 0.11.0 一.基本概念 Apache Kafka ...