--虚幻脚本来实现。
虚幻编辑器的用户界面看起来像大多数的3D创作工具一样,拥有3个相互正交的视角(默认)以及一个可以从任意角度查看的视角。每一个窗口都能单独地进行设置。可是选项包括线框模式、阴影模式、BSP切面模式、以及动态光照模式。后面的模式可以显示出一个好的实时近似游戏内所见的场景,并且包括光照和声音。
所有的实体(对象,声音,光照等等)都被叫做"表演体",因为他们都是基类"Actor"的子类。虚幻关卡通过CSG构建(可构建固体几何体)。整个虚幻的空间初始为固体状态,所以创建一个关卡的第一部是挖空或减去一块世界空间(这保证了在几何体之间没有"裂隙")。一个原语的集能够添加、减少、相交、相并并且使用这些构建起世界。固体对象被称为"刷子",并且这些刷子可以通过"构建刷"和CSG操作构建起来。位图、动画、以及程序贴图能够被应用到任何表面之上(使用一个叫做"Fire Paint"的内建贴图编辑器)。许多种类的光照都能够被添加,包括一个动态光照特效的集合。声音也能够以多种行为方式添加,作为环境音或者位置声音。多种类型的触发器提供靠近检测、时间事件、事件复用等功能。对象能够作为一个"移动物"创建,并且能够使用参数化行为分配其关键帧。网格物体(预先定义的对象网格)能够作为装饰性物件被插入场景中。飞跃式镜头的位置也可支持。一个简单的连接可将触发器事件对应到其他对象(移动物、声音、灯光、其他触发器等)以提供更复杂的交互性。使用集成脚本编辑器,每一个表演体都能够作为子类、扩展出创作者所设想的几乎各种各样的新的表演体。
虚幻编辑器创建关卡是贴图烘烤式的编译后的二进制文件,这样游戏引擎能够在游戏过程中高效地进行处理。它同样提供了一种可导入、导出的文本格式,T3D文件,能够表述关卡。这种文件格式相当容易解析,并且包含了几乎所有的需要描述一个游戏关卡的信息(一些贴图纹理信息和自定义脚本存储在其他地方)。
图1.虚幻编辑器2.0
4 . UnrealToX3D转换器
4.1创作挑战
UnrealToX3D实际上由UnrealToOBJ演变而来。我已经尝试过使用其他的可导入Alias、Wavefront的OBJ格式的创作包。我并为更高端的创作工具所动,并且我发现使用虚幻编辑器能够更快速地创建物体。但是没有可以直接导出包含所有纹理贴图信息的为OBJ格式的功能,我陷入了困境。我已经对T3D文件格式十分熟悉了,使用了数款导入3DMF文件并且构建专用物件至虚幻关卡的可用工具。将T3D文件所描述的固体几何体信息转换为OBJ文件格式是非常简单的。真正的挑战是转换纹理贴图的坐标。虚幻中纹理贴图是被描述为平铺在一个平面空间中的、和它们所位于的多边形的面重合的图片。(见图2)
每一个表面有一个U向量、V向量以及另一个贴图法向量(通常彼此正交)。还有一个(在UV单元内)支持的一个片面值。这样的体系能够允许任意缩放、旋转、剪切以及在不用为每一个多边形上的顶点描述UV坐标的情况下置换贴图。为了将这些多样的固定方向转换到通常的UV坐标系,我找到了一种将多边形从它的任意方向旋转至XY平面的转换方法,并且同样运用到了U和V的贴图组件上。我现在已经可以使用转换过的U和V组件(已经和XY平面共面)来缩放贴图。使用片面值作为偏移量,现在我使用多边形的坐标(已经全部在XY平面上)来产生UV坐标。
转换过程中的其他的挑战来自于指向。虚幻编辑器1和2使用欧拉三角形(偏向、俯仰、翻转)来描述指向。X3D使用基于四元数的指向。在数学上是令人愉悦的训练。虚幻编辑器3使用四元数。
转换了几何体和贴图,我很快发现我需要添加光源、镜头以及