解构Games-101计算机图形学-01-从数字图像开始

139 阅读4分钟

前言

为何要写这个系列?

在学习《Games-101》的过程中,我发现它虽然内容丰富、体系清晰,并且有对前沿知识的探究,但在某些关键细节上并不够详尽。具体来说,课程中有不少前置知识被略过,一些公式的推导过程也未作深入展开。对于像我这样希望真正“吃透”计算机图形学原理的人来说,理解这些隐藏在背后的逻辑同样重要。

因此,我决定启动这个系列,目标很明确——系统性地拆解和剖析计算机图形学的核心概念,构建一个从入门到进阶,人人都能理解和掌握的知识体系。

当然,口气这么大,难免会有人质疑。坦白说,我也有些忐忑。但回顾我看过的各类计算机图形学资料——无论是《虎书》的原版教材,还是大量在线课程和讲解视频——我发现它们或多或少都存在一个共性:对知识点的讲解常停留在“够用就好”的层面,鲜少从本质出发,细致解释每一个环节的意义和内在联系。

那么,什么是“本质”呢?

在我看来,本质就是尽量从四个角度去揭示每个知识点:

  • What(定义):它是什么?
  • Why(必要性):为什么需要它?
  • Where(推导):它从哪里来?
  • How(实现):它如何实现?

当然,过于死板地逐条展开难免繁琐,因此我的原则是——尽量把每个问题解释到它成为“常识”为止,不强求面面俱到,但力求让每一个概念都能自然融入你的知识体系中,而不是仅仅停留在“会用”的层面。

01-从数字图像开始

在开始图形学之前,我们必须对数字图像有一个粗浅但又不是本质的概述

首先,什么是图像? 这个问题看似简单,实则带有一点哲学意味。对于图形学而言,我将图像概括为这样一句话:“入眼所见,皆为图像。”

这句话背后揭示了一个关键本质:凡人所见,皆是二维。

为什么这么说?尽管我们身处一个三维世界,但人类的视觉感知却注定只能捕捉二维投影。你所看到的一切,实质上都是三维世界在视网膜(一个二维平面)上的投射结果。

这一点比较tricky的是,我们很难解释为什么是二维,但我们可以解释为什么不是三维乃至更高。如果我们能够直接感知三维,那么在注视一个人时,你不仅能看到他的正面,理应还能同时看到他的背面,甚至穿透皮肤,洞悉血管、骨骼,最终透视到背后其他物体的内部结构,直到达到我们肉眼所能分辨的三维极限。

显然,现实中并非如此。我们只能看到物体的表面,无法直接洞察其深度和内部结构——这正是二维感知的证明。

因此,图像的本质,就是三维世界在二维平面上的一次投射。

而这个投射之所以能被我们看到,是因为我们的视网膜捕捉到了这些二维信息,准确来说是光信号。

看到图像,本质是感知到光信号。

想到这,你不难想到,啊,我只要想办法记录这种光信号,不就等于记录了图像么。

恭喜你,到这里,你已经接近发明照相机了。

所以数字图像是什么呢?

简单来说,数字图像就是将真实世界中的连续光线信号,经过采样和量化,转化为一组离散数字的结果。

这里有两个关键概念:

  • 连续与离散 真实世界中的光信号是连续变化的,但计算机只能处理离散数据。因此,必须将连续的图像空间划分为若干小单元(像素),每个单元采样一次,记录当时的光强或颜色。
  • 采样与量化 采样决定了空间分辨率(像素数量),量化则将光强或颜色值转为有限精度的数字(例如常见的0~255整数)。这两个过程共同完成了从“连续光信号”到“数字图像”的转化。

由于采样与量化的存在,它无法完美还原真实世界。我们只能通过提高采样密度和量化精度,尽可能逼近“真实”。但即便如此,这种逼近也永远存在上限——毕竟,人类肉眼本身就有分辨率和感知能力的极限。

所谓肉眼所见的真实也非真实,大抵如此了。

连载待续---