Real-time exploration of regular volume data by adaptive reconstruction of isosurfaces读书笔记

本文讨论使用Octree(八叉树)重建表面的问题。 3 Continuous isosurfaces 讨论连续性问题。 如果在Octree上储存数据,那么在不同大小的格子交界的地方,数据可能会不连续。 本文采用的方法:在大小格子交界处,让大格子在小格子上sample数值: 图1 也就是用方块节点插值出来三角节点的值,把原来的扔掉。这样一来,小格子上的数值就是线性的,那么marching cubes就会在大小格子上得到同样的intersection point,也就是说数值是连续的。 但是,虽然数值连续,但算出来的表面不一定连续。如图3: 图3 ... 查看更多

关于马拉戈尼效应(Marangoni Effect)

本文基于维基百科内容写作: https://en.wikipedia.org/wiki/Marangoni_effect https://en.wikipedia.org/wiki/Marangoni_number 示例视频(需科学上网): https://upload.wikimedia.org/wikipedia/commons/3/38/Marangoni_effect_experimental_demonstration.ogv 马拉戈尼效应由表面张力的梯度产生。在简化情况下,流体被马拉戈尼效应驱动而流动的特征速度,其中是表面张力的特征差距(differ... 查看更多

OpenGL屏幕像素坐标问题

传给glutMouseFunc()的(x,y)是左上至右下的坐标:x表示离屏幕左边缘的像素数,y表示离屏幕上边缘的像素数,如图: 而glReadPixels()采用的坐标系统则与此不同,它是从左下到右上的。也就是说,x表示离屏幕左边缘的像素数,y表示离屏幕下边缘的像素数,如图: 所以,如果想把glutMouseFunc()取得的坐标传给glReadPixels(),就需要做一个变换: y=Height-y-1 ... 查看更多

读书笔记:A Model for Soap Film Dynamics with Evolving Thickness

3 SOAP FILM DYNAMICS WITH VARYING THICKNESS 3.1 Definitions and Setting 流体在薄膜上的流动遵循带有表面张力项的无粘NS方程: 这个x上面一点就是速度的意思。(1)右端第一项是表面张力。里面的u代表气-液界面,l代表液-气界面。H是平均曲率,n是法向。这里u和l得名于“upper”和“lower”. 然后是狄拉克函数,在之外消逝。 压强p在除边界之外的地方二阶可导,在每个泡泡里面的空气区域中取恒定值。 S是surface: 这里面A是的子集。然后在一个点可以确定局部坐标系... 查看更多

Efficient elasticity for character skinning with contact and collisions部分翻译(碰撞检测部分)

7 约束和碰撞 我们使用点约束(point constraints),这样一方面施加软体约束(例如bone attachments),一方面解决物体之间的碰撞/自碰撞。特别地,我们在规则网格(lattices)上放一些代理点(proxy points),在这些点上记录力,并用三次插值法把这些力分配回六面体网格节点上(hexahedral cells)。展示了这种方法的效率。 碰撞检测 对碰撞的响应(collision response)由一系列代理点决定,它们大致覆盖了碰撞表面。我们使用一种基于惩罚项(penalty)的响应方式,这个惩罚项取决于代理点处的穿透深度,以及该点... 查看更多

读书笔记:An Introduction to Physically Based Modeling: Rigid Body Simulation I—Unconstrained Rigid Body Dynamics(SIGGRAPH’97 COURSE NOTES)

1 模拟基础 用“状态向量”表示一个质点的状态: 如果三维,就是六个数。这个Y可以扩展到n个质点: 我们先暂且考虑一个质点。F(t)是该质点t时刻所受合力。假设该点有质量m,那么状态向量的变化率就是: 2 刚体基本概念 2.1 位置和方向 质点没有方向,刚体有,所以复杂一点。描述刚体,首先需要位置x(t),然后是3*3旋转矩阵R(t).我们称x(t)和R(t)是刚体的“空间变量”。 在固定的body space里面定义刚体的形状。之后就可以用x(t)和R(t)把它变换到world space下。我们约定刚体质心在原点(0,0,... 查看更多

Peskin2002:The immersed boundary method阅读笔记

2 运动方程 文中推导的是不可压缩弹性固体的方程。目标是让弹性方程看起来尽量像流体方程一样。 (q,r,s)是固体上的曲线坐标。X(q,r,s,t)是该固体质点在t时刻的位置。M(q,r,s)是质量密度。由能量密度函数E定义固体材料性质。弹性力就是它的Frechet导数: 这里是小扰动的意思。的意思就是在X基础上的小扰动。类似地就是对总能量的小扰动。 定义体积改变比例J: 弹性固体材料不可压缩也就是: 根据最小作用量原理,物体运动应当最小化: 这个L是Lagrangian.而运动过程满足固体不可压方程(2.10)和初始... 查看更多

The Material Point Method for Simulating Continuum Materials读书笔记

3 简介 MPM是结合PIC和FLIP而发展的一种算法。MPM对Lagrangian mesh连通性没有要求。 和PIC/FLIP类似,MPM算法在背景Eularian网格的辅助下,隐式处理自碰撞和破碎。与传统的Lagrangian方法(例如FEM算固体)Eularian方法(流体)相比,MPM好处如下: 和FEM一样,MPM可以由弱动量守恒形式导出,因此求解精确。可以很容易在网格和粒子上施加边界条件、固壁碰撞和外力。自动解决自碰撞/接触。因为粒子的运动,是由网格上未被扭曲的节点运动插值而得。自动对物质进行分割/合并,因为物质是由粒子表示的。这对流体和颗粒状材料很有用。只要... 查看更多

Guendelman: Coupling Water and Smoke to Thin Deformable and Rigid Shells略读

摘要 本文提出一种流固耦合算法,能处理用三角面片表示的,无穷薄的固体。经典的流固耦合算法在三维格子上表示固体,但薄片没有内部区域,这就需要新方法。我们使用Robust ray casting来辅助插值,有限差分和渲染算法,使得液体不会穿过固体薄片。此外,我们提出了一种新方法,使得在enforcing incompressibility过程中,固体表面附近的流体不会被异常地压缩。这样,我们就可以模拟薄布料和少量水的互动。我们的方法既能处理刚体也能处理软体。我们提出了一种two-way coupling算法,让流体压力能影响到固体。 我们的算法既能用在规则网格上,也能用于自适应八叉树网格。... 查看更多

Bridson:Fluid Simulation for Computer Graphics 11章 流固耦合

单向耦合 如果固体足够小,就可以忽略固体对流体的作用力,只考虑流体对固体的作用力。 固体受到的力分为两种:压力和粘性力。在固体非常小的时候,粘性力占主导,某点处的粘性力等于粘性张量乘以法向,总的受力就是: 这里S代表固体的体积,法向指向固体外部。由于是单向耦合,因此不在固体表面应用无滑移边界条件,也就不能直接把流体的粘性张量拿来用。那怎么办呢?理论上讲,固体周围应该有边界层,应该拿边界层内的速度场算粘性张量,但边界层的流场问题还没有解决。因此书中就搞了一个简单的式子: 这里面F_i是i号固体 (非常小,近似粒子) 受到的粘性力/拖曳力,u是流体的速度场... 查看更多