2018-08-08 15:48:53 davidhopper 阅读数 5776
  • 从这里开始虚幻4-Editor介绍 v4.18

    本课程系列取名英译系列,是录制人员参考国外英文原版经典教程,结合中国人的习惯录制而成。希望能够给大家以帮助。从这里开始虚幻4系列教程,是Unreal的官方发布的入门教学,非常经典,是学习Unreal的佳入口。

    2377 人正在学习 去看看 杨石兴

严正声明:本文系作者davidhopper原创,未经许可,不得转载。

说明:本文阐述了基于源代码构建CARLA 0.9.0版的方法(本文写作时间2018年8月8日,此时最新版就是该版本) ,构建过程能够成功,但运行模拟器时,场景里面没有车辆和行人,需要使用Python脚本自己添加,而之前的版本只要打开场景则自动添加车辆和行人。经我在发帖询问(见Issue #660)得知,最新的0.9.0版虽然支持多个智能体的训练,但该版本仍然是一个非常不稳定的实验版本,如果不是有特殊需求,建议不要使用,而是改用稳定版0.8.2。但本文阐述的构建方法仍然通用,只是需要替换相关源代码版本。

2019年3月15日更新:构建CARLA 0.9.4版的方法相同,Unreal Engine的版本为:4.21,CARLA的版本为:0.9.4,在切换分支时注意换成对应版本号:4.21.2-release、0.9.4。

CARLA是Intel主导开发的一个开源自动驾驶模拟器,基于虚幻引擎(Unreal Engine)实现,是一个不错的仿真环境。CARLA依赖于Ubuntu 16.04或更高版本操作系统。本文介绍Ubuntu 16.04系统中基于源代码构建CARLA 0.9.0的方法。
注意:下载文中涉及的软件及源代码,需要设置代理及国内镜像服务器,可以分别参考我两篇博客:《Ubuntu 16.04系统中代理工具shadowsocks-qt5的使用方法》《使用国内镜像服务器,解决apt-get、pip等安装工具下载依赖包速度慢的问题》

一、安装依赖工具包

使用如下命令安装依赖工具包:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install build-essential clang-5.0 lld-5.0 g++-7 ninja-build python python-pip python-dev tzdata sed curl wget unzip autoconf libtool
sudo pip install setuptools nose2

配置构建CARLA环境的编译工具:

sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/lib/llvm-5.0/bin/clang++ 101
sudo update-alternatives --install /usr/bin/clang clang /usr/lib/llvm-5.0/bin/clang 101

二、安装虚幻引擎(Unreal Engine

2.1 注册Unreal Engine账号,并将其连接至你的GitHub账号

虚幻引擎在GitHub上的代码仓库是私有的,需要在网站上注册一个账户,并授权可以访问GitHub网站代码。注册账号的过程就不讲了,大家去官网注册即可。账号注册完毕后,一定要进自己预留的E-mail邮箱,点击激活链接,否则注册无效。此后,再次进入虚幻引擎官网,进入个人账号主页,将Unreal Engine账号连接到自己在GitHub上的账号,连接后同样会有一份邮件发送到你的E-mail邮箱,点击邮件中的链接确认账号绑定,如下图所示:
1
2

账号绑定成功后,就可以在GitHub网站看到Unreal Engine的源代码了:
3

2.2 下载并安装Unreal Engine 4.19.2

使用如下命令下载并安装Unreal Engine(注意:我们使用4.19.2版,因为下文构建CARLA0.9.0需要依赖该版本,如果使用其他更低级版本,我不知道是否会出错,感兴趣的话可以尝试。但我一开始没注意使用最新的4.20.1版,结果就报错了,具体描述见3.6节

# 下载源代码
git clone git@github.com:EpicGames/UnrealEngine.git

# 进入Unreal Engine源代码目录
cd UnrealEngine

# 拉取更新远程分支列表
git remote update origin --prune

# 查看标签列表
git tag --list

# 签出标签4.19.2-release并在本地同步建立4.19.2-release分支
# -b后第一个参数表示分支名,第二个参数表示标签名
# 更新过程时间会比较长
git checkout -b 4.19.2-release 4.19.2-release

# 查看本地分支,确认目前处于4.19.2-release分支,并与远程4.19.2-release标签对应
git branch -vv

# 配置编译所需的环境,可能耗时较长,最终出现“SUCCESS”消息
# 配置过程中会弹出一个对话框,需要你确认。
./Setup.sh

# 生成Makefile
./GenerateProjectFiles.sh

# 构建Unreal Engine,编译时间会比较长
make

# 确认已经正确安装了Unreal Engine 4.19.2
./Engine/Binaries/Linux/UE4Editor

在下载和构建过程中,需要获取很多文件,如果你的代理网速不理想,整个过程会耗时漫长(可能超过半天),甚至失败。
如果构建过程中出现编译错误,请参考该文档获取答案。

2.3 设置环境变量

使用vi编辑器打开配置文件~/.bashrc,将如下内容加入到文件末尾:

# Unreal Engine
export UE4_ROOT=~/code/UnrealEngine

操作命令如下:

vi ~/.bashrc
source ~/.bashrc

三、安装CARLA模拟器

3.1 下载CARLA源代码

使用如下命令下载CARLA源代码:

# 下载源代码
git clone git@github.com:carla-simulator/carla.git
# 进入CARLA源代码目录
cd carla
# 拉取更新远程分支列表
git remote update origin --prune
# 查看标签列表
git tag --list
# 签出最新的稳定版0.9.0并在本地同步建立0.9.0分支
# -b后第一个参数表示分支名,第二个参数表示标签名
git checkout -b 0.9.0 0.9.0
# 查看本地分支,确认目前处于0.9.0分支,并与远程0.9.0标签对应
git branch -vv

如果不是天朝伟大的墙,基于源代码安装CARLA是一件很简单的事,使用命令./Update.shmake launch即可,但由于脚本./Update.sh需要从美国服务器下载一个2.9 GB的依赖文件:Content_0.9.0.tar.gz,因此要想在命令行内下载,几乎是一个不可能完成的任务(见我发的一个问题帖:Issue #652)。于是我们另辟蹊径,使用下载工具uGet手动下载安装,当然使用下载工具时,同样需要使用代理,如果没有代理,仍然不能顺利完成下载。

3.2 安装下载工具uGet

使用如下命令安装uGet:

sudo add-apt-repository ppa:plushuang-tw/uget-stable
sudo apt update
sudo apt install uget

在命令行内输入如下命令打开uGet

uget-gtk

或者在图形化界面中通过如下方法搜索并打开uGet
4

3.3 通过uGet下载依赖文件:Content_0.9.0.tar.gz

打开uGet,新建下载任务,下载链接根据源代码文件carla/Util/ContentVersions.txt中的描述(如下所示)确定,记住我们要下载0.9.0版对应的依赖文件:Content_0.9.0.tar.gz
**注意:**使用uGet下载依赖文件时不能直接使用文档中的链接,而必须使用浏览器打开,等浏览器开始下载后的链接才是真正下载链接。因为该链接每天都发生变化,所以这里无法直接给出。
下载时,uGet使用SOCK v5代理,代理服务器为127.0.0.1,端口为1080Max Connections可根据实际情况适当增大到5~10。因为该文件不支持断点续传,有可能要下载几次才能成功。

Here we keep a list of the Google Drive id's of the Content files. The last id
in the list it's picked up by the Setup.sh script to download the last version
of the contents.

You can direct download with https://drive.google.com/open?id=PUT_FILE_ID_HERE

0.5.4: 0B2HFV-VuKn3PYUFFanlmZ2VMTW8
0.6.0: 1Gw8sw01hDEV4FtpHEZZwvS-6XN0jmaLT
0.7.0: 11PKC_lG7L80L1ZxiMlzV17utU45UcRnT
0.7.1: 1gf3YaFIjwr1EaK6qxq2V-a510Brt9Imq
0.8.0: 1tA-WwKA0RNhBoENYunqF3-F_wg11dL86
0.8.1: 1su5wQH7KJphAcirMA8VEDLndGigQ9tzq
0.8.2: 1llrBkZDvJmxXYh4r3jz0wuwz8Q8jRQeZ
0.8.3: 1z2XKOk9LoKI-EhxcrpI31W5TeYo2-jjn
0.8.4: 1mFNS-w5atQ45yegiTepRIeKBYVm8N8He
0.9.0: 1FtC00CrDb7Kz5StBAwb6vqOGbzZtpROx

For example, the link to 0.9.0 would be https://drive.google.com/open?id=1FtC00CrDb7Kz5StBAwb6vqOGbzZtpROx

5

3.4 升级CMake到3.9.0以上版本

CMake官网下载最新版cmake-3.12.0.tar.gz,使用如下命令,升级安装CMake

# 进入下载目录
cd ~/Downloads/
# 解压文件cmake-3.12.0.tar.gz
tar xzvf cmake-3.12.0.tar.gz
# 进入cmake目录
cd cmake-3.12.0/
# 生成Makefile
./configure 
# 编译cmake
make -j 8
# 安装cmake,默认安装目录为/usr/local/bin
sudo make install
# 建立到/usr/bin/cmake的符号链接
sudo ln -s /usr/local/bin/cmake /usr/bin/cmake
# 检查cmake是否已升级到最新的3.12.0版
cmake --version

3.5 构建CARLA 0.9.0

使用如下命令构建CARLA 0.9.0

# 进入~/code/carla/Unreal/CarlaUE4/Content/Carla目录
cd ~/code/carla/Unreal/CarlaUE4/Content/Carla

# 将Content_0.9.0.tar.gz解压到当前目录,~/Downloads是源文件存放目录
tar xzvf ~/Downloads/Content_0.9.0.tar.gz

# 回CARLA源代码根目录
cd ~/code/carla

# 清除上次编译信息
make clean

# 更新配置信息,注意一定要加-s选项,不然会一直去下载依赖文件Content_0.9.0.tar.gz,
# 而在国内又连不上网,等待很长一段时间后会报网络连接错误
./Update.sh -s

# 构建CARLA,并在UE4Editor中启动CARLA
# 因为make程序又会从网上下载依赖包,而由于墙的原因,自然又无法下载。
# 我实在没办法了,只有借助proxychains在命令行中使用代理下载
# 关于proxychains的安装使用,请见我的博客:
# https://blog.csdn.net/davidhopper/article/details/78883450
# 第六节内容
# 注意:在命令行中使用代理非常不稳定,不到万不得已,尽可能不用
# 如果下载数据出错,一是确认代理已开,二是多次重复执行下述命令
# 如果依赖文件已经下载完毕,就可以直接执行make launch
proxychains make launch

# 构建可单独运行的CARLA模拟器
make package

最后如果出现如下启动界面,表明CARLA 0.9.0已经顺利构建完成:
6
7

3.6 构建CARLA 0.9.0时可能出现的错误

3.6.1 UnrealHeaderTool failed for target 'CarlaUE4Editor'错误

在构建过程中如果出现如下错误:

Error: UnrealHeaderTool failed for target 'CarlaUE4Editor' (platform: Linux, module info: /home/davidhopper/code/carla/Unreal/CarlaUE4/Intermediate/Build/Linux/B4D820EA/CarlaUE4Editor/Development/CarlaUE4Editor.uhtmanifest, exit code: OtherCompilationError (5)).
Makefile:620: recipe for target 'CarlaUE4Editor' failed
make[1]: *** [CarlaUE4Editor] Error 5
make[1]: Leaving directory '/home/davidhopper/code/carla/Unreal/CarlaUE4'
Util/BuildTools/Linux.mk:9: recipe for target 'launch' failed
make: *** [launch] Error 2

8
这是因为CARLA 0.9.0不支持Unreal Engine 4.20以上版本造成,使用如下命令可以查看UE4Editor版本:

cd ~/code/UnrealEngine/Engine/Binaries/Linux
./UE4Editor

7
如上图所示,启动界面显示的UE4Editor版本是4.20.1,表明安装的Unreal Engine版本过高,需重新安装。退出该程序,执行如下命令重新安装Unreal Engine

# 进入Unreal Engine目录
cd ~/code/UnrealEngine

# 查看当前有几个分支,一般默认会有release分支
git branch

# 切换到4.9.2-release分支以外的其他分支,我切换到release分支
git checkout release

# 删除原有4.9.2-release分支
git branch -d 4.19.2-release

# 签出标签4.19.2-release并在本地同步建立4.19.2-release分支
# 更新过程时间会比较长
git checkout -b 4.19.2-release 4.19.2-release

# 配置编译所需的环境,耗时很长,最终出现“SUCCESS”消息
./Setup.sh

# 生成Makefile
./GenerateProjectFiles.sh

# 清除原有编译
make ARGS=-clean

# 构建Unreal Engine,编译时间会比较长
make

# 确认已经正确安装了Unreal Engine 4.19.2
./Engine/Binaries/Linux/UE4Editor

然后执行如下命令继续构建CARLA

cd ~/code/carla
make clean
make launch

3.6.2 找不到libboost_python27.a错误

使用命令package构建可单独运行的CARLA模拟器时,出现如下错误:

x86_64-linux-gnu-gcc: error: /home/davidhopper/code/carla/PythonAPI/dependencies/lib/libboost_python27.a: No such file or directory
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
Util/BuildTools/Linux.mk:47: recipe for target 'PythonAPI' failed
make: *** [PythonAPI] Error 1

8
这是由于Python版本不正确导致,CARLA模拟器源代码默认提供的是基于Python 3.5版的第三方库文件 libboost_python35.a,而我当前使用了Python 2.7。于是,需要修改系统当前使用的Python版本,操作方法见我的博客《Ubuntu 16.04安装tensorflow_gpu 1.9.0的方法》第2.1节内容。为完整起见,下面也给出简单的操作过程:

python -V
sudo update-alternatives --config python
python -V

9
然后重新执行下述编译指令:

make clean
make package

四、使用CARLA模拟器

4.1 启动CARLA模拟器

基于源代码构建CARLA模拟器后,启动方式比较奇葩,使用Ctrl+Alt+T打开一个终端,执行如下命令:

cd ~/code/carla
make launch-only 

如果不怕麻烦,也可以切换到UE4Editor目录,执行如下命令打开:

cd ~/code/UnrealEngine/Engine/Binaries/Linux
./UE4Editor ~/code/carla/Unreal/CarlaUE4/CarlaUE4.uproject

键盘操作说明如下:

W            : throttle 油门
S            : brake 刹车
AD           : steer 方向盘
Q            : toggle reverse 切换倒档
Space        : hand-brake 手刹

P            : toggle autopilot 切换自动驾驶

Arrow keys   : move camera 移动相机
PgUp PgDn    : zoom in and out 放大与缩小
mouse wheel  : zoom in and out 放大与缩小
Tab          : toggle on-board camera 切换车载相机

R            : restart level 重启级别
G            : toggle HUD 切换抬头显示,即在前档玻璃上显示数字信息
C            : change weather/lighting 改变天气/照明

Enter        : jump 跳跃
F            : use the force 使用暴力

F11          : toggle fullscreen 切换全屏
Alt+F4       : quit 退出

4.2 切换CARLA模拟器使用的街景地图

目前提供Town01Town01_BuiltDataTown02testmaptruck等四种街景地图,执行如下命令指定地图:

cd ~/code/UnrealEngine/Engine/Binaries/Linux
# 将Town01替换为Town01_BuiltData、Town02、testmaptruck可切换不同的街景地图
./UE4Editor ~/code/carla/Unreal/CarlaUE4/CarlaUE4.uproject /Game/Carla/Maps/Town01

4.3 将CARLA模拟器作为服务器运行

可以将CARLA模拟器作为服务器运行,这样就可以在客户端连接他,测试深度强化学习算法了。使用Ctrl+Alt+T打开一个终端,执行如下命令:

cd ~/code/UnrealEngine/Engine/Binaries/Linux
# 使用800X600的小视窗,一方面节约资源,另一方面可观察游戏效果
./UE4Editor ~/code/carla/Unreal/CarlaUE4/CarlaUE4.uproject /Game/Carla/Maps/Town01 -carla-server -benchmark -fps=15 -windowed -ResX=800 -ResY=600

4.4 配置CARLA模拟器默认是否以服务器模式运行

使用vi编辑器打开配置文件Unreal/CarlaUE4/Config/CarlaSettings.ini

cd ~/code/carla

# 如果配置文件Unreal/CarlaUE4/Config/CarlaSettings.ini不存在,则先复制一个
cp Docs/Example.CarlaSettings.ini Unreal/CarlaUE4/Config/CarlaSettings.ini

# 修改配置文件Unreal/CarlaUE4/Config/CarlaSettings.ini
vi Unreal/CarlaUE4/Config/CarlaSettings.ini

修改如下配置项,true表示以服务器模式运行,false表示以单机形式运行。

[CARLA/Server]
UseNetworking=false

然后按照4.1节操作,重启CARLA模拟器。

2018-11-15 17:21:01 xiaoxiaolooi 阅读数 256
  • 从这里开始虚幻4-Editor介绍 v4.18

    本课程系列取名英译系列,是录制人员参考国外英文原版经典教程,结合中国人的习惯录制而成。希望能够给大家以帮助。从这里开始虚幻4系列教程,是Unreal的官方发布的入门教学,非常经典,是学习Unreal的佳入口。

    2377 人正在学习 去看看 杨石兴

unreal GIS 模块

unreal4 源代码模块

自从unreal4 开源以来,osg ogre 渐渐不能用来吃饭,于是本着听人劝吃饱饭的思想,转头unreal门下,继续为混口饭事业,投身革命。可是unreal的c++编程基本没有什么例子可看,只好自己从头做起。

  1. 开发者驱动
  2. 编辑器
  3. 工程目录
  4. 基础框架代码
  5. 第三方库

在这里插入图片描述
这个是文档目录,代码量难以阅读,决定从以下三方向入手,第一次写文字,真心不容易。
1.案例编写使用unreal4 的普通界面搭建自定义三维场景 介绍 editor层的基础代码
2.添加GIS地图属性信息 介绍 驱动层的基础代码
3.程序化植物合成 介绍 与unreal基础平台结合
以后会陆续跟新到这里
推荐大家使用 阿里云 https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=ic4sfgeu

2017-04-27 17:23:40 intel_news 阅读数 698
  • 从这里开始虚幻4-Editor介绍 v4.18

    本课程系列取名英译系列,是录制人员参考国外英文原版经典教程,结合中国人的习惯录制而成。希望能够给大家以帮助。从这里开始虚幻4系列教程,是Unreal的官方发布的入门教学,非常经典,是学习Unreal的佳入口。

    2377 人正在学习 去看看 杨石兴

内容

布料模拟
禁用布料模拟
Unreal Physics 统计
细节级别
布尔转换
遮挡剔除转换
组合/Set Piece 转换
使用 Set Piece 转换
布料模拟

逼真的布料运动可大幅提升游戏的视觉沉浸感。 使用 PhysX* Clothing* 是实现这一目标的一个方法,无需手工绘制动画。 将这些模拟整合到 Unreal Engine* 4 中非常容易,但该流程需占用较多 CPU,因此最好了解模拟的性能特征及优化方式,

禁用布料模拟

在 Unreal 中,布料模拟位于相应的关卡,无论是否可见。 优化可防止该风险。 优化模拟布料时请勿依赖 Disable Cloth 设置,因此它仅在构建中有用,在游戏进行时毫无用处。

Unreal Physics 统计

为更好了解布料模拟及其对游戏和系统的影响,我们可在 Unreal 中使用控制台命令 Stat PHYSICS。

在命令行中输入 Stat PHYSICS,然后会出现物理结构表覆盖(图 1)。 删除它请在控制台中输入相同命令。
图片描述
图 1. 物理结构覆盖表。

尽管有大量信息可用,我们还存在两方面(Cloth Total 和 Cloth Sim)担忧。

Cloth Total 表示场景中的布料绘制总数,Cloth Sim(模拟)表示当前模拟的活跃布料网格数量。 确保这两个数目处于目标平台的合理水平内,有助于防止处理布料造成 CPU 过载和帧速下降。 通过在该水平中添加更多布料网格,CPU 一次可处理的模拟数量便显而易见。

细节级别
在创建骨架网格并在其中附加一个顶点布料文件时,布料模拟将始终与该网格细节级别 (LOD) 的零值关联。 如果网格的 LOD 0 被禁用,布料模拟将不再发生。 为发挥其作用,我们可创建与 LOD 0 完全相同的 LOD 1(减去布料顶点文件),并将其用作转换,无论是否使用布料模拟(图 2)。
图片描述
图 2. 细节级别信息。

布尔转换

既然已有转换,我们可设置简单的蓝图控制它。 通过创建事件(或函数),我们可在模拟布料 (LOD 0) 和不模拟布料之间使用布尔转换,实施分支。 该事件可在输入的触发器上调用,以开始在下一个区域模拟布料网格,并在玩家离开该区域时再次调用,以停止模拟或任何数量的方法,取决于游戏关卡。
图片描述
遮挡剔除转换

如果希望采用更自动化的方法,可将遮挡剔除用作交换变量。 为此,调用“Was Recently Rendered”函数,并返回转换分支(图 4)。 这会在对象不再被渲染时阻止布料模拟。
图片描述
图 4. 转换蓝图中的”Was Recently Rendered”函数。

该方法的问题在于模拟恢复启动时发生的模拟重置。 如果布料网格与模拟时显著不同,玩家将始终看到这种转换。 为降低这种情况发生的概率,可通过导入设置扩大网格边界。 然而,这也意味着故意渲染玩家看不到的对象,因此请确保其有助于满足游戏的渲染需求。

解决此问题的一个关卡设计方法包括确保所有动态布料网格(如旗帜)与风处于同一个方向。

我们可以使用…查看全文
了解更多相关内容,请关注CSDN英特尔开发专区

Intel技术双周刊已全面开启:订阅请点击这里

2016-07-08 19:17:22 shangguanwaner 阅读数 6992
  • 从这里开始虚幻4-Editor介绍 v4.18

    本课程系列取名英译系列,是录制人员参考国外英文原版经典教程,结合中国人的习惯录制而成。希望能够给大家以帮助。从这里开始虚幻4系列教程,是Unreal的官方发布的入门教学,非常经典,是学习Unreal的佳入口。

    2377 人正在学习 去看看 杨石兴

Unreal Engine 4 水面模拟实现



一般游戏里水面的模拟都是实用动态的材质来模拟,效果会比较单调,而且无法实现动态的水面涟漪。如果需要更真实的效果,一种是做基于网格的模拟,一种是像Nvidia的Flex里面那种基于大量粒子来做,后者太占用资源,当然好处是,能够实现更为复杂的效果,比如一滴水从高处落下后,在水面形成的皇冠效果。

笔者在UE4中实现了前一种基于网格的水模拟,纯CPU实现,如果放到GPU中去计算,效率可以有更大的提升。

效果如下:


测试场景和插件,从这里下载

链接:http://pan.baidu.com/s/1kVxvbt9 密码:737r

2015-07-02 19:38:32 Neil3D 阅读数 3967
  • 从这里开始虚幻4-Editor介绍 v4.18

    本课程系列取名英译系列,是录制人员参考国外英文原版经典教程,结合中国人的习惯录制而成。希望能够给大家以帮助。从这里开始虚幻4系列教程,是Unreal的官方发布的入门教学,非常经典,是学习Unreal的佳入口。

    2377 人正在学习 去看看 杨石兴


Unreal Engine 4发布好长好长时间了,直到最近才有时间仔细去看一下。

TimSweeney老大一句话“IF YOU LOVE SOMETHING, SET IT FREE”,原来需要几十万授权金才能拿到的东西,就从$19,变成免费了,而且开源。作为一个国际顶尖的引擎,能走出这一步,对我等普通开发者真是福音啊。如此的牛X,再加上开源,相信Unreal Engine 4会火起来的,你看看最近E3上的产品展示也能感觉到。不过,Unreal的定位毕竟是“国际顶尖”,而非Unity3D那样的“开发大众化”,所以上手是有一定难度的。

下面我把对Unreal Engine 4的初步印象总结一下,特别针对像我一样有Unreal Engine 3的同学,希望更多的同学来已经学习Unreal。


UnrealScript去掉了

开发语言上最大的变化,莫过于把UnrealScript去掉了。
UnrealScript吧,当年来看还是一个非常NB的东西,要知道Unreal一代发布是1998年的事儿,而JAVA语言也就是95年才发布的。据说Tim Sweeney在开始设计Unreal的时候曾经考虑过使用Java作为上层语言,不过那时候Java还不成熟,所以他参考Java,实现了这个一个面向对象的,单根继承的脚本语言。不过,随着时间流转,Epic似乎并没有花太大的力气去演进UnrealScript。在Unreal Engine 3的时代,它确实显得有点老旧了,书写起来比一些现代语言确实有很多不方便的地方。所以,去掉就去掉吧。不过,值得注意的是,官方也留出了整合其他脚本语言的接口,例如LUA。


C++11

底层很多基础代码看上去有很强的亲切感,底层架构设计思路沿用了许多。底层依然是使用C++,不过用了很多C++11的特性,代码看上去简洁了不少。
项目的编译、构建使用UnrealBuildTool,这应该是从3代延续过来;另外,就是增加了一个UnrealHeaderTool工具,猜想是根据UCLASS,UPROPERTY等宏,生成自定义反射信息用的,具体的还待进一步研究。


Blueprint Visual Scripting

据说这是UE4最牛X的改进了。看了看,原来是Kismet的延伸,连源代码很多都是UKismentXXX那一套。UE3里面的Kistmet只限于在一个关卡中使用,而Blueprint扩展了。关卡可以有唯一的一个Level Blueprint,相当于原来的Kismet;另外增加了Blueprint Class,大概就是用Blueprint创建自定义的Actor、Pown之类的,由于有了这个功能所以原来的Archetype顺带也就被替代了。其实,作为老一代屌丝Coder,我一直对Kismet那种表达式层级可视化编程,一直不太感冒(像Unity的PlayMaker那样,提供更高层级抽象的可视化工具更好)。不过,既然是UE4主推的个东东,还是得看看。
不过,总体上给Designer一套可视化编程的东西,让他们自己实现一些关卡逻辑、游戏规则之类的,还真是一个特别好的方法。当然,我们这些Coder的工作还是不会丢掉的,例如游戏框架,游戏一些底层功能、常用模块还是要C++写好(或者使用LUA脚本?),封装给Blueprint来使用的。


AnimTree哪去了

UE3的AnimTree给我震撼太大了,所以特别关心UE4的动画系统。看了一下,貌似被分解成了BlendSpace和AnimGraph。
  • BlendSpace
    好比说“站立、走、跑”这三个动作,在UE3的AnimTree里面是有一个特定的node来混合的,根据移动速度不同。在UE4里,则需要创建一个BlendSpace1D资源,然后暴露出Speed参数。
  • AnimBlueprint
    使用Blueprint,AnimGraph,状态机等等控制角色的动画,怎么看上去和Unity的Mecanim有点像呢,唉~
看来AnimTree是真的不见了,很遗憾,因为我觉得那个使用树形结构来抽象的动画系统,实在是非常清晰而且强大。

渲染系统

基于物理的渲染(PBR:Physically-Based Rendering)效果真的是太NB了,Unity5虽然也是PBR,好像比UE4还是略逊一筹啊!这个无需多言了,各种DEMO视频大家都看了不少了。渲染流程也完全走延迟渲染了。但多线程渲染,SceneProxy、Material之类的基础架构没怎么变。

Behavior Tree

这个东西好像在国外的游戏AI领域这几年挺流行了,是个很高大上的东西,UE4直接做了,太好了。

另外,还有很多重大改进,例如Package,资源导入,增加插件支持等,这里就不一一细说了。推荐看一下官网的文章吧,作为本文的补充偷笑

unreal

阅读数 239

Unreal里的动画

阅读数 1623

没有更多推荐了,返回首页