UDK创建模型要素教程

修改
鏉ユ簮: 上帝宝贝 浏览 6149 日期 2011-08-27 0
  • 创建模型要素
    • 概况
    • 要素详解
      • 模型
      • 贴图
        • 用户创建的用于材质的贴图
        • 由高模生成的贴图
        • 由平面生成的辅助法线贴图
      • 成品要素列表
    • 流程图

概况

随着对虚幻引擎3的引进,相对简单的建模及贴图过程已变得更加复杂。本文档将作为一个入门指导,用于阐述模型创建中使用的资源要素的不同类型。

要素详解

模型

对于每个您在游戏中所见的模型,您需要创建两个模型;一个高精度版本和一个低多边形版本。这两个模型将被用于生成一对贴图,查看下述内容获得更多详细信息。
  • Render Mesh(渲染物体): 这是您将实时使用的低多边形模型。
  • Detail Mesh(细分模型): 这是您仅为创建法线贴图所使用的高精度模型。
[next]

贴图

虚幻引擎3使用三大组贴图:用户创建的用于材质的贴图,预生成的用于材质的贴图,以及用户创建的用于预生成贴图的贴图。

用户创建的用于材质的贴图

  • Diffuse(漫射): 这些包括您模型中需要的绝大部分色彩信息。
  • Specular(高光): 这些贴图指出模型反射部分的效果。通常这是一个漫射贴图的调整版本,而且有时漫射贴图本身可用作高光贴图。
  • Emissive(自发光): 如果您的模型中有发光/自发光的区域,则该信息存储于这些贴图中。

由高模生成的贴图

这些贴图通过SHTools插件创建。参见本文档获得更多关于创建过程的信息。它们生成于渲染物体,高精度模型以及用户创建的用于材质的贴图(见下文)。 [next]
  • 法线贴图: 此贴图通过添加边缘强光及阴影,极大地增加了模型的现实感。
  • Height Map(高度贴图): 当法线贴图被创建时生成此贴图,并存储在法线贴图的alpha通道中。它还可被用于凹凸偏移量贴图(见ParallaxTest贴图),但是在大多数情况下最好使用DXT1压缩法线贴图,而放弃在alpha中的高度贴图。
  • Opacity Map(透明度贴图): 此单通道贴图仅表明材质的透明等级。

由平面生成的辅助法线贴图

这些贴图用于生成法线贴图及不透明度贴图(参见上文)。
  • Detail Bump Map(细节凹凸贴图): 此贴图在使用SHTools工具前被应用于Render Mesh(渲染物体)。它提供了Detail Mesh(高精度模型)所缺乏的更细微的细节刻画效果,并将被应用于法线贴图。例如,可能会将细孔或者疤痕置于Detail Bump Map(细节凹凸贴图)内。注:此贴图的名称具有误导性,它应用于渲染物体(Render Mesh),而非高精度模型(Detail Mesh)。此贴图是可选择性应用的;法线贴图将在没有此贴图的情况下生成。
  • Detail Texture(细节贴图): 此贴图被应用于高精度模型(Detail Mesh),并在透明度贴图(Opacity Map)生成时被列入考虑范围。并不需要创建一个细节贴图(Detail Texture);如果细节贴图没有应用于高精度模型(Detail Mesh),将生成不透明度贴图(Opacity Map)。
[next]

成品要素列表

为清晰起见,您最终的模型整合要素列举如下。(可选状态在括号内列出)
  • Render Mesh(渲染物体)
  • Diffuse Map(漫射贴图)
  • Specular Map(高光贴图)(可选)
  • Emissive Map(自发光贴图)(可选)
  • Normal Map(法线贴图)
    • Height Map(高度贴图)(在alpha通道中,可选性极强)
  • Opacity Map(透明度贴图)

请注意,为了节省空间,您可从使用贴图的alpha通道将其“合并”入数目更少的总贴图中。例如,Specular Map(高光贴图)可被置于漫射贴图的alpha通道。

还要注意模型的贴图在多个材质上被分离,您需要确保对每个材质都有漫射,法线及透明度贴图(高光及自发光又是可选的)。

[next]

流程图

创建法线及透明度贴图的过程在概念上可能难以理解。如果您觉得困惑,请看以下流程。

,

评论

{{ username ? username.charAt(0).toUpperCase() : '?' }}
Ctrl+Enter 发布
{{ (c.username || c.author_name || '?').charAt(0).toUpperCase() }}
{{ c.username || c.author_name }} {{ Utils.formatDate(c.created_at) }}