三维场景中使用BillBoard技术

三维场景中对于渲染效果不是很精致的物体可以使用BillBoard技术实现,使用该技术需要将物体实时朝向摄像机,即计算billboard的旋转矩阵M。

首先根据摄像机位置cameraPos和billBoard中心点的坐标centerPos,计算出向量look = centerPos - cameraPos;

然后计算bilboard的向量right = look * cameraUP;

最后计算billboard的向量up = right * look;

最终得到M = mat(right,up,look)。

**注意事项:使用该技术时,首先要关闭深度测试,然后打开混合。

可参考网站:

http://nehe.gamedev.net/article/billboarding_how_to/18011/

http://www.flipcode.com/archives/Billboarding-Excerpt_From_iReal-Time_Renderingi_2E.shtml

具体代码如下:

 1 mat4 BillboardMatrix()
 2 {
 3     vec3 look = normalize(centerPosition - worldCameraPos);
 4     vec3 right = cross( look, worldCameraUp );
 5     vec3 up = corss(right,look);
 6     mat4 result;
 7     result[0] = vec4( right, 0.0 );
 8     result[1] = vec4( up, 0.0 );
 9     result[2] = vec4(look, 0.0 );//
10     result[3] = vec4( 0.0, 0.0, 0.0, 1.0 );
11     return result;
12 }
原文地址:https://www.cnblogs.com/calence/p/6207612.html