第8章 多边形建模 223第8章 多边形建模不管是否为游戏建模,优化模型并得到正确的细节都是成功产品的关键模型中不需要的细节也将增加渲染时间模型中使用多少细节是合适的呢?这就是建模的艺术性所在,人眼的经验在这里起着重要作用如果角色在背景中快速奔跑,或者喷气飞机在高高的天空快速飞过,那么这样的模型就不需要太多的细节8.1 3ds max的表面在3ds max中建模的时候,可以选择如下三种表面形式之一: 网格(Meshes); Bezier面片(Patches); NURBS(不均匀有理B样条)网格最简单的网格是由空间3个离散点定义的面尽管它很简单,但的确是3ds max中复杂网格的基础本章后面的部分将介绍网格的各个部分,并详细讨论如何处理网格面片当给对象应用Edit Patch编辑修改器或者将它们转换成Editable Patch对象时,3ds max将几何体转换成一组独立的面片每个面片由连接边界的3到4个点组成,这些点可定义一个表面 NURBS术语NURBS代表Non-Uniform Rational B-Splines(不均匀有理B样条): Non-Uniform(不均匀)意味着可以给对象上的控制点不同的影响,从而产生不规则的表面; Rational(有理)意味着代表曲线或者表面的等式被表示成两个多项式的比,而不是简单的求和多项式。
有理函数可以很好地表示诸如圆锥、球等重要曲线和曲面模型; B-spline (Basis spline,基本样条线)是一个由三个或者多个控制点定义的样条线这些点不在样条线上,与使用Line或者其它标准二维图形工具创建的样条线不同后者创建的是Bezier曲线,它是B- splines的一个特殊形式使用NURBS就可以用数学定义创建精确的表面许多现代的汽车设计都是基于NURBS来创建光滑和流线型的表面8.2 对象和次对象3ds max的所有场景都是建立在对象的基础上,每个对象又由一些次对象组成一旦开始编辑对象的组成部分,就不能变换整个对象8.2.1 次对象层次在这个练习中,我们将熟悉组成3ds max对象的基本部分1. 启动或者复位3ds max2. 单击命令面板的Sphere按钮,在顶视口创建一个半径约为50个单位的球3. 到 Modify命令面板,在 Modifier List下拉式列表中选取Edit Mesh现在3ds max认为球是由一组次对象组成的,而不是由参数定义的4. 在Modify命令面板的编辑修改器堆栈显示区域单击Sphere,见图8.1卷展栏现在恢复到它的原始状态,命令面板上出现了球的参数。
使用3ds max的堆栈可以对对象进行一系列非破坏性的编辑这就意味着可以随时返回编辑修改的早期状态5. 在顶视口中单击鼠标右键,然后从弹出的四元组菜单中选取Convent To: / Convert to Editable Mesh,见图8.2 图8.1 图8.2这时编辑修改器堆栈的显示区域只显示Editable Mesh命令面板上的卷展栏类似于Edit Mesh,球的参数化定义已经丢失见图8.3图8.38.2.2 Editable Mesh与Edit Mesh的比较Edit Mesh编辑修改器主要用来将标准几何体、Bezier面片或者NURBS曲面转换成可以编辑的网格对象增加Edit Mesh编辑修改器后就在堆栈的显示区域增加了层模型仍然保持它的原始属性,并且可以通过在堆栈显示区域选择合适的层来处理对象 将模型塌陷成Editable Mesh后,堆栈显示区域只有Editable Mesh应用给对象的所有编辑修改器和对象的基本参数都丢失了,只能在网格次对象层次编辑。
当完成建模操作后,将模型转换成Editable Mesh是一个很好的习惯,这样可以大大节省系统资源如果模型需要输出给实时的游戏引擎,那么塌陷成Editable Mesh是必须的在后面的练习中我们将讨论这两种方法的不同8.2.3 网格次对象层次一旦一个对象被塌陷成Editable Mesh编辑修改器或者被应用了Edit Mesh编辑修改器,就可以使用下面次对象层次1. Vertex(节点):节点是空间上的点,它是对象的最基本层次当移动或者编辑节点的时候,它们的面也受影响 对象形状的任何改变都会导致重新安排节点在3ds max中有很多编辑方法,但是最基本的是节点编辑图8.3是移动节点导致的几何体形状的变化 图8.32. Edge(边):Edge是一条可见或者不可见的线(参见图8.4),它连接两个节点,形成面的边两个面可以共享一个边处理边的方法与处理节点类似,在网格编辑中经常使用3. Face(面):面是由3个节点形成的三角形在没有面的情况下,节点可以单独存在,但是在没有节点的情况下,面不能单独存在在渲染的结果中,我们只能看到面,而不能看到节点和边面是多边形和元素的最小单位,可以被指定光滑组,以便与相临的面光滑。
4. Polygon(多边形):在可见的线框边界内的面形成了多边形多边形是面编辑的便捷方法此外,某些实时渲染引擎常使用多边形,而不是3ds max中的三角形面5. Element(元素):元素是网格对象中以组连续的表面例如茶壶就是由4个不同元素组成的几何体,见图8.5当一个独立的对象被使用Attach附加到另外一个对象上后,这两个对象就变成新对象的元素下面我们就举例来说明如何在次对象层次工作1. 启动3ds max,或者在菜单栏选取File / Reset,复位3ds max 图8.4 图8.52. 在菜单栏选取File / Open,然后从本书的配套光盘中打开文件Samples\ch08\ ch08_01.max3. 在用户视口中单击飞机,选择它,见图8.64. 单击主工具栏的 Select and Move按钮5. 在用户视口四处移动飞机,则飞机四处移动,好像一个对象似的6. 单击主工具栏的 Undo按钮7. 在Modify面板,单击Selection卷展栏下面的 Vertex按钮。
8. 在用户视口选择飞机最前端的点,然后四处移动该节点,会发现只有一个节点受变换的影响,见图8.7 图8.6 图8.79. 按键盘上的Ctrl + Z键取消前面的移动操作10. 单击Selection卷展栏下面的 Edge按钮11. 在用户视口选择机尾顶部的边,然后四处移动它这时选择的边以及组成边的两个节点被移动,见图8.812. 按键盘上的Ctrl + Z键取消对选择边的移动13. 单击Selection卷展栏下面的 Face按钮14. 在用户视口选择机尾顶部的边,然后四处移动它15. 在用户视口选择左侧机翼顶部的面(见图8.9),然后四处移动它,这时面及组成面的三个点被移动了 图8.8 图8.916. 按键盘上的Ctrl + Z键撤消对选择面的移动17. 单击Selection卷展栏下面的 Polygon按钮。
18. 在用户视口的空白地方单击鼠标左键,取消对面的选择19. 在用户视口选取左侧机翼的多边形,这次整个机翼顶部都被选择了,见图8.1020. 单击Selection卷展栏下面的 Element按钮21. 在用户视口选择机尾顶部的边,然后四处移动它,见图8.11 图8.10 图8.11由于机翼是一个独立的元素,因此它们一起移动8.2.4 常用的次对象编辑选项命名的选择集无论是在对象层次还是在次对象层次,选择集都是非常有用的工具经常需要编辑同一组节点使用选择集后可以给节点定义一个命名的选择集,这样就可以通过命名的选择集快速选择节点了通常在主工具栏中命名选择集 次对象的Backfacing选项在次对象层次选择的时候,经常会选取在几何体另外一面的次对象这些次对象是不可见的,通常也不是编辑中所需要的在3ds max的Selection卷展栏中选择Ignore Backfacing复选框(见图8.12),解决这个问题背离激活视口的所有次对象将不会被选择。
8.3 低消耗多边形建模基础常见的低消耗网格建模的方法是盒子建模(Box Modeling)盒子建模技术的流程是首先创建基本的几何体(例如盒子)然后将盒子转换成Editable Mesh,这样就可以在次对象层次处理几何体了通过变换和拉伸次对象使盒子逐渐接近最终的目标对象8.3.1 变换次对象在次对象层次变换是典型的低消耗多边形建模技术可以通过移动、旋转和缩放节点、边和面来改变几何体的模型8.3.2 处理面通常使用Edit Geometry卷展栏(见图8.13)下面的Extrude和Bevel来处理表面可以通过输入数值或者在视口中交互拖曳来创建拉伸或者倒角的效果 图8.12 图8.13Extrude增加几何体复杂程度的最基本方法是增加更多的面Extrude就是增加面的一种方法图8.14就给出了面拉伸前后的效果 图8.14BevelBevel首先将面拉伸到需要的高度,然后再缩小或者放大拉伸后的面,图8.15给出了倒角后的效果图8.158.3.3 处理边通过分割边来创建节点创建节点最简单的方法是分割边。
直接创建完面和多边形后,可以通过分割和细分边来生成节点(见图8.16)在3ds max中可以创建单独的节点,但是这些点与网格对象没有关系选择网格对象的一个边 边被分割,生成一个节点 图8.16分割边后就生成一个新的节点和两个边在默认的情况下,这两个边是不可见的如果要编辑一个不可见的边,需要先将它设置为可见的有如下两种方法来设置边的可见性:先选择边,然后单击Surface Properties卷展栏中的Visible按钮,或者选择Object Properties对话框中Display Properties区域的Edges Only复选框,见图8.17切割边切割边的更精确方法是使用Edit Geometry卷展栏下面的Cut按钮,见图8.18 图8.17 。