UNREAL ENGINE 4.7 RELEASED!
虚幻引擎 4.7 更新记录!
Brandon Sieprawski on February 25, 2015 | 张弢 翻译于 2015年2月27日
漫射光照现在可以将正对光源一面的光照透射到另一边。
- 透射光照混合了正面固有色信息与视角关联背面透射。
- 可以使用次表面色彩(Subsurface color)这一通道来过滤光照,用来模拟厚度变化。(比如添加叶脉效果)
- 记住,在这个材质模式下使用半透明通道只会影响阴影的衰减距离。
现在我们拥有了一个层级式系统来管理与剔除百万级植物场景。同时,我们也增加了一个针对模型LOD的平滑视觉过渡,它使用延时淡出方式来抑制让人讨厌的LOD切换时的闪烁。
你现在可以在关卡中直接选择独立的组件(Components),使用你熟悉的操作器工具去移动它或者编辑它的属性。
当你完成了调整之后,点击“蓝图/添加脚本”(Blueprint / Add noxss)就可以保存为可复用的类或是为它添加脚本。这会自动覆盖你之前的类。
可放置的空对象(Actors)
现在也支持空Pawn(Empty pawns)与空角色(Empty Character)。这让你可以使用新的关卡内组件编辑功能在关卡中去构建一些有意思的对象。
然后,为你的新组件选择一个父类。“场景组件”(Scene Components)内部拥有一个3D空间位置,而“对象组件”(Actor Components)只是一个逻辑脚本。
接下来是有趣的部分了:为你的组件编写蓝图脚本代码。在下图的范例中我们使用Tick事件驱动每帧都沿着Yaw轴旋转这个对象本身。并将这个组件命名为“Spinner”,因为它会让对象不停的旋转。
现在,你可以拖动这个组件放置到场景中的任何的对象上,游戏开始后对象就会旋转起来。一个可复用的功能模块就诞生了。
你也可以把它拖放到一个普通的蓝图类里去。你的新组件也会一直显示在“添加新组件”(Add Component)的菜单中(放置在’自定制’分类里),在内容浏览器里也和其他组件一样。
如果你用外部程序更新了这些源文件,编辑器也会检测到并自动导入这些内容。这使得你迭代更新游戏内容变得更加快速。
你现在可以自由的排布组合各个面板,像是预览视图与节点图谱这样的视窗现在可以同时显示了。
简单的完成 Emnoxssen SDK的安装,重启你的编辑器与启动器,在启动按钮的下拉选项中选择一个网页浏览器即可。
HTML5使用时的一些注意事项:
- 开发过程中需要Firefox, Safari或者64位版本Chrome。(shipping版本可以工作在32位版本的Chrome上)
- 当前HTML5只支持Windows平台,我们将在下一版本中支持Mac。
- 你的游戏也许需要一些额外的准备工作才能运行,特别是首次开发HTML5项目。项目的资源与代码都需要为网页浏览器做些优化。
使用Mac开发安卓版本
苹果电脑用户现在可以构建、打包安卓版本程序,并通过编辑器或者命令行工具发布到安卓设备上。
- 你需要安装Java for OSX与安卓SDK。你可以使用Engine/Extras/Android文件夹下的TADP来安装它们。
- 安装完成后,你需要重启编辑器或者是在项目设置中找到安卓SDK的部分指定正确的SDK路径。
这可以使你无缝的接入引擎代码开始调试,同时,在程序崩溃时获得完全的调用堆栈。你无需再自己编译引擎就可以对引擎开始完整调试。
点击“VR Preview”,编辑器窗口会最小化,你的游戏会直接在Oculus Rift设备上弹出显示。
想要获取如何使用这一插件的范例,请访问Leap Motion的官方网站https://www.leapmotion.com。目前这一插件仅支持GitHub自编译版本的引擎,你可以直接在Leap网站上下载到这个插件。
你也可以很简单的在内容浏览器中创建新的C++类。他会自动编译和显示在编辑器中。
双击C++类图标,可以直接调用Visual studio或者Xcode打开源码。右键点击可以基于现有类创建新的类。
功能包与内容包
所有已有的模板项目功能都已经打包成为功能包了。所以你可以先添加第一人称功能包,然后再添加载具功能包,这样你就可以在你的项目里同时使用这两套功能了。
甚至起始资源包(Starter Content)也可以在任何时候导入你的项目。其实,我们已经有了一个为移动平台优化的起始资源包让你选择。
拖动时间滑块,选择骨骼,使用操作器移动、旋转骨骼,并在当前时间设置关键帧。关键帧设置的快捷键是“S”。
在Persona编辑器内,所有的动画曲线编辑都会被存储到一个“叠加层”(additive layer)。当你重新导入原始动画数据,你所做的修改仍然被保存着。这个层数据只存在于Persona编辑器内。只需要在工具栏中点击“应用”提交你的修改,就可以在游戏中看到动画的修改了。
你也可以完整保存你的定制动画!使用工具栏“Greate Asset”按钮创建新的动画。
一些注意事项:
- 动画曲线可以在你不需要的时候取消或者删除
- 一旦bake完成,就只能输出bake完的动画。附加的曲线不会被输出。
- 当你重定向你的动画目标,附加曲线不会被重定向。所以,请完成Bake之后再执行重定向。
目前这个功能只工作在TwoBoneIK, ModifyBone、Fabrik三种解算器上,不过我们会陆续添加更多的支持。
点击工具栏上的“Record”按钮,就可以开始录制下视窗中的物理交互,之后点击“Stop”,模拟的结果就存储为动画了。
- 在关卡编辑器工具栏上找到“Play”按键,在“Play”按键的下拉选项中点击“Simulate”。
- 在场景中选中你需要记录模拟动画的骨骼模型。
- 在模型上右键点击“Keep Simulated Changes”(或者按“K”键),就可以保存动画了。
项目启动器拥有多项功能帮助你在多种不同设备、多种不同设置间快速测试你的项目。你可以更简单的定制不同的构建类型与打包设置,然后在任意连接好的设备上启动你的项目。
- 将所有高级选项都暴露出来。
- 选择特定需要构建的内容。
- 一次构建多个不同平台的版本。
- 打包与保存多个版本然后在其他地方运行,或者是稍后再运行。
你可以用以下这些方法调用这个工具:
- 在蓝图编辑器中点击文件->合并。
- 在源码控制显示为冲突的组件上点击右键,然后选择合并。
- 使用命令行工具,运行: UE4Editor.exe -diff [options]
当你将项目连接到Git存储区,编辑器就可以支持大部分的源码控制功能,比如添加、删除文件,提交修改,显示文件历史,比较文件,显示当前的源码控制状态等等。
新的项目模板附带教程
只需要在内容浏览器里点击教程预览图上的“播放”按钮,就可以开始播放教程。
内容包与功能包也可以包含自己的教程。如果添加了新的包在你的项目,你也看看附带的教程去学习一下这些包的内容。
同时,现在C++类与蓝图类现在也可以显示为交互式的3D缩略图。缩略图右下角的小图标会显示出它的父类。
- 各个层可以重新排序了,你可以让特定的层上移或下移。
- 你现在可以在选中的层上控制绘画,而不是仅仅在最上面的层。
- 整个编辑过程中,被选中的层会被锁定。
- 被选中的层会有一个帮助网格被渲染出来帮助你正确对齐其他未选中的层。
- 层命名功能现在工作起来与关卡概要视图非常相似。
- 层可以复制了。
- 拼贴地图现在可以在关卡中重用或实例化,这意味着它现在是一个资源组件了。
- 新添加的层现在有了更具可读性的命名。
翻页式动画资源有了一组新的碰撞来源属性,用来控制碰撞数据的来源。
- 无碰撞(No Collision): 这个翻页式动画资源不进行碰撞检测。
- 使用第一帧碰撞(First Frame Collision): 这个翻页式动画资源的碰撞检测忽略动画,它一直使用动画资源的第一帧数据来做碰撞检测。
- 每一帧都做碰撞数据(Each Frame Collision): 这个翻页式动画资源的碰撞数据基于动画的每一帧更新。这一设置下,每帧都更新新的碰撞数据。
- 在很多时候,我们只需要在翻页式动画资源上附加一个碰撞体(例如一个碰撞盒)就可以了,而不需要真的从图片资源中获取碰撞数据,尤其是当你的一些碰撞区域之间有互相重叠的时候。
- 角色移动依然是依赖胶囊体碰撞检测,多数情况下胶囊体设置为碰撞所有(BlockAll),而翻页式动画资源的碰撞应该放在一个不同的碰撞通道里,防止它们之间互相卡住。 (通常检测移动与阻挡使用胶囊体,检测互相穿插、碰撞或者射线使用翻页式动画自己的碰撞)
软件光标在以下案例中会非常有用:
- 为不支持硬件光标的平台添加光标,比如为主机游戏添加虚拟鼠标光标。
- 需要为光标添加更多丰富的视觉效果,比如动画或者其他复杂的视觉交互。
- 保持在PC、Mac、Linux各个平台上保持一致的光标视觉效果,而不需要为特定平台制作特定格式。
使用新的绑定系统的一些注意事项:
- 绑定基于一个可动态赋值的值域,而不是蓝图脚本。
- 直接绑定C++或者蓝图功能集都支持。
- 一些简单的转换都是自动处理的。(例如线性颜色转换为Slate颜色,2D贴图转换为Slate画刷)
- 这一修改使得属性绑定变得更快。(差不多有10倍的提升)
- 旧的绑定方式仍然能够工作,但是为了提升性能,请考虑升级到新的绑定系统。
- 将事件记录下来,然后通过强大的工具基于时间线来搜索。看看这个视频范例吧。
- 时间线上的对象在有警告时会显示为黄色,在出现错误时会显示为红色。
- 你现在可以在游戏暂停状态下使用特殊的调试摄影机在场景中运动观察。
- 将可视化日志工具内容保存为状态报告。报告中会带有超链接让你可以快速过滤日志,便于分析。
在项目的渲染设置中,勾选新的“半透明排序策略”(Translucent Sort Policy)选项。
- 基于距离排序(Sort by Distance): 这种排序方式基于摄影机到对象的轴点之间的距离。这一方式通常运用于3d游戏。
- 基于Z轴投射距离排序(Sort by Projected Z): 这一排序方式在后处理中计算摄影机空间的Z深度用于排序。这一设置可以抑制由于摄影机旋转导致的对象渲染闪烁。
- 基于特定轴向排序(Sort Along Axis): 排序基于某个特定的轴向,这一方式主要用于2D游戏中。这个特定的轴向称为半透明排序轴(Translucent Sort Axis),你同样可以在项目的渲染设置中去编辑它(默认的轴向是 -Y)
- 不需要特殊的构造函数。类的构造函数不再需要采取对象初始化参数。
- 创建虚幻类的子对象现在有简单语法。
- 你现在可以在一个C++头文件里包含多个虚幻类。
- 你现在可以在头文件里声明特殊的虚幻类,即时在这个文件里没有对应的类。
- 你不再需要保持虚幻类的名字与源文件名一致。
- 你现在可以为属性使用任意的命名。之前一些像是“Color”这样的通用名字是被保留并且不可使用的。
- “ES3.1+AEP”现在是构建与打包时的一个可选目标平台。
- Nvidia的Tegra K1设备(例如:NVIDIA Shield Tablet) 已经可以用于开发使用。未来会有更多更多支持AEP的设备。
- 在安卓项目设置中打开“Enable OpenGL ES31 + AEP” 选项。
- 注意: 目前,你需要从GitHub上获取源码,自己编译版本才能支持这个功能。
- 注意: 仅依赖蓝图编程的项目也需要重新编译UE4Game才能支持OpenGL ES 3.1,请打开BaseEngine.ini设置文件中的bBuildForES31选项。
这些路径环境变量是覆盖原有的路径设置方式的,所以如果原有的设置工作没问题,你可以让这些新变量空着。