热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

次世代游戏建模技巧全解

本教程主要使用软件:3DsMax、ZBrush随着游戏硬件和引擎的提升,次世代游戏时代到来,而随之而来的是对游戏建模的要求越来越高,难度越来越大,很多人很难找到好的提升方法。在这篇文章里作

  本教程主要使用软件:3Ds Max 、ZBrush

  随着游戏硬件和引擎的提升,次世代游戏时代到来,而随之而来的是对游戏建模的要求越来越高,难度越来越大,很多人很难找到好的提升方法。在这篇文章里作者以实例演示了整个次世代游戏模型制作流程,并对在建模的过程中经常会遇到的一些问题给予了详细的解答,分享了自己数年来的经验和心得。

  什么是次世代游戏

  次世代即是下一代的之意,在还没有次世代这个概念的时候,我们熟悉的游戏《counter strike》,《魔兽争霸》等,从游戏的画面来看,游戏角色都比较“方”,材质纹理比较平面,由于游戏引擎的限制,模型面数较少,模型上的材质纹理和光影关系都是手绘上去的。

  随着游戏硬件和游戏引擎的提升,次世代也随之到来,次世代最明显的特征体现在游戏美术的法线贴图(Normal Map)方面,法线贴图的加入使玩家在游戏中能明显感觉到不同的视觉效果所带来的震撼;比如游戏《战争机器》、《使命召唤》等。

  实例演示次世代游戏模型制作流程

  接下来我以实例给大家演示一下整个次世代游戏模型制作的流程,为了让大家都能理解,我这边就不做一个完整的角色,只拿角色的部分给大家讲解,因为,方法都是一样的,大家只要理解这个方法后,便可以举一反三。


图1

  下面这个方法可以说是目前较为主流的方法,以前都是先做好低模后导入ZBrush里面雕刻细节,但是随着ZBrush的Topology(拓扑)功能出现,直接在ZBrush里面雕好高模,然后重新Topology(拓扑)低模出来,而且雕好的高模还可以用来制作贴图:法线贴图(Normal Map),这个效率是很高的;工具是越来越简单、方便,但随之考验的就是大家的美术功底。(顺便说一句,Max2010已经有这样的工具而且比ZBrush里面的更方便些,所以值得大家拥有。)

  接下来的制作流程中关键操作我都有写出来并配上图,没有写到都是些简单的操作,如果没有看懂的可以先把软件大概的了解一下,再来看就没有问题。

  在ZBrush里面雕好高模

  首先在ZBrush里面,用ZSphere工具,拖出一个基本的型体,通过按“A”键来观察基本Poly 的显示,加以调整到适合的位置。


图2

  当通过ZShere 工具把模型基本调整到位时,在显示Poly模式下,在Tools上面找到“Maker PolyMesh3D”并点击它,将它转换成可以编辑的Poly模型。


图3

  转换以后,我们在Tools栏下找到Geometry这个选项,在Divide之前现将Smt关掉,因为关掉以后,低模的基本结构才能保留下来,这点因人而异吧。


图4


图5

  面数增加以后便可以雕刻一些细节,一开始不要把面数加得太高,因为太高改起来会麻烦点,一般在雕刻基本结构时,加到3-4就可以了。


图6

  等基本的结构都确定了,便可以把面数加高,耐心雕刻模型的细节, (因为我设计的是一个变种人,所以细节的设计是建立在人体解剖学上雕刻设计的,这个大家可以自由的发挥),我偷一下懒就不全部雕刻来,重在内容。


图7

  高模已经做好了,接下来可以使用ZBrush里面的工具Topology(拓扑)在高模的基础上拓扑出一个新的模型。

  用Topology在高模基础上拓扑出新模型

  在高模上面分析低模的布线

  拓扑之前最好是对模型分析一下布线,我们把雕好细节的模型拖出来,然后关掉Zadd只保留Rgb(我们之不需要雕刻,只需要画颜色就可以),然后在Tool栏里展开Texture并点击Colorize,最后到色相板里面选一个你自己喜欢的颜色,把笔刷调小点,然后开始在高模上面分析低模的布线,这一步很重要,因为后面拓扑的时候就会按照你所分析的布线进行拓扑(如果对自己有信心的话可以忽略这一步)。


图8

  埋头分析一会儿后……


图9

  (我简单的做了一下分析,其实原理和在软件建模原理一样,只要记住“均匀,结构,尽量避免三角面”)

  开始拓扑

  当我们把这一步分析好以后,便可以开始拓扑了,前面繁琐的分析只是为了我们后面的方便。

  这个时候我们又要用到ZSphere ,这里我们需要用到 Topology(拓扑)这个功能,在ZSphere 的模式下找到Adaptive Skin、Rigging、Topology、Projectio,这四个功能是我待会都要用到的,首先展开Rigging 并点击Select Mesh 会出现一个选框。


图10

  然后去选我们刚刚分析布线的高模


图11

  模型导入以后,展开Topology并点击Edit Topology


图12

  因为模型表面我有分析好布线,所以我接下来的事情就是按照我之前分析的布线,通过Draw去连接每个拓扑点就可以,拓扑的时候笔刷尽量小点。


图13

  拓扑常见问题分析

  以下是在拓扑的时候会遇到的一些问题,我也相应的列出来。

  1、如果发现有的形状不够规整,按“W”键切换到移动模式下去调整。


图14

  2、比如我目前编辑的点是1,我想切换到点2,需要按住Ctrl 键的同时去选择点2,这时编辑点就切换到点2(一定要在Draw 模式下进行以上操作)。


图15

  3、按住Alt键是减去拓扑点,如果你在切换回来时,可能其它点就消失,这个时候你只需在空白处旋转一下就可以恢复。


图16

  当模型拓扑到一定的时候,我们要随时看看低模的效果是怎么样的,按“A”键可以相互切换低模和拓扑模式。


图17

  但是这个低模的效果和高模有些不匹配,这时,我们需要展开Projection并点击Projection后,再次按下“A”键便可以看到与之前的我们没有打开Projection有明显的区别。

  Projection 会将高模上的所有信息映射到拓扑的低模上面,因为面数的限制,所以拓扑模型的细节没有高模那么好,不过它与高模是匹配的这便是我们想要的,当然也包括我刚刚分析时画的布线,只要关掉Colorize便可以去掉的。


图18

  我们还可以选择不同的级别进行观察,展开Adaptive Skin你只需调整Density值就可以看到同级别效果,这里同时也可以在拓扑完以后你选择相应级别模型导出。


图19

  当整个模型都拓扑完以后,需要把它导出去。首先将拓扑的模型转成低模的状态,展开Adaptive Skin并点击Make Adaptive Skin ,然后将Make Adaptive Skin出来的物体导出成OBJ 文件格式(分别一个Density1和density6的模型)。


图20

  分别导出Density 1和Density 6 的OBJ文件


图21

  制作法线贴图

  接下来我们在3ds Max里面制作Normal Map (法线贴图),将低模和高模分别命名为:low-model和high-model,然后将导出的低模UV 分好,高模不用分UV。


图22

  接着把高模和低模适配到一起


图23

  高模和低模匹配好以后,在Max菜单栏里找到Rendering 展开并选择Render To Texture。


图24

  接下来的操作是:

  展开General Settings栏并在Output里并设好输出的路径,选中视图中的低模(low-model),选中以后在Render to Texture窗口中Objects to Bake栏里面会显示所选的物体信息。


图25

  在Projection Mapping中勾选Enabled并点击Pick按钮,在弹出的窗口中选择高模(high-model),这时视图中的两个模型会有所变化。


图26

  与此同时在低模的修改面板中会增加一个修改器“Projection”,到Projection栏中展开Cage并点击Shaded(有点类似蒙皮)和reset(重新设置),然后拖动Amount值(结合到视图中观察模型外沿的变化而设,外面的蒙皮一定要包住两个物体不能有穿,不然烘焙出来会出问题)。


图27

  在Mapping Coordinates里面勾选Object 的Use Existing Channel(使用现有的UV,之前我已经给低模(low-model)分好了UV);展开Output栏后点击Add在弹出的窗口中选择Normal Map再点Add Elements,可以调整贴图的尺寸,我选择的是1024*1024,然后勾选Output into Normal bump,最后再点击Render便可以渲染出来,渲染的时候最好用scanline(线扫描渲染器)。


图28

  渲染出来的效果,(红色区域是我之前将高模和低模锁骨部分删掉后,两个模型不一样所造成的)。


图29

  Normal Map(法线贴图)渲染好以后,我们贴到低模(low-model)上看看效果,给低模一个材质球,在map栏里的Bump中添加Normal Bump,然后在Normal  bump 里面的Normal 里贴刚刚生成出来的Normal map (法线贴图),只要渲染便可以看到效果。

  
图30

  如果要在视图中直接看到法线贴图的,效果需要调整一下设置:

  在max菜单栏上展开Customize选择Preference,在弹出的窗口中依次选择:Viewports---Choose Driver(弹出的窗口中)勾选Direct3D(Recommended),重新启动max。


图31

  打开材质编辑器,在刚刚贴法线的材质球中展开DirectX Manager ,勾选DX Display of Standard Material ,等待一会儿显示贴图的“盒子”会变成红白的棋盘格,点击便可以在视图中看到法线的效果。


图32


图33

  做到这一步,次世代模型的Normal Map(法线贴图)算是告一段落了,当然制作法线的方法还有很多种,这只是其中一种,由于时间的关系我这里就不一一列出来,希望这个教程能给大家带来一些帮助!看后大家有什么意见和建议可以与我联系。

  后面抽了些时间简单的做了些贴图:Color Map、Specular Map、Normal Map。


图34


图35

  作者简介:

  姓名:Jovy
  联系方式:Email:jovy_ro@hotmail.com    QQ:200502640
  网站:http://www.3dsense.net  


推荐阅读
  • IOS Run loop详解
    为什么80%的码农都做不了架构师?转自http:blog.csdn.netztp800201articledetails9240913感谢作者分享Objecti ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • 在《ChartData类详解》一文中,我们将深入探讨 MPAndroidChart 中的 ChartData 类。本文将详细介绍如何设置图表颜色(Setting Colors)以及如何格式化数据值(Formatting Data Values),通过 ValueFormatter 的使用来提升图表的可读性和美观度。此外,我们还将介绍一些高级配置选项,帮助开发者更好地定制和优化图表展示效果。 ... [详细]
  • 本文探讨了在使用 Outlook 时遇到的一个常见问题:无法加载 SAVCORP90 插件,导致软件功能受限。该问题通常表现为在启动 Outlook 时会收到错误提示,影响用户的正常使用体验。文章详细分析了可能的原因,并提供了多种解决方法,包括检查插件兼容性、重新安装插件以及更新 Outlook 版本等。通过这些步骤,用户可以有效解决这一问题,恢复 Outlook 的正常运行。 ... [详细]
  • 在Django中提交表单时遇到值错误问题如何解决?
    在Django项目中,当用户提交包含多个选择目标的表单时,可能会遇到值错误问题。本文将探讨如何通过优化表单处理逻辑和验证机制来有效解决这一问题,确保表单数据的准确性和完整性。 ... [详细]
  • 本文介绍了在 Java 编程中遇到的一个常见错误:对象无法转换为 long 类型,并提供了详细的解决方案。 ... [详细]
  • 本文介绍如何在 Android 中自定义加载对话框 CustomProgressDialog,包括自定义 View 类和 XML 布局文件的详细步骤。 ... [详细]
  • 本文总结了在SQL Server数据库中编写和优化存储过程的经验和技巧,旨在帮助数据库开发人员提升存储过程的性能和可维护性。 ... [详细]
  • 在Delphi7下要制作系统托盘,只能制作一个比较简单的系统托盘,因为ShellAPI文件定义的TNotifyIconData结构体是比较早的版本。定义如下:1234 ... [详细]
  • 本文介绍了如何利用 `matplotlib` 库中的 `FuncAnimation` 类将 Python 中的动态图像保存为视频文件。通过详细解释 `FuncAnimation` 类的参数和方法,文章提供了多种实用技巧,帮助用户高效地生成高质量的动态图像视频。此外,还探讨了不同视频编码器的选择及其对输出文件质量的影响,为读者提供了全面的技术指导。 ... [详细]
  • 开发技巧:在Interface Builder中实现UIButton文本居中对齐的方法与步骤
    开发技巧:在Interface Builder中实现UIButton文本居中对齐的方法与步骤 ... [详细]
  • 在尝试对 QQmlPropertyMap 类进行测试驱动开发时,发现其派生类中无法正常调用槽函数或 Q_INVOKABLE 方法。这可能是由于 QQmlPropertyMap 的内部实现机制导致的,需要进一步研究以找到解决方案。 ... [详细]
  • 本文探讨了如何通过编程手段在Linux系统中禁用硬件预取功能。基于Intel® Core™微架构的应用性能优化需求,文章详细介绍了相关配置方法和代码实现,旨在帮助开发人员有效控制硬件预取行为,提升应用程序的运行效率。 ... [详细]
  • 在Linux系统中,网络配置是至关重要的任务之一。本文详细解析了Firewalld和Netfilter机制,并探讨了iptables的应用。通过使用`ip addr show`命令来查看网卡IP地址(需要安装`iproute`包),当网卡未分配IP地址或处于关闭状态时,可以通过`ip link set`命令进行配置和激活。此外,文章还介绍了如何利用Firewalld和iptables实现网络流量控制和安全策略管理,为系统管理员提供了实用的操作指南。 ... [详细]
  • Squaretest:自动生成功能测试代码的高效插件
    本文将介绍一款名为Squaretest的高效插件,该工具能够自动生成功能测试代码。使用这款插件的主要原因是公司近期加强了代码质量的管控,对各项目进行了严格的单元测试评估。Squaretest不仅提高了测试代码的生成效率,还显著提升了代码的质量和可靠性。 ... [详细]
author-avatar
天河体育场里的执波仔_287
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有