OpenGL ES1.1.12 第二章 2.10.3

(仅是草稿,未做整理)

2.10.3规范化变换

最后,考虑模型视图矩阵和转换状态如何影响规范化。在使用光线之前,法线转换成眼坐标,这种转换是通过从模型视图矩阵衍生出来的矩阵。缩放和规范化操作是使得他们的单位长度优先于使用光线。通过以下命令完成缩放和规范化操作:

void Enable( enum target )void Disable( enum target )

其中target参数为RESCALE_NORMAL 和 NORMALIZE。需要2-bti的状态值。初始状态时没有缩放也没有规范化。

如果模型视图的矩阵为M,那么法线转换成眼坐标如下3:

其中,如果是与顶点坐标相关联,那么


实现时,也许会选择对进行转换生成眼坐标,如下:


-----------------------

3标注处,法线是以行向量形式,通过转换逆矩阵,后乘的转换。如果法线是以列向量形式,那么转换将由先乘逆矩阵方式进行

Mu是从M得到的右上角3x3矩阵。

缩放乘上转换通过缩放系数,如下


如果缩放没有使能,那么f=1,如果缩放使能,那么f如下


其中mij表示矩阵的第i行,第j列的元素。最上行为1,最左列为1。

注意,如果法线送至GL,是单位长度和模型视图矩阵统一缩放空间,那么,缩放转换为法线单位长度。

或者,实现时,f也可以如下:


这样对每一个法线重新计算。使得所有非零长度的法线单位长度,可以忽略他们的输入长度和视图模型的属性。

缩放后,最终的转换法线用于光线,nf根据如下计算


如果规范化没有使能,那么m=1,否则


由于我们并没有定义浮点格式或倒置矩阵均值,因此,不能定义弱条件(接近奇异)的视图模型矩阵M的行为。在奇异矩阵条件下,法线转换是未定义。如果实现GL确定了模型视图矩阵是不可逆的,在逆矩阵的入口是任意的。在任何情况下,规范化转换或使用转换法线都不能导致GL中断或终止。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值