公告板技术

       在看完了毛星云的《实时渲染提炼总结》9.6-9.7与冯乐乐的《Unity Shader入门精要》后,我对公告板技术有了大概的认识,在这里总结一下。

       公告板,英文名Billboarding,是一项让着色四边形根据视角方向来旋转的技术,这样看起来似乎物体总是面向观察者。与alpha纹理和动画技术结合,可用公告板创建许多不具有平滑实体表面的现象,比如常见的烟雾,云朵,爆炸效果,能量盾等等。

       让物体根据视角来旋转,这无疑就产生了旋转矩阵,而旋转矩阵需要三个正交基,这就是Billboarding的难点所在。公告板技术通常选取表面法线(n)、上方向(u)以及指向右的方向(r),因为u和n往往不是垂直的,故还需要指定一个锚点,使其固定不变,这样我们就能确定物体在空间中的位置。


       如上所示,固定n,则r=n x u(叉乘),此时r和n是垂直的,对r进行归一化,再更新上方向u’=n x r,这样n,r,u两两正交,这样就确定了正交基。当然也可以固定u,计算过程类似。通常根据需求来确定是固定u还是n,当要模拟自然界的花草树木是,我们当然需要固定上方向u,使u的方向始终为(0,0,1);固定n的例子就太多了(现在好多资料都只讲固定n)英雄联盟中人物的名字和血条就是最好的例子。

      公告板不能孤立存在,它们通常扎根于一个公告集,在该公告集内有相同的尺寸、材质等,这样能节省计算机的计算和渲染时间,当公告集内有大量的公告板时,这样的渲染方式就十分有必要了。因为有相同的材质和尺寸,这就意味着GPU在进行渲染时,300和3000个公告板并没有多大区别。



  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
浅墨出品,零资源分下载,分享精神至上~ 源码的配套博文是 《 【Visual C++】游戏开发五十四 浅墨DirectX教程二十一 视觉上的诡计:公告(Billboard)技术》 ,文章地址http://blog.csdn.net/poem_qianmo/article/details/13278851, 点击Release文件夹下的exe文件可以直接看到运行效果,运行需要DirectX运行库的支持。报缺少D3D的DLL系列错误的童鞋们请google/百度一下 “DirectX 9.0c runtime”,下载并装个最新版的。 报缺少MVCR100D.Dll错误的朋友们去下一个安装就可以了,或者直接点击sln打开工程再次编译一次。 背景音乐来自火影忍者疾风传 用键盘上W,A,S,D,I,J,K,L,↑,↓,←,→12个键加上鼠标在美丽的三维空间中翱翔。包括了Direct3D初始化,DirectInput输入处理,顶点缓存,文字输出,颜色,纹理贴图,四大变换,三维天空模拟,粒子系统等等知识。 另外,关于雪花粒子效果提醒大家一下,可在SnowParticleClass.h中的PARTICLE_NUMBER宏中改变雪花粒子数量,默认粒子数量为3000,1G显存的显卡取10万粒子数量帧数就只有8帧了。所以要自己改雪花粒子数量的话请根据自己的显卡性能酌情选择,如果你取个非常大的50万粒子数量,显卡吃不消烧了可别怪我- - 如果是想调试并运行源代码,但是报错了,请去下载最新版DirectX SDK并进行DirectX开发环境的配置。 编写环境:VS2010 我的博客地址是http://blog.csdn.net/zhmxy555,源码结合配套文章一起看效果更佳。 希望能和大家一起交流,共同学习,共同进步。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值