有点想好好回答一下这个问题,
先简略地写一些bulletpoint
这个问题总共分为这么几个模块:
Ronald Fedkiw,我们这一溜子的都算是他的徒孙,他进入cs系之前是航空航天系的博士
这一块可以再展开说。
2. 图形学中的仿真快,为啥?
几个层面:快在图形学发展了有限元、有限体积、MPM等算法理论,对很多计算做了改良,更重要的是图形学偏重工程实现,
在数据结构方面搞出了稀疏体素这样的数据结构,
在计算硬件上把gpu用得贼溜,
在算法开发上基本上人手撸一个多重网格求解器,比工科搞佛系仿真的真的卷多了。
3. 图形学不准吗?
图形学所研究的对象,“工况” 比工程科学的复杂多了,很多回答把图形学归咎为渲染做得好是难以令人信服的。 衣服、头发、破碎、海水、肌肉……这些东西的运动状态和模型十分复杂跨界,看似稀松平常,实则滴水万千虫。
鉴于此图形学用的算法,对于数值鲁棒性的要求高的很,一般都是能走十几个cfl数没问题的。而且图形学解决问题的手段不拘泥于一格,是综合格斗,从物理模型,到几何的方法, 到数据结构,到数值离散格式一起上的,考察综合作用的结果和优化,全方位立体化解决问题。 工程界则可能偏安于控制变量进行调优,固然不够打。
不能因为他算得快就说不准,更有甚者说看不见的地方不算那有这样的算法岂不是神仙了(比如模拟个核爆只把视角定到目标位置去好不好)
图形学算法可盐可甜,把dt打小了,再多套一两次迭代(比如从chorin变为simpler),和工程的算法是一模一样的,当然即使工程软件的chorin projection也肯定没图形学的实现快。
举个例子下图我们泽森科工的zeno算的激波,ansys不服来战?
https://www.zhihu.com/video/1397725868056285184计算方法来说,CG多采用计算更高效的数值方法如物质点、水平集等等,而要做到同等效果,有限元等传统算法要付出更多计算代价、甚至目前无法完成。从视觉上来说,计算机图形学更广义,因为将传统科学计算可视化也属于CG的范畴,SIGGRAPH大会每年都会有很多非常逼真的展示,也常会有一些有限元计算,而像撕面包啦、泥巴的斯坦福兔子啦、筷子撕红烧肉..相当震撼视觉,这些用有传统限元来做的话简直不敢想象。
而至于逼真程度而言,个人认为主要在于渲染。下面这个轮胎滑水效果逼真吧?而这是来自于一个平平无奇的Abaqus CEL仿真的渲染。
Abaqus中的结果可以直接导入到Blender进行后处理渲染,做到逼真的效果,比如这个夏比冲击试验仿真。
其实大多数有限元模拟经过高级渲染后都能做到以假乱真的地步,包括你做的悬臂梁,只是很多时候没有这个必要而已。
计算机图形学的仿真追求的是视觉上的真实。
说计算机图形学仿真的模型简单,不是说它算法粗糙,而是它大部分情况下只关心我们想要仿真的现象,而很少考虑真实世界中其它的因素。
举一个例子,航空航天里需要的仿真,要同时考虑传热、燃烧、相变、气动声学等等问题,这个和计算机图形学是不大一样的。
觉得能模拟个毛发、肌肉就能取代专业的工程模拟,实在是太。。。