OpenGLES2应用 -- 手机上的实时头发模拟

本文介绍了在OpenGLES2环境下,利用DFTL算法实现实时头发模拟的技术。文章详细阐述了DFTL算法的工作原理,对比了传统的FTL算法,并展示了在不同手机设备上的性能测试结果。通过两个加速技巧,实现了更高效的头发渲染,包括使用PostProcess处理发尖的AlphaBlend。最终,程序能在不同移动平台上运行,如iPhone 4S和Samsung Galaxy S3。
摘要由CSDN通过智能技术生成

       首先先要向一篇博文的作者致敬。两年前在想自己留学研究计划时,正好有幸读到Moli的博文《爱丽丝的发丝。当时就觉得,实时的头发模拟可以做到这么逼真很不可思议。由着自己对物理模拟和图形学向往和那时的感动,就把自己的研究课题订为了头发模拟。正好也想做图形引擎(实际上称不上引擎,只是练习),又在学OpenGLES2,所以顺势把目标瞄准到了手机平台。后来就有接近一年断断续续写了个OpenGLES2的框架,支持自己Android和iOS移动平台上图形的研究。



Samsung GalaxyS3, 实时模拟4368根动态发丝

对于OpenGLES2框架的说明已经写在了前面的文章里,是个微型的主要使用C++编写的框架。接近开学时,框架已经8成完成了,就花了1个月用弹簧质点系统做了个头发模拟的程序,模拟都在CPU走,绘制使用GLES2。可以实时模拟大约100根头发。然后就把程序导入Android手机上拿给指导老师看,那时渲染还做得很差,老师说你可以试试把目标定为做到PC上模拟的质量,有些没有方向时实验室同学介绍给我一篇论文《Fast Simulation of Inextensible Hair and Fur》,后来按这这篇论文的思路改写了模拟的部分,大致性能提高了几十倍,基本上做到了手机上的实时模拟。

下面是相关的细节。


1.    头发实时模拟(含渲染)事件

这些大部分是显卡厂商的Demo,可以说是头发模拟游戏应用方面上的里程碑。这里顺便把模拟和渲染的方法也列举一下,模拟方法以弹簧系统为主流,Verlet-integration实现的类弹簧系统较为高效,另外PC上基本都用GPU来做模拟加速了。nVidia和ATI/AMD的Demo基本是开源的,可供参考的包括源码下载和TechnquePaper。


2004 ATI ruby hair

Simulation:Non

Rendering: KajiyaKay shading with highlight shift,Approximated depth-sorting



2004 nVidiaNalu hair

Simulation: spring system

Rendering:Marscher shading, OpacityShadowMap



2008 nVidiaRealTime hair

Simulation: spri

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值