无人驾驶场景中的点云着色

 点云着色的原理可以参加这位大佬的文字.

需要注意的是, colormap-jet 的颜色变换是从灰度空间到彩色空间,灰度空间的范围是【0·255】。

那么我们需要把点云的高度从新映射到这个区域。

先求得点云的最低高度和最高高度。 minZ maxZ.

g  =  (z - minZ)/(maxZ-minZ) * 255.

上面的g 就成了一个范围在0~255之间的灰度值了。 

下面贡献主要Shader 代码

            uniform float minZ;
            uniform float maxZ;
            varying vec4 clr;
            void main() {
                gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
                gl_PointSize = 1.0;
                float z = position.z;
                z = 255.0*(z - minZ)/(maxZ-minZ);
                int zz = int(z);
                if(zz >= 0 && zz < 32 )
                {
                    clr=vec4(0.5 + 4.0 * float(zz) / 256.0, 0.0, 0.0, 1.0);
                }
                else if(zz == 32){
                    clr=vec4(1.0, 0.0, 0.0, 1.0);
                }
                else if(zz >= 33 && zz < 95 )
                {
                    int x = 4 + 4*(zz-33);
                    clr=vec4(1.0, float(x) / 255.0, 0.0, 1.0);
                }
                else if(zz == 96){
                    clr=vec4(0.996, 1.0, 0.0, 0.0078);
                }
                else if(zz >= 97 && zz < 159 )
                {
                    int x = 250 - 4*(zz-97);
                    int y = 6 + 4*(zz-97);
                    clr=vec4(float(x) / 255.0, 1.0, float(y) / 255.0, 1.0);
                }
                else if(zz == 159){
                    clr=vec4(0.0039, 1.0, 0.996,1.0);
                }
                else if(zz >= 160 && zz < 224 )
                {
                    int x = 252 - 4*(zz-160);
                    clr=vec4(0.0, float(x) / 255.0, 1.0, 1.0);
                }
                else if(zz >= 224 && zz < 256 )
                {
                    int x = 252 - 4*(zz-224);
                    clr=vec4(0.0, 0.0, float(x) / 255.0, 1.0);
                }
                else{
                    clr=vec4(0.0039,1.0,0.0,1.0);
                }
            }

演示系统可以看看: 点云一键标注,助力无人驾驶_哔哩哔哩_bilibili

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值