Billboard(广告牌)实现的逐步推导
来源:互联网 发布:php计算日期相差天数 编辑:程序博客网 时间:2024/04/27 19:34
广告牌并不是什么令人心动的技术,但我敢说是最实用的技术,
在粒子系统和场景优化方面,起着重要的作用。
下面我用最明了的公式和步骤解释实现的整个过程,
希望对初学者有帮助。
1、获得当前的模型视图矩阵
2、转置此矩阵就会找到up和right向量
[ m0 m1 m2 m3 ]
[ m4 m5 m6 m7 ]
[ m8 m9 m10 m11]
[ m12 m13 m14 m15]
转置为
[ m0 m4 m8 m12 ]
[ m1 m5 m9 m13 ]
[ m2 m6 m10 m14 ]
[ m3 m7 m11 m15 ]
3、从矩阵中抽取相应的向上和向右矢量(红色部分)
4、计算新的坐标
下方的角点,其heightScale应为负值。
5、绘制一个Billboard Quad
另外对于y轴向的Billboard, 我们只用使它的up vector 等于(0, 1, 0), 就可以了!!
www.azure.com.cn
在粒子系统和场景优化方面,起着重要的作用。
下面我用最明了的公式和步骤解释实现的整个过程,
希望对初学者有帮助。
1、获得当前的模型视图矩阵
GLfloat viewMatrix[16];
glGetFloatv(GL_MODELVIEW_MATRIX, viewMatrix);
glGetFloatv(GL_MODELVIEW_MATRIX, viewMatrix);
2、转置此矩阵就会找到up和right向量
[ m0 m1 m2 m3 ]
[ m4 m5 m6 m7 ]
[ m8 m9 m10 m11]
[ m12 m13 m14 m15]
转置为
[ m0 m4 m8 m12 ]
[ m1 m5 m9 m13 ]
[ m2 m6 m10 m14 ]
[ m3 m7 m11 m15 ]
3、从矩阵中抽取相应的向上和向右矢量(红色部分)
vec3 right(viewMatrix[0], viewMatrix[4], viewMatrix[8]);
vec3 up(viewMatrix[1], viewMatrix[5], viewMatrix[9]);
vec3 up(viewMatrix[1], viewMatrix[5], viewMatrix[9]);
4、计算新的坐标
newPoint = centerPoint + up * heightScale + right * widthScale;
对于位于中心点的左边的角点,其widthscale值取负,而对于位于中心点下方的角点,其heightScale应为负值。
5、绘制一个Billboard Quad
//左下角
glTexCoord2f(0.0, 1.0); glVertex3fv(point + (right + up) * -size).v);
//右下角
glTexCoord2f(1.0, 0.0); glVertex3fv(point + (right - up) * size).v);
//右上角
glTexCoord2f(1.0, 1.0); glVertex3fv(point + (right + up) * size).v);
//左上角
glTexCoord2f(0.0, 1.0); glVertex3fv(point + (right - up) * -size).v);
glTexCoord2f(0.0, 1.0); glVertex3fv(point + (right + up) * -size).v);
//右下角
glTexCoord2f(1.0, 0.0); glVertex3fv(point + (right - up) * size).v);
//右上角
glTexCoord2f(1.0, 1.0); glVertex3fv(point + (right + up) * size).v);
//左上角
glTexCoord2f(0.0, 1.0); glVertex3fv(point + (right - up) * -size).v);
另外对于y轴向的Billboard, 我们只用使它的up vector 等于(0, 1, 0), 就可以了!!
www.azure.com.cn
- Billboard(广告牌)实现的逐步推导
- BillBoard 广告牌的两种实现方式
- Cesium Billboard 广告牌的设置
- Billboard矩阵的推导
- hdu 2795(Billboard) 广告牌
- 【Unity】广告牌(Billboard)材质
- UnityShader实例10:广告牌(Billboard)材质
- UnityShader实例10:广告牌(Billboard)材质
- billboard技术的XNA实现
- 广告牌的价值
- 广告牌
- unity实现动态广告牌效果
- 让游客吃惊的广告牌
- OpenGL深入探索——广告牌(Billboard)和几何着色器
- Unity中SpriteRender实现广告牌效果
- 开启新线程实现电子广告牌
- BillBoard shader实现
- BillBoard shader实现
- 实现asp.net只对个别控件实时访问数据库刷新数据
- 烟草业高利税背后的代价:每年百万人死于吸烟
- DataObject 标签说明(网摘)
- 开源的魔兽世界
- 不同局域网内经Internet的P2P通信技术总结
- Billboard(广告牌)实现的逐步推导
- Web service到底是什么;在什么情况下你应该使用Web service。
- 3D游戏编程入门探险 第一章 整装待发
- Server.Transfer,Response.Redirect的区别
- Tomcat类加载机制
- SQL学习日志-1.数据库的定义
- orcle 的 常用函数 总结 (日文版)
- hibernate集合映射inverse和cascade
- 每月的倒扣料