• 计算机速成课 第二十七集 3D 图形


    1. 引言

    3D 世界中,点的坐标不再是两个点,而是三个点,X, Y, Z

    2. 3D 投影:

    • 概念:通过图形算法,把3D坐标「拍平」显示到2D屏幕上
    • 分类
      • 正交投影:立方体的各个边,在投影中互相平行
      • 透视投射:在真实 3D 世界中,平行线段会在远处收敛于一点,就像远处的马路汇聚到一点
      • 网格:一堆多边形的集合。网格越密,表面越光滑,细节越多
      • 三角形:更常用因为能定义唯一的平面

    3. 线框渲染 Wireframe Rendering

    所有的点从 3D 转成 2D 后,就可以用画 2D 线段的函数,来连接这些点。

    4. 扫描线渲染 Scanline Rendering

    • 是一种算法名称
    • 作用:填充图形
    • 1967 年诞生于犹他州大学
    • 填充的速度叫 fillrate (填充速率)

    5. 抗锯齿:

    • 定义:减轻锯齿的方法
    • 原理:如果像素在多边形内部,就直接涂颜色;如果多边形划过像素,颜色就浅一些,这种边缘羽化的效果,看着更舒服些
    • 使用场景:字体、图表等

    6. 遮挡 Occlusion

    • 在 3D 场景中,多边形到处都是,但是只有一部分能看见,因为其他的被挡住了。
    • 原理:使用画家算法
      • 是什么:使用排序算法,从远到近排列,然后从远到近渲染

    7. 深度缓冲 Z-Buffering

    • 特点:可以记录场景中每一个像素和摄像机的距离

    8. Z Fighting 错误

    两个多边形或者多个多边形距离都一样的时候,不确定哪一个会画上面。多边形会在内存中移来移去,访问顺序会不断变化;另外,计算浮点数有舍入误差。所以哪一个画在上面,往往是不可预测的,导致出现 Z-fighting 效果

    9. 背面剔除 Back-Face Culling

    • 3D 游戏中的一个优化
    • 解释:游戏角色的头部或地面,只能看到朝外的一面,为了节省处理时间,会忽略多边形背面,减了一半多边形面数

    10. 明暗处理

    • 解释:在 3D 场景中,物体表面应该有明暗变化
    • 表面法线:多边形面对的方向
    • 平面着色:
      • 最基本的照明算法
      • 多边形的边界非常明显,看起来不够光滑
    • 高洛德着色
      • 特点;不只用一种颜色给整个多边形上色,而是以巧妙的方式改变颜色,得到更好的效果

    11. 纹理 Textures

    • 在图形学中指外观,而不是手感
    • 算法:纹理映射
      • 在多边形中,查询纹理,从相应区域取平均颜色,并填充多边形,重复这个过程,就可以获得纹理

    小结:

    再大的场景,过程都是一样的,一遍又一遍,处理所有多边形。扫描线填充,抗锯齿,光照,纹理化。

    12. 如何加速渲染

    • 为这种特定运算,做专门的硬件来加快速度
    • 把 3D 场景分解成多个小部分,然后并行渲染,而不是按顺序渲染

    13. 图形处理单元 GPU

    • 计算机工程师为图形做的专门处理器
    • 位置:在显卡上,周围有专用的 RAM
    • 所有网格和纹理都在GPU中,让GPU的多个核心可以高速访问
  • 相关阅读:
    【论文阅读】A practical algorithm for distributed clustering and outlier detection
    第11组 团队Git现场编程实战
    第11组 团队项目-需求分析报告
    团队项目-选题报告
    第二次结对编程作业
    第11组 团队展示
    第一次结对编程作业
    第一次个人编程作业
    第一次博客作业
    (转)script标签到底该放在哪里
  • 原文地址:https://www.cnblogs.com/zxxsteven/p/16273253.html
Copyright © 2020-2023  润新知