## 从曲线到三角形:3D图形的工作原理 GPU 的运作基于一个简单原则:绘制三角形。 无论多么复杂的 3D 模型,最终都会被分解成这些基本形状。 这个过程称为细分,它将由数学函数定义的平滑表面转换为由互连三角形组成的网格。 三角形网格由两个数组组成——顶点(空间中的点)和索引(定义哪些顶点构成每个三角形)。 虽然 CAD 软件使用精确的方程来描述诸如圆柱体和球体之类的形状,但这些形状需要被*采样*——在表面上铺设网格,计算点,然后连接这些点以创建三角形。 更多的采样点意味着更平滑的结果,但也增加了处理需求。 不同的形状需要不同的方法。 平面只需要连接顶点。 圆柱体和球体使用基于网格的采样,而处理表面上的孔洞则需要巧妙的技术,例如“桥接”和“耳切除”算法来创建有效的三角剖分。 最终,细分器将这些复杂形式转换为 GPU 可以理解的三角形数据。 你看到的最终图像是一种幻觉——由密集的微小平面三角形令人信服地模仿曲线和表面。
## 使用 pngquant 和 jpegoptim 进行命令行图像压缩
为了高效、自动化的图像压缩,**pngquant** 和 **jpegoptim** 是优秀的免费、跨平台命令行工具。它们非常适合项目范围内的优化、CI/CD 管道,以及在没有手动 GUI 交互的情况下获得可重复的结果。
**安装** 使用 Homebrew (macOS) 或 apt/dnf/pacman (Linux) 等包管理器即可轻松完成。
**PNG 压缩:** 使用 `pngquant --quality=65-85 --force --ext .png image.png` 压缩单个文件,或使用 `find ... -exec pngquant ... {} \;` 递归压缩。`--skip-if-larger` 标志可以防止重新压缩。
**JPG 压缩:** `jpegoptim --strip-all --max=85 image.jpg` 压缩单个文件。使用 `find ... -exec jpegoptim ... {} \;` 递归压缩。`--strip-all` 移除元数据,`--max=85` 在压缩和质量之间取得平衡。
**速度与效率:** 使用 `xargs -P [核心数]` 进行并行处理,以获得更快的速度,尤其是在服务器上。可选地,可以按文件大小过滤文件(例如 `-size +50k`),以避免压缩已经很小的图像。这些命令在自动化环境中是安全的。