zhongyueqi的个人博客分享 http://blog.sciencenet.cn/u/zhongyueqi

博文

数字化是个好东西(三)

已有 4523 次阅读 2009-9-13 14:12 |个人分类:未分类|系统分类:观点评述| 虚拟现实, 数字化, 服装, 积分, 计算机图形图像

模拟的服装或者织物的形态稳定性从CS的角度来看,就是没有肉眼能够察觉的过度伸长或者压缩,从实际应用来看,就是你不能一件衣服穿到虚拟人身上之后,扑扑拉拉的往下一个劲儿的掉,看起来像融化的口香糖一样。也就是说,模型里面要控制应变和应变率。这工作蛮麻烦的,因为服装是穿在模特身上的,这个应变的控制是必须结合到碰撞检测和响应机制里面的。

所谓碰撞检测与响应在我们纺织工程学科或者纺织结构力学里面是不研究的,这个是CS里面才会有的。就是两个图元之间不能穿透,服装的三角形不能穿透到人体的三角形里面,这是个纯几何的问题,难点在于服装三角形如果有1万个,人体三角形如果是另外1万个,这些polygon soup之间如何纠结,又如何打开,就是个非常值得研究的命题了。所以CS的人发文章,要么发积分的,要么发碰撞检测优化算法的。

碰撞检测是要回答以下三个问题:

1.       有没有碰撞的可能性?

2.       如果发生碰撞,其发生的精确时间和位置何在?

3.       发生了之后,如何响应?

对于碰撞发生的可能性而言,包围盒技术是最容易实施和精度有保证的方法之一,要么做简单的AABB(Axis aligned bounding box),要么做稍微复杂些的OBB(oriented bounding box)k-dop。其目的是剔除那些没有可能发生碰撞的三角形对(triangle pair)。方法的原理很简单,用一个包围盒将三角形包起来,如何盒子不交叉,那么盒子里面的东西也就不交叉。

对于确定碰撞发生的时间,往往会采用二分法,虽然慢,但是保证收敛,对于碰撞发生的位置,就是三角形的求交,必有定解。

发生了之后如何响应的问题,包括有摩擦的响应和没有摩擦的响应,基本上都可以按照经典力学的模型去表达。

碰撞检测如果仅仅检测人体与服装,那么问题还好说。大多数情况下,服装的三角形单元之间也会发生碰撞,即自碰撞问题。这使得求解计算量增加了很多,对于很多游戏级的应用而言,是不计算自碰撞的,但是对于真实的服装仿真和高端动画或者影视特效而言,这就是个无法回避的问题。其解法可以分两个流派,一个是基于历史的,一个是不基于历史的。

所谓基于历史的,就是说如果一开始就标志清楚哪两块织物区域有可能发生碰撞,哪两块是绝对不可能的,或者在实时求解的过程中得到了一个无碰撞区,在以后的积分岁月里,沿袭无碰撞区和有碰撞区的几何特征,以此检测自碰撞问题。

所谓不基于历史的,就是说不管三七二十一,上来就检测织物自身是否有交叉,如果有,解开它。

很显然,基于历史的方法有一个致命陷阱,如果一开始由于某种原因,将有碰撞区误判为无碰撞区,那么以后这个错误就会被继承下去,永无翻身之日。也就是说,你不能寄希望于碰撞防止碰撞的发生,而应该致力于破解已经发生的碰撞。所以目前学术界的发展方向,应该是不基于历史的暴力破拆法,上来就硬碰硬的检测。所以说有时候有些做科研的人是要有些暴力倾向的,绵羊式的算法往往是种姑息算法,早晚会被历史所遗弃。

鉴于仅仅是供人娱乐的博文,就不展开啰嗦具体的算法了,本来已经是小众科学,再这样写的话,就成微众科学了。感兴趣的朋友可以关注一下Baraff及其一小撮的“Untangling Cloth”,还有Volino 以及 Magnenat-Thalmann的“Resolving surface collisions through intersection contour minimization”。Baraff他们这个时候似乎已经在Pixar供职了,Finding Nemo (国内译作海底总动员)中小女孩的服装就是用他们设计的算法来求解碰撞问题的。而Magnenat-Thalmann,全名Nadia Magnenat-Thalmann,是University of GenevaFellow,她治下的MIRALab是全球赫赫有名的实验室,最早开展虚拟服装虚拟人研究的就是他们家。Pascal Volino是她组里专攻碰撞检测的另一个牛人。

现在回过头来看Provot的问题,就会发现如果强行指定一个顶点的位置会带来致命的危险:破坏已经完成的碰撞响应后没有穿透的状态。因为这种纯几何式的位置修改是没有方向性和约束的。因此大家就开始寻找更好的约束方式,首先找到的是02年发表Robust Treatment of Collisions, Contact and Friction for Cloth Animation”的来自斯坦福大学的Robert Bridson。罗伯特选手首先提出了“速度过滤”的概念,虽然他那个时候并没有这样去命名。事实上他是约束那些可能产生过度变形的质点的运动速度,这样在一个时间步长结束时,质点所在的位置就有可能维持在给定的应变和应变率阀值内。这就相当于对于一个在雷电交加的夜晚收到大雨冲击的蜘蛛网而言,将那些带有巨大冲量有可能破坏蛛网稳定性的大个雨滴击碎,分散到蛛网上的每个节点上,从而保持蛛网的稳定性一个道理。这里将大雨滴变为小雨滴的过程就是速度过滤,实质是冲量的过滤。而分散到各节点则是一个迭代过程。所以如果没有分散好(即不收敛的话),还是会破坏蛛网的稳定性。因此,2007年,来自Columbia UniversityThe Hebrew University of Jerusalem ,以及University of California, Berkeley三所顶尖大学组成的豪华阵容:Rony Goldenthal David Harmon Raanan Fattal Michel Bercovier Eitan Grinspun等人发表了“Efficient Simulation of Inextensible Cloth”一文。我个人认为这也是一个里程碑式的工作,因为在此之前,还没有人能够把织物及服装的形态稳定性上升到如此高的高度,足有三四层楼那么高。

“他们创造性地继承和发扬了速度过滤的光辉精神,通过对增强型拉格朗日方程中约束条件的巧妙求解,胜利实现了应变阀值低于1%的伟大梦想”——博主

巧妙之一是用拉格朗日力学来表征,这个的求解在许多时候比经典力学来的快,来的自如。

巧妙之二是对于约束的求解是基于流形投影法。

至此,整个虚拟服装和虚拟织物的模拟在数学上和力学上,从CS的角度来说,我认为是够丰满的了。

可是,事实是否真的是这样呢?



https://blog.sciencenet.cn/blog-306966-255348.html

上一篇:数字化是个好东西(二)
下一篇:数字化是个好东西(四 完结篇)
收藏 IP: .*| 热度|

0

发表评论 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

全部作者的精选博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-26 23:54

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部