zoukankan      html  css  js  c++  java
  • 理解法线贴图

    说到法线贴图,我们知道,这货可以用显卡将一个简单的近似模型(低模)渲染出表面很细腻的复杂模型(高模)的效果。那么,它到底是什么原理呢?

    首先,学法线贴图前,最好先理解光照模型,不过不理解也没关系。

    我们先看一个简单的漫反射模型——兰伯特定律

    简化一下,好写些,呵呵。

    cdiffuse = (c  m) * max(0, n  I)

    模型上某个具体的点,在屏幕上会对应一个像素。上面这个公式用于计算这个点对应的像素是什么颜色。

    cdiffuse 漫反射颜色 计算结果
    c
    平行光的颜色 这个其实很复杂,先简化成平行光的颜色
    m
    模型材质的颜色 可设定的值
    n 此点的法线  
    I 光照方向 具体点的世界坐标 - 光源的世界坐标

    别去管这个公式是怎么算的,我们关心 c m n I 四个参数。其中 c m I 是固定值,只有 n 是变化的。

    重要的事情说三遍:

    不管你是高模还是低模,结果都只与 n 有关。

    不管你是高模还是低模,结果都只与 n 有关。

    不管你是高模还是低模,结果都只与 n 有关。

    那么,我们用一个低模近似的表达高模的样子,然后计算低模上每一个点映射到高模上的点的法线 n,并记录在一张位图中——这就是法线贴图了。

    渲染步骤中,在上述光照模型计算时,将 n 低模表面的法线替换为法线贴图中的法线,这样就可以得到近似的高模的效果了。

    就酱

  • 相关阅读:
    cocos2dx 历史版本下载问题
    C++ 类之间的互相调用
    什么内网和外网
    c++网络编程2:TCP连接概念及编程
    Texturepack、physicsEditor、spriteilluminator的安装包下载
    逃离地心——齿轮旋转
    Cocos2d-x v3.0物理系统 利用PhysicsEditor创建多边形
    c#发送Http请求方法汇总
    代码大全知识点
    .Net技术方向
  • 原文地址:https://www.cnblogs.com/softcat/p/6268311.html
Copyright © 2011-2022 走看看