咨询电话:400-810-1418服务与监督电话:400-810-1418转接2

UDK引擎介绍和模型导入(一)

发布时间:2018-11-17 19:57:24

 



        UnrealDevelopmentKit(虚幻引擎开发工具包),简称UDK,是一套强大并免费的游戏引擎开发套件,可以用来制作高端的3D游戏或者场景展示。不过,如果你要制作商业游戏,并且获得不错的收益,UDK官方会乐于找你分享所得。

 

 

        UDK直接支持针对苹果Iphone平台的游戏开发。
        有关UDK的强大功能和一些基本操作,都能在网上找到不少资料,这里我仅简介UDK的基本构造,以及UDK和Maya的一些交互操作。

 

        教程思路

 

 

        【UDK的构成】
        【Maya静态模型导入UDK中】
        1.UDK对应Maya的接口插件的使用。
        2.导入ase格式的静态模型文件。
        3.创建UDK材质纹理。
        4.赋予模型材质。
        5.UDK场景中使用模型。
        6.添加模型碰撞包裹盒。
        7.材质的双面显示设置。
        8.游戏测试。


        【UDK的构成】

 

        虽然UDK官方提供了中文界面,但是由于软件内核对中文支持仍不完善,某些时候会出现不识别的方块,因此建议使用英文界面,包括工程名称也要使用英文字母或数字。

 

 #p#e#

 

 

        顺带一提,UDK官方也提供了中文页面的在线帮助文档,但使用拼音输入法的汉化人员经常会打出些啼笑皆非的怪词组……当然,官方也一直在完善。

 

 

        UDK游戏编辑器的界面很像流行的三维软件界面,如maya,3dsMax(个人看来,更类似Maya)。UDK的视图操作比较个性,它的移动、旋转、缩放快捷键是通过空格键来切换的;场景的浏览,由鼠标左键和右键的组合来完成。不过按住左键然后拖动鼠标的方式会显得不便,因此通常按住鼠标右键不放,配合键盘的QWEASDZC键会更实用,就好象是第一人称FPS游戏中控制角色在场景中行进一样。右键+(Q:下降;E:上升;W:前进;A:左移;D:右移;S:后退;Z:缩小镜头焦距(增大透视);C:拉大镜头焦距(长焦镜头)。按住键盘的U键,拖动左中右键,是视图的移动,旋转,缩进操作;按住L键,鼠标左键拖动可以围绕所选物体进行观察。
        键盘的大小写状态对快捷键操作无影响。
        UDK中创建几何体,一个重要的概念就是Brush(笔刷)。字面意思上是笔刷,但其实是一些虚拟的网格线,必须通过UDK左边工具栏的CSG功能才能转为几何实体。CSG功能其实也就类似三维动画软件中的布尔运算。UDK具备一定的建模功能,但是使用起来不是很方便,因此除了一些地形和大面积围墙,多数情况下,我们会通过其他三维动画软件来构建场景模型。

 

  #p#e#

 

        UDK中通过类似Maya的笔刷工具,绘制复杂的地形起伏和纹理叠加,可以达到高精度的画面效果。

 

 

        与三维动画软件一样,UDK对场景的渲染,也是需要加入材质,贴图,灯光的设定。而除了实时预览效果,UDK的环境处理能力也是十分的强大(大气,薄雾,景深,闭塞,画面后处理等),它甚至可以直接进行影视级的CG动画渲染。

 

 

 #p#e#

 

 

        在游戏渲染前,UDK会将灯光及阴影效果烘焙到场景物体上,这样可以节省游戏时的计算,因此在执行游戏测试时必须先对模型和灯光执行重建命令(BuildGeometry和BuildLighting)--这包括模型位置的改变,新建,删除,以及灯光设置的改变。

 

 

        UDK提供了很多游戏常用的功能,多数集中在内容浏览器的Actor栏中。在构建场景中的游戏元素时,我们会经常使用到Actor窗口中的各种功能节点。

 

 #p#e#

 

        UDK对材质和触发事件的编辑是通过节点连接实现的。UDK的事件编辑器称为Kismet,就像Maya的节点连接操作一样,我们通过节点的组合就能完成多数游戏系统的构建,可以在不使用代码编写的情况下制作出一款个性的游戏。

 

 

 

        Kismet中,有一个称为Matinee的节点,它类似maya的驱动关键帧功能:通过设置条件,触发预设的动画。例如,创建一个Trigger,可设定当角色经过时发生某个事件动画。不过要注意,UDK添加动画关键帧和通常的三维软件不太一样,它是先设置关键帧,然后再改变当前帧的物体形态。

 

 #p#e#

 

        UDK中有属于自己的粒子特效系统,使用上和maya的粒子系统相似,可为游戏提供丰富的粒子特效。

 

 

        个人认为UDK更适合于3D美工人员--编程人员往往会表示无趣,尽管UDK也提供了强大的脚本语言。
        UDK中的组可以多次使用同样的名称,因为引擎不会引用这些组名称,而是直接调用资源包。因此,资源包的内容必须使用唯一的名称。并且,为了更好的兼容各个游戏平台,一个资源包尽量不要大于2G。

 

 

 #p#e#

 

        【Maya静态模型导入UDK中】

 

 

        虽然UDK能直接导入FBX这个常用的模型格式(注:这里说的FBX不包含骨骼动画),但是一般不建议那么做,因为导入后的模型会自动分块。

 

        1.UDK对应Maya的接口插件的使用


        在UDK的安装目录中,例如C:ProgramFilesUDK_2011_06BinariesActorXMaya2011_x64中,找到名称为“ActorX.mll”的文件,将它复制到Maya的插件目录中:C:Program FilesAutodeskMaya2011inplug-ins。

 

 

        当通过Maya的插件管理器加载ActorX.mll后,在maya的MEL命令输入栏中输入:axmesh,即可调用接口的控制面板。
        注意,当调用UDK的Maya接口面板,是不能再选择场景中的模型的,因此要在开启该面板前完成模型选择。
        要导出选择的场景模型,勾选SelectedItemsOnly,Auto triangulate,Obey hard edges(convert to smoothing groups),点击SetDefaultOutputPath按钮选择文件导出路径,然后执行ExportMesh,完成Maya模型到UDK网格的构建。

 

 

        2.导入ase格式的静态模型文件


        点击内容浏览器左下角的Import按钮,导入创建好的ase文件。导入的路径和名称设置要遵循UDK资源包的命名规则。

 

 #p#e#

 

        双击导入的模型,可以查看模型的外观。

 

 

        通过接口将Maya中的模型导入UDK场景中,对应的尺寸比例是1:1的,也就是maya中物体是10厘米,导入UDK中也是10厘米长。为了能在导入模型后使之位于地形之上,maya中的模型应处于世界网格的向上一侧,也就是translateY>=0。


        3.创建UDK材质纹理


        新建一个材质,然后分别导入贴图。

 

 

        漫反射贴图使用默认设置即可(仍要注意命名),而法线贴图,则应将CompressionSettings设置为TC_Normalmap,同时勾选CompressionNoAlpha,忽略透明通道的计算。

 

#p#e#

 


        双击之前新建的材质,将导入的两张贴图分别连接到材质的相应属性上,然后点击左上角的绿色小勾按钮,执行材质更新。
        将漫反射贴图的Alpha属性连接到材质的OpacityMask属性,然后将材质的BlendMode设置为BlendMasked。

 

 

        4.赋予模型材质


        双击模型,在弹出的网格编辑器中,找到LODInfo->...->Material,可以赋予模型新的材质:先在内容浏览器中选择新建的材质,然后点击绿色小箭头按钮(或者通过Ctrl+C和Ctrl+V的快捷键操作,将材质名称粘贴到文本框中)。

 

 #p#e#

 

        5.UDK场景中使用模型


        在ContentBrowser中,将赋予了材质的模型直接用鼠标左键拖入场景中。

 

 

        6.添加模型碰撞包裹盒


        默认情况下,导入的模型可进行粒子碰撞,但不具备角色碰撞属性,角色会穿透物体。在网格编辑器中,执行Collsion,选择合适的碰撞类型即可(取决于模型的外轮廓)。显示碰撞框可查看物体的碰撞包裹范围。

 

 

        还有一种创建模型碰撞包裹盒的方法,那就是在导入模型到UDK前,通过Maya建立。在maya中创建一个简单几何体,将物体包裹,然后在该几何体的名称后加入后缀“_UCX”,按之前axmesh导出模型即可(注意,字母是大写,下划线为英文输入法状态输入)。

 

 #p#e#


        包裹用的几何体不会在游戏中被渲染,并且可以删除部分面实现特殊的碰撞效果,如木桶。但要注意,尽量保证碰撞几何体不发生重叠,也不包含凸面(内夹角大于180度),否则碰撞会计算出错。

 

  


        当将网格编辑器中的SourceFileTimestamp下的UseSimpleBoxCollision,UseSimpleLineCollision,UseSimpleRigidBodyCollision关闭,UDK将会按照每一个多边形面进行碰撞计算,这会极大的消耗资源,因此要慎重;如果没有碰撞盒或碰撞模型,则不会发生碰撞。UDK对于软件接口的碰撞盒制作有如下规则:
        UBX 盒子图元:盒子可以使用 MAX 中的 Box(盒子) 物体类型或者使用 Maya 中的 Cube(立方体) 多边形图元来创建。 您不能以任何方式移动顶点或者使其发生变形来使它成为不是正规图元的其它形状,否则它将不能正常工作。
USP 球体图元:球体可以使用 Sphere(球体) 物体类型进行创建。 球体根本不需要有太多的分段(分为 8 段比较合适),它将会为碰撞转换为真正的球体。 就像盒子一样,您不能到处移动单独的顶点。
        UCX 凸面网格物体图元:凸面体可以是任何完全闭合的凸面 3D 图形。 比如,一个盒子可以是一个凸面物体。 下面的图表解释了什么是凸面体及什么不是凸面体:

 

 

 

        7.材质的双面显示设置


        游戏默认的背面是隐藏的,如果不想让模型出现单面消失的现象,可以勾选启用材质的TwoSided功能。

 

 #p#e#

 

 

        8.游戏测试


        加入灯光,构建场景元素,测试游戏。

 

 

 

 

        本教程完。