zoukankan      html  css  js  c++  java
  • 三维场景中使用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 }
  • 相关阅读:
    Golang 之 casbin(权限管理)
    Golang validate验证器
    商城实战课程
    webstorm上的Element提示插件
    实战高并发大流量秒杀系统
    lettcode 739: 每日温度
    时钟同步 chrony
    linux 文件目录权限命令
    Nginx 四层负载均衡
    Nginx 版本回滚
  • 原文地址:https://www.cnblogs.com/calence/p/6207612.html
Copyright © 2011-2022 走看看