zoukankan      html  css  js  c++  java
  • 光照

    虚拟图形的真实感是通过其表面的颜色和明暗来表现的。

    一个物体表面呈现的颜色,是由面向视线方向辐射的光能决定。

    图形学中用一个同时包含光能大小和方向的物理量,即光亮度(luminance)光强(intensity of light),来描述物体表面的辐射光Emitted(max中的自发光),

    最终呈现的颜色是使用该物理量在光照模型中经过计算得到的。

    光照模型要考虑的问题包括:

        1)物体表面的反射光

        2)周围环境的光对物体表面的影响。例如:光滑物体反射出的环境光;透明物体透出其背后的物体。

    除此外,体现材质可使用纹理贴图,即纹理映射(texture mapping)

        3)将纹理图案一并计算

    光照到物体表面之后,会分成三部分1)反射;2)透射;3)被吸收为热。

    反射光分为三个分量:1)环境反射Ambient 2)漫反射Diffuse 3)镜面反射Specular (涉及Highlight区域) 

    加上辐射光Emitted构成了OpenGL 的简单光照模型。

    辐射光:从物体发出,并且不受任何光源影响;

    环境光:由光源发出经环境多次散射而无法确定方向的光。

    漫射光:来自同一个方向,垂直于物体时更明亮。照射到物体后,从多个方向发散出去。无论视点在哪儿都一样亮。

    镜面光:来自特定方向,并从另一方向发射。  

    明暗处理

    光滑曲面常用细分的多边形逼近,每个小多边形轮廓/内部用单一的颜色或许多不同的颜色来勾画。如果用单一颜色来勾画,就是平面明暗处理Flat shading;用许多颜色处理就称光滑明暗处理Smooth Shading,也称Gourand Shading。设置明暗模式的函数glShadeModel(GLenum mode)

    材质 

    OpenGL用材料对光的红、绿、蓝的反射率来定义近似材料颜色。和光源一样,材料颜色也分成环境、漫反射和镜面反射。也就是环境的红绿蓝反射率、漫反射的红绿蓝反射率和镜面的红绿蓝反射率。除了三种反射光外,材质还有一个GL_SHININESS属性,表示镜面反射的高光值。

  • 相关阅读:
    在最近在研究榴莲品种的人工智能识别
    iOS开发:多线程技术概述
    Objective-C开发编码规范
    为什么OC语言很难
    内存堆栈的区别
    HR筒子说:程序猿面试那点事
    Objective-C语言的一些基础特性
    学习swift语言的快速入门教程推荐
    性能测试告诉你 mysql 数据库存储引擎该如何选?
    【柠檬班】需要先登录的接口如何做性能测试?
  • 原文地址:https://www.cnblogs.com/mumuliang/p/1893277.html
Copyright © 2011-2022 走看看