2014-09-18 10:01:3

3.7.5" style="border:0px; vertical-align:middle; max-width:100%">

UnrealDevelopmentKit(虚幻引擎开发工具包)。简称UDK,是一套强大并免费的游戏引擎开发套件。能够用来制作高端的3D游戏或者场景展示。

只是,假设你要制作商业游戏,而且获得不错的收益,UDK官方会乐于找你分享所得。

*UDK直接支持针对苹果Iphone平台的游戏开发。

有关UDK的强大功能和一些基本操作,都能在网上找到不少资料,这里我仅简单介绍UDK的基本构造,以及UDK和Maya的一些交互操作。


【UDK的构成】

尽管UDK官方提供了中文界面。可是因为软件内核对中文支持仍不完好,某些时候会出现不识别的方块,因此建议使用英文界面,包含project名称也要使用英文字母或数字。

3.7.5" alt="" style="border:0px; vertical-align:middle; max-width:100%">


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

3.7.5" alt="" style="border:0px; vertical-align:middle; max-width:100%">

UDK游戏编辑器的界面非常像流行的三维软件界面,如maya,3dsMax(个人看来。更类似Maya)。UDK的视图操作比較个性,它的移动、旋转、缩放快捷键是通过空格键来切换的;场景的浏览,由鼠标左键和右键的组合来完毕。只是按住左键然后拖动鼠标的方式会显得不便,因此通常按住鼠标右键不放,配合键盘的QWEASDZC键会更有用,就好象是第一人称FPS游戏中控制角色在场景中行进一样。右键+(Q:下降;E:上升。W:前进。A:左移;D:右移;S:后退;Z:缩小镜头焦距(增大透视);C:拉大镜头焦距(长焦镜头)。按住键盘的U键。拖动左中右键。是视图的移动,旋转,缩进操作;按住L键,鼠标左键拖动能够环绕所选物体进行观察。

*键盘的大写和小写状态对快捷键操作无影响。

 UDK中创建几何体,一个重要的概念就是Brush(笔刷)。

字面意思上是笔刷,但事实上是一些虚拟的网格线。必须通过UDK左边工具栏的CSG功能才干转为几何实体。CSG功能事实上也就类似三维动画软件中的布尔运算。

UDK具备一定的建模功能。可是使用起来不是非常方便,因此除了一些地形和大面积围墙,多数情况下。我们会通过其它三维动画软件来构建场景模型。


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


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




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


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

3.7.5" alt="" style="border:0px; vertical-align:middle; max-width:100%">

UDK对材质和触发事件的编辑是通过节点连接实现的。

UDK的事件编辑器称为Kismet,就像Maya的节点连接操作一样,我们通过节点的组合就能完毕多数游戏系统的构建,能够在不使用代码编写的情况下制作出一款个性的游戏。



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


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


*个人觉得UDK更适合于3D美工人员--编程人员往往会表示无趣,虽然UDK也提供了强大的脚本语言。

UDK中的组能够多次使用相同的名称。由于引擎不会引用这些组名称,而是直接调用资源包。

因此,资源包的内容必须使用唯一的名称。而且。为了更好的兼容各个游戏平台,一个资源包尽量不要大于2G。




【Maya静态模型导入UDK中】

尽管UDK能直接导入FBX这个经常使用的模型格式(注:这里说的FBX不包括骨骼动画)。可是一般不建议那么做,由于导入后的模型会自己主动分块。

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

在UDK的安装文件夹中,比如C:\ProgramFiles\UDK_2011_06\Binaries\ActorX\Maya2011_x64中。找到名称为“ActorX.mll”的文件,将它拷贝到Maya的插件文件夹中:C:\Program
Files\Autodesk\Maya2011\bin\plug-ins。


当通过Maya的插件管理器载入ActorX.mll后,在maya的MEL命令输入栏中输入:axmesh,就可以调用接口的控制面板。

*注意,当调用UDK的Maya接口面板,是不能再选择场景中的模型的,因此要在开启该面板前完毕模型选择。

要导出选择的场景模型,勾选SelectedItemsOnly。Auto triangulate。Obey hard edges(convert
to smoothing groups),点击SetDefaultOutputPathbutton选择文件导出路径,然后运行ExportMesh。完毕Maya模型到UDK网格的构建。


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

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


双击导入的模型。能够查看模型的外观。


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

3.创建UDK材质纹理。

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


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



双击之前新建的材质,将导入的两张贴图分别连接到材质的对应属性上。然后点击左上角的绿色小勾button。运行材质更新。

*将漫反射贴图的Alpha属性连接到材质的OpacityMask属性,然后将材质的BlendMode设置为BlendMasked。


4.赋予模型材质。

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

3.7.5" alt="" style="border:0px; vertical-align:middle; max-width:100%">

5.UDK场景中使用模型。

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

3.7.5" alt="" style="border:0px; vertical-align:middle; max-width:100%">

6.加入模型碰撞包裹盒。

默认情况下。导入的模型可进行粒子碰撞,但不具备角色碰撞属性,角色会穿透物体。在网格编辑器中,运行Collsion,选择合适的碰撞类型就可以(取决于模型的外轮廓)。

显示碰撞框可查看物体的碰撞包裹范围。


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


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

3.7.5" alt="" style="border:0px; vertical-align:middle; max-width:100%">

当将网格编辑器中的SourceFileTimestamp下的UseSimpleBoxCollision。UseSimpleLineCollision。UseSimpleRigidBodyCollision关闭。UDK将会依照每个多边形面进行碰撞计算,这会极大的消耗资源,因此要谨慎;假设没有碰撞盒或碰撞模型,则不会发生碰撞。UDK对于软件接口的碰撞盒制作有例如以下规则:

UBX 盒子图元:盒子能够使用 MAX 中的 Box(盒子) 物体类型或者使用 Maya 中的 Cube(立方体) 多边形图元来创建。 您不能以不论什么方式移动顶点或者使其发生变形来使它成为不是正规图元的其他形状。否则它将不能正常工作。

USP 球体图元:球体能够使用 Sphere(球体) 物体类型进行创建。 球体根本不须要有太多的分段(分为 8 段比較合适)。它将会为碰撞转换为真正的球体。 就像盒子一样。您不能到处移动单独的顶点。

UCX 凸面网格物体图元:凸面体能够是不论什么全然闭合的凸面 3D 图形。

比方,一个盒子能够是一个凸面物体。 以下的图表解释了什么是凸面体及什么不是凸面体:


7.材质的双面显示设置。

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



8.游戏測试。

增加灯光。构建场景元素,測试游戏。


3.7.5" alt="" style="border:0px; vertical-align:middle; max-width:100%">

游戏开发之UDK引擎介绍和模型导入的更多相关文章

  1. [整理]Unity3D游戏开发之Lua

    原文1:[Unity3D]Unity3D游戏开发之Lua与游戏的不解之缘(上) 各位朋友,大家好,我是秦元培,欢迎大家关注我的博客,我地博客地址是blog.csdn.net/qinyuanpei.如果 ...

  2. Cocos2d-x 3.x游戏开发之旅

    Cocos2d-x 3.x游戏开发之旅 钟迪龙 著   ISBN 978-7-121-24276-2 2014年10月出版 定价:79.00元 516页 16开 内容提要 <Cocos2d-x ...

  3. 【转载】浅谈游戏开发之2D手游工具

    浅谈游戏开发之2D手游工具 来源:http://www.gameres.com/459713.html 游戏程序 平台类型: iOS Android  程序设计: 其它  编程语言:   引擎/SDK ...

  4. [Unity3D]Unity3D游戏开发之Lua与游戏的不解之缘终结篇:UniLua热更新全然解读

    ---------------------------------------------------------------------------------------------------- ...

  5. iOS游戏开发之UIDynamic

    iOS游戏开发之UIDynamic 简介 什么是UIDynamic UIDynamic是从iOS 7开始引入的一种新技术,隶属于UIKit框架 可以认为是一种物理引擎,能模拟和仿真现实生活中的物理现象 ...

  6. [Unity3D]Unity3D游戏开发之从Unity3D到Eclipse

    ---------------------------------------------------------------------------------------------------- ...

  7. iOS-iPad开发之popoverController使用介绍

    iOS-iPad开发之popoverController使用介绍 iOS开发UI篇-popoverController使用注意 iOS SDK:自定义Popover(弹出窗口) 实现的简单例子: // ...

  8. iOS-iPad开发之SplitViewController简单介绍

    iOS-iPad开发之SplitViewController简单介绍 SplitViewController图形化创建 SplitViewController可以并列显示两个view,适用于基于nav ...

  9. Cocos2d—X游戏开发之CCToggle(菜单标签切换)CCControlSwitch(开关切换)

    Cocos2d—X游戏开发之CCToggle(菜单标签切换) 首先继承子CCMenu,是菜单标签中的一种.‘ class CC_DLL CCMenuItemToggle : public CCMenu ...

随机推荐

  1. rest_framework-权限-总结完结篇

    #权限#创建一个权限类 在view添加列表 class MyPermission(object): #message 表示权限决绝时返回的数据 message = "必须是SVIP" ...

  2. [JZOJ3383] [NOIP2013模拟] 太鼓达人 解题报告(数位欧拉)

    来源:XLk 摘录 HDU2894 Description 七夕祭上,Vani牵着cl的手,在明亮的灯光和欢乐的气氛中愉快地穿行.这时,在前面忽然出现了一台太鼓达人机台,而在机台前坐着的是刚刚被精英队 ...

  3. html页面全屏化显示

    <html><head><script>// toggle full screen function toggleFullScreen() { if (!docum ...

  4. Functor& Monad解读

    整体上代表封装的概念,重点是函数的封装,及函数运行的上下文环境.trait Functor[F[_]] Functor:代表整体封装: F[_]:代表封装后的目标域. A.B:代表普通的对象:f:代表 ...

  5. git rebase 的使用 (用于撤销某次commit)

    Q: I wrote the wrong thing in a commit message. Alternatively, I've forgotten to include some files. ...

  6. WSGI和CGI

    https://www.zhihu.com/question/19998865 https://segmentfault.com/a/1190000003069785

  7. BZOJ 2724 [Violet 6]蒲公英(分块)

    题意 在线区间众数 思路 预处理出 f[i][j] 即从第 i 块到第 j 块的答案.对于每个询问,中间的整块直接用预处理出的,两端的 sqrtn 级别的数暴力做,用二分查找它们出现的次数.每次询问的 ...

  8. Linux学习之socket编程(二)

    Linux学习之socket编程(二) 1.C/S模型——UDP UDP处理模型 由于UDP不需要维护连接,程序逻辑简单了很多,但是UDP协议是不可靠的,实际上有很多保证通讯可靠性的机制需要在应用层实 ...

  9. 介绍静态链接库和动态链接库的差别,及在VC++6.0中的建立和使用

    首先介绍一下链接库:链接库分为动态链接库和静态链接库两种 LIB是静态链接库,在程序编译连接的时候是静态链接,其相应的文件格式是.lib. 即当程序採用静态链接库的时候..lib文件里的函数被链接到终 ...

  10. [Python] Scatter Plot for daily return

    Sploe = 2: means that SPY move up 1, ABC move up 2 Correlation: how close those dots close to the li ...