无论是咱们看到的一些网上大神的设计图,还是游戏中的各种模型。都是使用计算机图形建模(简称CG建模)的结果。虽然这是一种需要专业训练的行业,但是随着现在个人电脑算力的加强,门槛也越来越低,现在也可以作为一种爱好了。
既然CG建模作为一个独立的学科和专业;想通过这一片文章说明白肯定是痴人说梦。但是借着马亲王的一句话:人脑在互联网时代更大的作用是作为一个索引库。(差不多这个意思)。
于是这个文章旨在将建模的主要技术脉络展示出来,列出并强调一些 通用 / 专业词汇 ,方便真正做好心理准备入坑的读者善用网络搜索。如果只想看看,这些术语也会让你显得特专业。
毕竟装逼是人类的生产动力之一
话说,既然这个文章是试图做到一个提纲挈领的功能,在很多技术细节或具体应用也不会特别深入,而是会留下一个个锚点。之后无论是我,还是真正的大能们,如果有更多技术向/细节向的文章或者教程。会在这个文章添加链接,这里尽量做到一个集中索引的功能。
其实无论是游戏行业还是电影行业,CG建模都有无数种不同的流程和管线。我作为一名CG萌新,也只能着重介绍我最清楚的管线,并且面向游戏的建模流程,虽然会提到一些电影级别的和其他种类的,但是肯定做不到面面俱到;希望大能们多多交流指正。
在CG建模中,看到的任何一个模型,其包含的关键元素都大同小异,其中最主要的流程只有三大类:模型、贴图、渲染。
最左边看的的由线框构成的模型,就是咱们所说“建模”的产物。现在业界中能建模的软件很多,包含但不限于Maya,Blender等等:
其实这些软件还可以干很多事情,例如Blender,从建模到贴图,其实连shader都能写。但是大体上建模是他们主要功能之一。
中间有一个带颜色,但是是纯平一片的效果就是一个模型经过贴图的结果。贴贴图的过程其实还有两大步骤,第一个一个是制作UV,其实就是制作一个3D到2D的映射:
另一个就是具体的贴图制作,有Substance Designer/Painter这些软件:
示例图中最右边,看上去有些光影,并且体现出了体积感的结果,就是所谓渲染后的结果了。所谓渲染,其实就是将现有的模型、贴图、材质统一起来,得出一个结果,这里往往设计大量的数学计算。
题头示例的渲染是在Unity里面做的,然而如果只是CG建模的话,尤其是面向概念图的建模;经常是使用Arnold,Keyshot等等独立渲染解决方案。这些不同的渲染器也都有不同的特点。
模型其中最重要的构成部分之一就是网格(Mesh),本质上就是 点(Point)-边(Edge)-面(Face) 构成的模型形状。
当然,真实建模的时候,只有面是能在最终结果中看到的“东西”,因为只有面有面积而已,点和边都是没有视觉面积的数据结构。
但是之所说网格是模型的重要部分之一,是因为一个模型需要的不仅仅是需要点在空间中的位置,其中还有很多大量的其他数据来一起定义这个模型的外观。包含但不限于 法线(Normals)、UV、顶点色(Vertex-Color)、等等。
其实还有一个需要辨析的术语,那就是点(Point)和顶点(Vertex)。虽然在一般生活中,这两个词经常是被混用,但是在建模和CG中这两个概念是有值得理清的区别。
一个点只是几何上的概念,然而说到的各种其他数据,都是储存在顶点里面的。并且一个点通常对应多个顶点。并且顶点其实才是各种渲染中的基本单元之一;对于数据的存储和处理都是基于顶点的。这也是为什么在说各种机器的性能的时候,都是说能“同屏处理多少多少顶点”。
至于这些数据都是什么干什么用的,这里开了一个独立系列的文章:
之前也说到了,UV本身是贴图的前一步,基本是在建模完成的后续处理的第一步。之前也说到了,UV其实就是“三维到二维的一个映射”。这个具体的工作就是被称为“UV展开(UV-Unwarp)”。UV展开之后的结果是一个完整的UV。
至于为什么叫UV,是因为在3D空间中笛卡尔坐标是XYZ,在贴图中是一个2D笛卡尔空间;本应该也是XY。但是为了防止混淆,就称为UV了。换句话说,在贴图的2D空间里面,U是横坐标,V是纵坐标。
从另一个角度想,可以想象用纸模拼成一个立体模型的过程;然而UV展开就是反过来的过程。
有了UV后,就知道怎么给一个模型的表层上色了。这样就可以进行贴图的制作了。理论上,有了模型和UV,任何一个能制作图片的软件都能制作贴图:Ps、Ai、甚至是Windows绘图。但是在专业贴图制作时,往往还是需要Substance Painter、Quixel、等等这种专业制作的软件,Photoshop作为专业级贴图制作软件也在用。
这些软件除了提供一些材质的预设,另一个重要的功能都是“可以直接在模型上进行绘制”这一功能。然后自动帮你根据UV将在3D的模型上绘制的结果转换为2D的贴图。
当然,在上面的示例中,就只使用了一张贴图;然而现在最主流的PBR渲染(Physically based rendering/基于物理的渲染技术)中往往需要若干张贴图(一般三张起步)。因为除了最直观的颜色,还需要金属度(Metallic)、光滑度(Smoothness)、法线等等贴图以提供渲染所需的各种数据。
当然,提到 PBR ,又是一个一句话两句话不可能说明白的话题,这里放两个链接,有兴趣的读者可以做一下扩展阅读:
而且除了 PBR ,还有很多很多不同的贴图制作流程,但是这些都要和渲染放在一起看。
渲染(Rendering),在这些流程中,虽然是“最出效果”的(也就是玩家口中的“光影”),但是反而是最枯燥且学术的。
首先介绍的就是电影级渲染和游戏级渲染的区别。虽然从业界上是有根本的区别,但是在实际生活中可能没有那么明显。
这两张都是渲染,但也有很多的不同。首先就是时间问题,一个是另一个的将近100倍(注意第二张的小数点);当然,时间长的那张图,从视觉上来讲似乎更好。
这里就是 电影级渲染 和 游戏级渲染 的两个方向。因为对交互的需求,游戏中的渲染一帧往往只有若干毫秒的时间来用,而不像电影中渲染一帧能花费几小时甚至几天。
近期老黄的RTX技术在试图弥合这两个技术路线,但是此时楞讲只会变得更乱。希望大家在读这篇文章时假设RTX技术还不存在;之后会有完整的文章来介绍一下RTX技术(再咕咕)。
因为这几个数量级的时间区别,这两种渲染流程就有了质的不同。咱们常说的电影级渲染,背后的技术本质是基于蒙特卡洛算法(Monte-Carlo algorithm)的RayTracing渲染,往往被简称为RayTracing。这种方法往往涉及巨量的数学计算,以逼近现实生活的效果。
宜家(IEKA)的那些家装宣传图,有九成都是渲染,而不是实拍
而游戏级渲染也被称为 栅格化(Rasterization)。这种技术大多是基于被称为栅格器(Rasterizer)的系统,因为此时的需求对效率极其敏感,就是用了大量优化而完成这一点,并且在业界也被称为渲染管线(Rendering Pipeline)。这两个不同的渲染技术也值得一篇独立文章,之后也会慢慢写(咕咕)。
当然,在CG建模中用RayTracing和栅格化渲染都可以;未来和相关这一系列的内容中不会特意区分。
稍微科普之后,说回和建模更加相关的概念——材质(Material)。材质可以理解成基于某个Shader的若干参数和若干贴图的集合,提供给渲染器使用。
此时又出了一个新概念:Shader,中文叫“着色器”。材质这个词儿玩家经常口头上用,但是它具体是什么呢?通俗来讲,Shader就是一段在GPU上面执行的代码,将材质提供的各种信息、光照等等信息计算成一个最终的颜色。
一个材质往往需要基于某个个特定的渲染器/解决方案来调整,这也是CG建模中十分重要的一点,因为不同的渲染器会有不同的效果。
这篇文章乍一看写了好多,但是又啥也没写。这篇文章的主要目的就是把一些技术术语串在一起;让大家理解一些术语是应该放在哪些语境下聊的。希望至少可以对这些东西有一个基本的了解,至少提供一个起点。
如果希望深入学习的读者,可以使用这些数据作为索引去搜索更多的知识。并且我挖出来的坑之后都会填的w,真的w。
既然这一系列的文章会倾向与概念方面,但是概念不能脱离实际操作存在,我这边会在这里整理、总结一些优质的具体学习建模的文章(会持续更新的):
虽然这里主要是科普一些CG相关的知识,但是毕竟我现在还是一个独立开发者,这里做一些小小的广告!~
Itch.io , 主力的游戏发布,但是考虑到国内用户,在B博上也会有对应的更新。 B站 ,主要是当作B博去用,会有一些现在开发游戏的小更新什么的,未来稳定后可能会有一些视频之类的。
评论区
共 30 条评论热门最新