数字人C4D基础知识之十四:曲面平滑问题研究
【前言】
![](https://img.haomeiwen.com/i7195479/92450677cdcda3d2.jpg)
城市蓝天网友问我:我想做个卡通建模,在等参线模式下编辑,删掉左边点之后,给多边形添加对称,但是发现对称轴上的点不圆滑(单独拉一个点,是尖的,不像贝塞尔点一样,两边都有控制杆一样平滑)。比如肚子,老是不平。就因为对称点是角点的缘故。怎么办呀?这个问题一直困扰着我。非常感谢!
最近很忙,非常懒,不愿意写东西。怎奈网友的执着询问,我与他说这不是一句两句能说明白的,这涉及曲面的平滑问题,于是业余时间拼凑了下面一篇文章。有点枯燥,但你看明白以后,对你会有帮助的。
【研究】
一、NURBS中曲面平滑(连续问题)。NURBS能建立真正曲面,它们的平滑问题,主要是两个曲面相接的问题。曲面是由曲线构成的,我们可以先建立曲线,然后,拉伸为曲面。我们以Rhino为例说明,平滑问题也就是曲面的连续性问题,按照等级可以划分为G0 ,G1,G2。G表示连续性,后面的数字越大,连续性越好。
1、G0是位置连续。它是最基本的连续方式,其含义是两条线的交点是重合。直观看有明显的折角。
![](https://img.haomeiwen.com/i7195479/41416f0f7f5c6622.png)
2、G1是切线连续,它是最普遍的连续方式。它是在G0基础上,两条相连接曲线交点处的切线方向上一致(但两条曲线切线的半径不相等)。直观看生成的曲面光滑,也有明显的折角。
![](https://img.haomeiwen.com/i7195479/6b22a1f1f5b4d88e.png)
3、G2是曲率连续。它是在G1连续的基础上,两条相连接曲线交点处曲率一致。换句话说就是两条曲线相切,它们的切线半径是一样的。生成的曲面非常光滑,无明显折角。
![](https://img.haomeiwen.com/i7195479/6265289f7bf5b1ab.png)
在Rhino中,把三者拉伸为曲面,我们使用Zebra检查一下曲面的光滑度。
G0:位置连续。
![](https://img.haomeiwen.com/i7195479/da1ffa407d0d2964.png)
![](https://img.haomeiwen.com/i7195479/ba5747371b7d4a84.png)
G1: 切线连续
![](https://img.haomeiwen.com/i7195479/dbed0c95a06a5159.png)
![](https://img.haomeiwen.com/i7195479/68b4469c6cd113e1.png)
G2:曲率连续。
![](https://img.haomeiwen.com/i7195479/67fd3f9c17839c8b.png)
二、多边形曲面光滑问题:C4D是以多边形建模方式为主,但它也可以使用NURBS方式来建立模型(但那个曲面也是由多边形构成的,不是真正的曲面)。下面我们建立曲线,然后挤压建立曲面,研究其平滑问题。
1、使用画笔工具,在右视图上绘制如下,那么对比NURBS中,这两个直线在交点处连接,可以理解为G0,位置连续。
![](https://img.haomeiwen.com/i7195479/91f8b3297de9243d.png)
2、添加挤压对象,把曲线变成曲面。
![](https://img.haomeiwen.com/i7195479/868209ed56028f46.png)
3、在场景中添加一个天空对象,然后,为其添加一个如下的发光材质。
![](https://img.haomeiwen.com/i7195479/24396ffdf1b43821.png)
4、添加一个合成标签,勾掉“摄像机可见”,渲染时,摄像机看不见这个天空材质。
![](https://img.haomeiwen.com/i7195479/5e4fd40fb6d84a4d.png)
5、为模型添加一个全反射的材质。
![](https://img.haomeiwen.com/i7195479/02acba12b6f08f5a.png)
6、渲染,我们发现如同NURBS曲面的G0一样,有明显的折痕,反射纹理也是断开的。
![](https://img.haomeiwen.com/i7195479/b9af5adb7dac00e2.png)
7、关闭挤压对象,选择交点。右键注意下面浮动菜单四个选项。
![](https://img.haomeiwen.com/i7195479/772015b00e00fcd4.png)
8、选择“柔性差值”,把交点由角点变成贝兹点。
![](https://img.haomeiwen.com/i7195479/b853a7e7d5d8d232.png)
9、然后,按住SHIFT键,调整一个手柄,让它变长,这说明两个曲线的曲率不同。
![](https://img.haomeiwen.com/i7195479/dda4869b2d4425fd.png)
10、选择浮动菜单“相等切线方向”,使两条曲线在交点处切线方向一致。这样就满足了G1的标准。
![](https://img.haomeiwen.com/i7195479/454bd869590ed330.png)
11、打开挤压对象,我们发现曲面非常光滑,但纹路是断开的。
![](https://img.haomeiwen.com/i7195479/9d7efe884ed585db.png)
12、关闭挤压对象,对曲线继续编辑,选择交点。右键分别选择“相等切线长度”和“相等切线方向”。交点的两个手柄就在一条直线上,并且长度相等,说明两个曲线的曲率是相同的。满足G2的要求。
![](https://img.haomeiwen.com/i7195479/2e8f8b64071c2e88.png)
13、我们打开挤压对象,渲染再看这曲面,非常光滑,并且反射的纹理是连续的,没有断痕。
![](https://img.haomeiwen.com/i7195479/2e2ef4667297eed0.png)
三、回答你的问题:为了回答你的问题,我是不是有点太啰嗦了。以上所说的,无非就是告诉大家,学习不同相关软件,可以触类旁通,相互理解、技巧和方法可以相互借鉴。这些知识也是为回答你的问题而铺垫。
1、使用画笔绘制如下曲线。
![](https://img.haomeiwen.com/i7195479/09642bfb8abd823f.png)
2、选择要对称点,在Z方向归零,为了对称需要。
![](https://img.haomeiwen.com/i7195479/3686f25751e48dcc.png)
3、右键菜单,选择“柔性差值”,然后,选择“相等切线长度”和“相等切线方向”。把手柄放平。
![](https://img.haomeiwen.com/i7195479/86c096132dc96279.png)
4、然后,添加对称,再添加挤压成面。
![](https://img.haomeiwen.com/i7195479/a6e621344ec03cd7.png)
5、把整个模型面旋转一下,方便我们观看。
![](https://img.haomeiwen.com/i7195479/6d00c36822f06230.png)
6、模型表面很光滑,但是渲染发现中间有一条线,这是怎么回事?
![](https://img.haomeiwen.com/i7195479/30db248b0ab5ac94.png)
7、我们把模型转化为多边形,首先选择所有点,选择优化,焊接和去掉无用的点。
![](https://img.haomeiwen.com/i7195479/b0e3c4a6a11fa2c3.png)
8、打开选项---多边形发现(显示法线),转换为面模式,我们发现另一半面的法线是反的。为什么会反呢?那是因为曲线对称翻转的原因,可以参看后边的《补充》内容。
![](https://img.haomeiwen.com/i7195479/bbfc6323ef544017.png)
9、CTRL+A选择所有面,右键选择“对齐法线”,把所有面的法线统一。
![](https://img.haomeiwen.com/i7195479/e89b14884fe1a6b1.png)
10、选择所有面的法线都向外,并且得到统一。
![](https://img.haomeiwen.com/i7195479/4b332fe71d1b4877.png)
11、再渲染,发现模型表面接缝处已经平滑了。
![](https://img.haomeiwen.com/i7195479/d1a12c5522bb0163.png)
12、我们给它一个反光材质,发现接缝处非常光滑,而且纹理连续没有断裂(这是G2标准)
![](https://img.haomeiwen.com/i7195479/ec367da3da35e20b.jpg)
【补充】
一、多边形表面平滑:
1、我们知道多边形中的曲面是由许多面构成的,其光滑也是由面的多少决定的,面数越多越光滑。
![](https://img.haomeiwen.com/i7195479/121593b85281bfc2.png)
![](https://img.haomeiwen.com/i7195479/5fc1a1f75c4ad3b5.png)
![](https://img.haomeiwen.com/i7195479/3cb8ff6002c6c8a2.png)
2、但是为了平滑而增加面数,就会消耗计算机大量的计算资源。所以,图形技术人员非常聪明,采用平滑着色技术,既采用渲染模拟技术解决这个平滑问题。C4D是使用平滑标签,3DSMAX使用平滑组等来实现的。
![](https://img.haomeiwen.com/i7195479/c5787da7762b5574.png)
组成球体的每个面的法线不相同。
![](https://img.haomeiwen.com/i7195479/23c2637f6e6a3300.png)
没有添加平滑标签,法线相同的面颜色相同,不同的面,按照法线与光源的夹角而呈现不同的明暗颜色。
![](https://img.haomeiwen.com/i7195479/5dd6412d23d5a755.png)
为这个球体添加平滑标签,并提高平滑着色的角度,面和面之间进行渐变平滑着色渲染。
![](https://img.haomeiwen.com/i7195479/585f3d57e2866ba3.png)
构成球体的每个小面按照光影进行渐变过度着色渲染,呈现平滑样子。但是模型外轮廓却欺骗不了,如果你想让轮廓也圆滑,只能增加面数,添加细分。
![](https://img.haomeiwen.com/i7195479/0ae223d507f27679.png)
每一个表面都有一个垂直于其表面的法线(通常称为表面法线)。一个点的颜色和亮度是由法线与相机和光源的光线相对应的角度决定的。 不使用平滑标签,两个连接的表面没有过渡,因为每个表面都有它自己法线,有自己的颜色,这将导致亮度颜色断开。 如果一个Phong标签被激活,法线将被内插。在一个法线和另一个法线之间会有一个柔软的过渡(如果表面是连接的)。如果没有应用Phong标记,就不会有插值。
3、C4D通过使用平滑标签能使模型不增加面数,用渲染欺骗的方法,显现或渲染时,使模型表面得到平滑。不仅如此,还能灵活控制不同部分的光滑情况。
![](https://img.haomeiwen.com/i7195479/1270f13875d27136.png)
转换多边形,选择两圈边。
![](https://img.haomeiwen.com/i7195479/3fe5946b39a542a3.png)
右键,选择断开平滑着色。
![](https://img.haomeiwen.com/i7195479/f9c7678484a34115.png)
渲染看一看。
![](https://img.haomeiwen.com/i7195479/481bfc2453dfbcd0.png)
你可以任意断开平滑。
总之,平滑是减少渲染时间和节省内存的好方法。如果没有Phong标签,一个对象将需要更多的多边形来显示平滑。注意,平滑只能发生在连接的表面(共享点的表面)。
二、面与法线:
1、顶点:3D空间一个位置,多个顶点相互连接构成面(三个以上)。
2、边:两个顶点之间的一条连线。
3、面:三个以上的顶点构成的平面。
三个顶点构成的为三角面(Triangle)。
![](https://img.haomeiwen.com/i7195479/1cd4e791b96fc740.png)
由四个顶点构成的为四边面(Quadrangle)。
![](https://img.haomeiwen.com/i7195479/024de08f72a31849.png)
有更多的顶点构成的面为多边面(N-Gon)。
![](https://img.haomeiwen.com/i7195479/527626aa6bc8f8e0.png)
4、法线:面或者顶点的朝向。一个面分为里和外,一般向外的垂直该表面的方向,为法线方向。计算机为了节约资源,一般向外,面向摄像机的面,为法线方向,默认渲染可见。向里的面(法线相反的面),摄像机不可见,不渲染。但有的三维软件,默认是双向材质,比如C4D ,所以面的两侧都能渲染。还有的软件就不是这样,比如SKETCHUP就必须注意面的朝向,否则在渲染会出问题。再比如LUMION,当你使用单面模型时,就会出现问题,所以,必须把单面通过挤压生成薄薄的体。当然,一般三维软件都有处理面法线朝向的命令(法线翻转)。
下图为:
![](https://img.haomeiwen.com/i7195479/97747061e343c6a2.png)
![](https://img.haomeiwen.com/i7195479/6bdaa19808630a95.jpg)
![](https://img.haomeiwen.com/i7195479/8a73964f2263cb42.jpg)
5、我们使用C4D画笔绘制线,然后再生成面,如果绘制方向不对,就会引起面的法线方向相反。
![](https://img.haomeiwen.com/i7195479/a0bff97fd0ff108f.png)
![](https://img.haomeiwen.com/i7195479/5baf49d6c671b039.png)
6、我们把一个球,选择一半,使用U~R命令,将其法线相反。
![](https://img.haomeiwen.com/i7195479/cd785d9c375fa4ab.png)
7、在渲染的时候,这就出现了一条明显的“界限”。所以在C4D中出现这个效果,可能是平滑标签的问题,也可能是法线反了,注意检查这两个方面。
![](https://img.haomeiwen.com/i7195479/fa9f81fe229541f8.png)
【后记】
今年真是太忙了,事情非常多,没有多余空闲时间。偶尔有点空闲,总想写点什么?但在电脑面前,却一点兴趣也没有,这可能是岁数真的大了,阳气不足了。CG真是年轻人干的工作呀。