灰度图、高度图和法线贴图

灰度图

某点的颜色为P(R,G,B),灰度计算方法:

  1. 浮点算法:Gray = R*0.3+G*0.59+B*0.11;
  2. 整数方法:Gray = (R*30+G*59+B*11)/100;
  3. 移位方法:Gray = (R*76+G*151+B*28)>>8;
  4. 平均值法:Gray =(R+G+B)/3;
  5. 仅取绿色:Gray = G;

则点P在灰度图中的颜色为(Gray,Gray,Gray)

高度图

高度图一般是一个灰度图,每一个像素代表一个采样点的高度,一般0(黑色)表示最低点,255(白色)表示最高点。

从数学的角度看,高度图是一个二维数组v,例如采样点(x, y, z),则其灰度 g = z * 255 / MAX_HEIGHT,v[x][y]的颜色就为(g, g, g)。

法线贴图

法线贴图的出现,是为了低面数的模型模拟出高面数的模型的”光照信息”。

模型表面上像素的光照效果只与光照以及表面上的法线相关,法线的方向决定了模型表面的光照效果。因此,光照信息最重要的当然是光入射方向与入射点的法线夹角。

法线贴图跟原始的贴图是一样大小的,贴图内每个点都保存了对应高模某个点的法线信息。

生成法线贴图

法线->颜色:除2加0.5
(-1, 1)->(0, 1)?
(-1, 1)/2 - 0.5 = (-0.5, 0.5) + 0.5 = (0, 1)
因为单位法线向量每个分量的取值范围是-1-1,而颜色的取值范围是0-1,因此要把单位法向量存储为颜色就需要做一个转换。

示例:
(0, 0, 1)/2 + 0.5 = (0, 0, 0.5) + 0.5 = (0.5, 0.5, 1) = (80, 80, FF),蓝紫色
垂直平面的法向量(0,0,1)是最多的,转换为存储颜色为(0.5, 0.5, 1),即(80, 80, FF),蓝紫色,所以通常法线贴图都为蓝紫色的。

读取法线贴图

颜色->法线: 乘2减1
(0,1)->(-1, 1)?
(0,1) * 2 - 1 = (0,2) - 1 = (-1, 1)
示例:
(0.5, 0.5, 1) * 2 - 1 = (1, 1, 2) - 1 = (0, 0, 1),平面法线

读取法线贴图即为生成法线贴图时的逆运算。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值