现代计算机图形学入门-L1

147 阅读7分钟

前言

前言比较长,没什么输出的内容,不喜欢看的同学可以直接跳过啦,节约时间。

起源

从2021年的6月开始,羽毛就在逐步地学习计算机图形学,希望能够尽早地点亮这棵技能树,期望在这个技术分支上能够有更深的发展。但中途因为各项工作和生活的事务,这件事情常常遭到中断,图形学的学习进展非常缓慢,对此我非常懊恼,痛定思痛。

再燃

2022年,我从南京来到了上海工作,刚来上海半个月就遇到了疫情,居家办公3个月。5月中旬,手上的项目如期推进,同时因为疫情也不需要通勤了,因此有了更多完整的时间来思考。于是开始制定了计划,每天的凌晨12点过后,除了紧急情况,无论工作处理得怎么样,一定要停下来学习,执行学习计划!我实在难以忍受自己各方面的技术水平停留在同一个水平线太久。

5月18日开始,从头开始刷games101,每天只要能抽出时间,就从凌晨12点学到2点多,有时候学到了3点半,3点半是最晚的时间,因为少于6个小时的睡眠,我第二天的状态会受到影响,得不偿失。随着学习的深入,我感受到了难度,一个小时的课程我时常要花上两三个小时反复听,查资料,才能听到自己认为理解了。

直到7月中旬,22节课的games101计算机图形学入门课程终于首刷结束(22节课花了60多天!OMG)!这一次尝试,对图形学有了一个初步的认识,同时也积累了一些脑图笔记,算是勉强入了门。

同时疫情结束,且手上的项目开始进入到比较忙的一个状态,常常到家就是12点甚至两三点了,来不及进行文章的输出以及图形学的实践,一晃又来到了11月末。这么多原因,可能还是因为不够努力!

巩固

近期开始进一步学习图形学相关,今天,是制定“输出图形学学习文章“计划的第一天。希望近期,同样能够利用好回家后有限的时间,进行课程二刷以及其他理论书籍的阅读,完成文章的输出,与大家分享的同时帮助自己沉淀,进入到实践的阶段。

文章的内容,有些名词的翻译个人觉得中文的表达不够准确或者具有多词表示同一个事物的表达,不利于沟通,因此会保留一些英文。

图形学第一课

1.什么是计算机图形学?

计算机图形学:利用计算机合成与操作视觉信息 The use of computers to synthesize and manipulate visual information

2.为什么学习计算机图形学

2.1 图形学应用
(Applications)

  • 游戏画面渲染

    • PBR:《之狼》
    • 卡通:《无主之地》
  • 电影特效制作

    • 属于最简单的图形学应用,因为日常生活中不常见,做得不对也不易察觉

    • 黑客帝国;里程碑作品————阿凡达

  • 动画Animation(几何、渲染、光线、模拟动画)

  • 设计

    • CAD
    • 在虚拟环境中预览视觉效果:家装,如宜家,国内的酷家乐;汽车
  • 可视化Visualization

    • 医学影像

      • example: 将核磁共振、超声波等仪器收集的信息经过处理转化,渲染为图形表示。现代计算机还结合AI对影像进行分析,辅助医生和患者诊断。
    • 科学、工程、图表等

  • VR(虚拟现实)/AR(增强现实)

    • VR,画面完全是生成出来的

    • AR 现实内容与生成内容结合

  • 数码插画/图像处理 Digital Illustration

    • 典型例子:PS
  • 模拟

    • 物理模拟:尘土
    • 光线模拟:黑洞对光线的影响
  • 图形用户界面 Graphical User Interfaces(GUI)

  • 字体 Typography(运用了点阵和矢量)

2.2学习会遇到的挑战
(Fundamental Intellectual Challenges)

输入

    1. 创造并与现实的虚拟世界作用
    1. 需要理解各种物理世界的各个方面,研究理解真实的世界

输出

  • 3. 新的计算方法、显示方法、显示技术(如裸眼3d、全息影像)

2.3技术挑战
Technical Challenges

  • (透视)投影、曲线、曲面的数学知识 Math of (perspective) projections, curves, surfaces
  • 物理上的光学、着色 Physics of lighting and shading
  • 在三维中表现/操作形状 Representing / operating shapes in 3D
  • 动画/模拟 Animation / simulation

3.课程主题内容

课程分为四个部分内容:

3.1 光栅化
Rasterization
(OpenGL及shader等如何运作)

  • 什么是光栅化:把三维空间中的几何形体显示到屏幕上。
  • 游戏及实时计算机图形学的主要应用(30帧以上称为实时Real-time,否则称为离线Off-line)

3.2 几何
(geometry):

  • Curves and meshes 如何表示光滑曲线、曲面等几何结构,曲面细分、曲面细分时拓扑结构保持等

3.3 光线追踪
Ray Tracing

  • 从相机出发向每个像素发射射线 shoot rays from the camera through each pixel
    • 计算交点和阴影;(Calculate intersection and shading;
    • 继续反射光线直到击中光源 Continue to bounce the rays till they hit light sources)
  • 实时光线追踪:性能与效果的平衡

3.4 动画/模拟
Animation/Simulation

  • 关键帧动画 Key frame Animation
  • 质量弹簧系统 Mass-spring Syste

4.计算机图形学与计算机视觉的关系

  • 4.1计算机视觉(Compuer vison):一切需要猜测的内容,理解猜测图像

计算机图形学:

  • 模型->渲染图像,即渲染过程
  • 模型->模型,仿真,三维描述

计算机视觉:

  • 图像->推断猜测模型、结构

  • 图形->图形:依赖深度学习,从一幅图变成另一幅图,如一张人脸推断另一张人脸

小结

本次课程主要介绍了计算机图形学的定义、应用、学科挑战、技术挑战等,以及说明课程主要包含光栅化、几何、光线追踪以及动画模拟四个部分,介绍每个部分的内容与目标。 最终介绍了计算机图形学与计算机视觉的区别。

福利

关注公众号“羽毛不会飞”,后台回复“计算机图形学”,获得虎书第二版中文版,虎书第四版英文版,games101课件

更多

另辟蹊径的"一键打包"

Web/Native资源加密方案

Spine换装方案多平台解析

基于creator3.0的3D换装

CocosCreator3.4.2原生二次开发的正确姿势——手把手教你接SDK

在编辑器上声明自定义数据数组

包体优化指南

不规则3D地形行走

快速实现3d抛物线绘制

奇形怪状-不规则按钮实现

关于作者

我是羽毛,一名游戏研发工程师,一名野生摄影同学。我的公众号主要分享自己的一些游戏项目开发过程中的功能总结及日常开发笔记。也希望能通过平台的交流,与更多有想法的同学交流认识,共同成长。

欢迎大家在日常开发过程中,如果觉得有需要讨论解决、分享或者探讨的内容,在公众号后台或者文章留言处给我反馈,提供写作的方向,从另一个角度也尽量让写作内容更贴近大家的需求以及痛点,在此谢谢各位同学.

另外羽毛也提供付费技术咨询的服务,有需求的同学可以公众号后台私信添加微信。

更多精彩欢迎关注wehcat公众号“羽毛不会飞”