公告牌技术应该在每款游戏应用中都会用到,因为粒子系统大量用到该技术。对粒子系统来说,每个粒子都是一直朝向相机的一个位图。在早期的PC游戏中,树的表现也多用公告牌技术,现在随着硬件发展和玩家(player)胃口的改变,树很少用此技术了。但是,因为很多手持设备上的3D应用越来越多,在这样的设备上,采用对CPU要求比较低的公告牌还是很有吸引力的。
现实应用中,公告牌一般都围绕x轴(Pitch)和y轴(Yaw)转动,不考虑z轴的转动(Roll),因此公告牌技术中有所谓的Cylinder
1、取得每一帧的view
2、从上面的view
3、逆矩阵中位置的几个量手工设置成
4、把该逆矩阵作为绘制公告牌图元时候的world
5、绘制公告牌图元,如粒子(particle)。
6、记得需要的话恢复或者设置其他3D物体需要的世界矩阵,用于其他非billboard的渲染。
在代码上,D3D代码大概如此这般:
D3DXMATRIX
//
D3DXMatrixInverse(
matrix._41
matrix._42
matrix._43
//
//
//
device.SetTransform
写这篇文章的时候,正好截下“剑侠情缘叁”(西山居出品的网游)的使用公告牌技术的例子。上面的图的"武"和下面的图的"武"是同一个Billboard在不同的相机角度的截图。可以很容易看出来,在第二张图中,我们的相机已经到了人的头顶上,方向是朝下看,这个图元还是对准我们的镜头。这个就是公告牌技术的典型运用。
