基于虚幻4引擎的长白山虚拟现实场景地形制作

2020-01-07 10:43肖巍冯时王选遥
关键词:关卡虚幻长白山

肖巍,冯时,王选遥

(1.长春师范大学 教育学院,长春 130032;2.吉林大学 计算机科学与技术学院,长春 130012)

虚拟现实(VR)技术作为一门新兴的综合性信息技术,在很多领域都发挥着不可或缺的作用[1]。虚拟现实技术应用在文化、旅游方面是国家近些年提倡的“艺术与科技结合”的主要表现手段之一[2]。长白山是东北文化旅游最强IP之一,借助科技手段打造长白山虚拟现实文化旅游艺术体验平台,既可实现长白山自然、人文以及历史景观的数字化游览,又可以作为宣传推广东北文化旅游的数字化工具,无论从文化传播推广上还是促进旅游产业发展上都具有非常重要的意义。

1 虚拟现实体验平台介绍

长白山虚拟现实体验平台主要使用虚拟现实互动技术,在显示层面使用基于次世代游戏引擎标准的贴图和模型生成技术,目的是从视觉效果上最大程度还原长白山旅游景区的自然风景效果。虚拟现实需要借助引擎实现最终显示结果,制作流程上采取次世代游戏的方法实现:制作脚本-执行脚本-质量监控机制(技术标准)-人员落实-项目时间表-小规模反馈与修正-大规模制作。该虚拟现实体验馆由音乐(音效)、视觉显示、实时互动三个并联部分构成,在初期实施过程中,分别实现,互不干扰,各部分趋于完成时将三部分整合到一起进行调整。

虚拟现实体验平台在构建自然环境的过程中,主要使用写实性的视觉呈现方法,视觉还原部分使用基于三维扫描技术的互动式建模方法(Interactive Modeling Method Based on Scanning Tech),简 称IMM-BST[3]。该方法综合了扫描模型生成法和三维游戏的手动模型生成法,是现有各种建模方法中的首选。首先,对全景地貌,使用航拍技术配合地质等高线方法生成置换/高度贴图(Displacement Map),再使用换算方法将贴图的黑-灰-白像素以低-中-高(阈值)的形式赋予多边形模型,模型上的网格顶点与黑灰白像素一一匹配对应,而生成全面广袤的地形。其次,对于植被与动物,采取手动建模+数字化贴图的形式制作。最后,把制作好的地形和植被与动物以“模板素材”的方式输入到引擎中,在引擎中进一步构建长白山风光,直到最终封包、发布。

2 地形制作方法

长白山北区地形较为复杂,在靠近山脉处多为玄武岩等材质,北坡景区主要集中于长白山北麓的谷地中,自北向南逐步升高,上升趋势较缓。但在长白山北坡瀑布处有明显的高低落差。地形景区分布从北向南海拔依次为:地下森林、绿渊潭、小天池、长白山温泉、盘山公路、长白山北坡瀑布、天池。

虚拟现实的地形构建是整个平台项目实施的关键,本文使用现实卫星数据制作长白山区的高度图,并最终在虚幻4引擎中实现用户体验效果。整体地形的制作步骤:搜集资料,整理高程图(提取灰度图作为置换贴图的基础)——配合等高线图进行局部修正——进行实地勘察——在虚幻中将高度图生成地形——对比图片、影片构建地形。

2.1 地形数据处理

地形是自然界最复杂的景物之一,在虚拟现实中,三维真实感地形的绘制一直是国内外图形学,CG娱乐产业领域关注的热点[4]。地形的模拟可以分为两类:真实地形与模拟地形[5]。真实地形是现实世界中真实地形的再现,具有非常高的真实度,必须采用真实世界中的具体数据来构造,这时多采用数字高程模型(Digital Elevation Model,DEM)[6],其本质是在对数字地面模型的一种地形分量进行考虑。

本平台项目主要考察长白山地区的景区旅游资源,因此对于现实场景的还原度就是本项目的制作标准。地形数据的搜集分为宏观卫星数据搜集(GIS图形搜集+等高线位图、多地图对比)和微观实地踏查数据。项目所需长白山全景高程DEM图片,顺时针分为ABCD4个点,A点坐标为北纬42°04′53.71 ″;东经127°07′51.63 ″,B点坐标为北纬42°04 ′53.71 ″,东经127°07′24.64″,C点坐标为北纬41°58′40.71″,东经127°59′51.63″,D点坐标为北纬41°58′40.71”东经127°07 ′24.64 ″,该坐标可把长白山脉及北麓所有景区收入其中。

对于DEM数据的拼接,三维地形表面工具可在不规则空间点的基础上产生三维地形表面[7],它要求所输入的数据必须具有X、Y、Z值,即经度、纬度和海拔高度,应用TIN插值方法,所输出的是一个连续的栅格图像文件(ERDASIMAGINE系统的DEM文件),每一个已知Z值的空间点在输出的地形表面上保持Z值不变,而没有Z值的空间点,其输出表面的Z值是基于其周围的已知点插值计算获得的。将数据补充方法作为距离加权内插法,对各不确定点数值实施预测,通过近邻的已知点数值实施加权计算,获取不确定点的数值,基于距离获取所给的权重:

式中,W(di)为权函数;zi表示第i个已知点的数量;di为i点与不确定点间的距离。临近离散点同不确定点间的分布情况不同,对f(x,y)产生不同的干扰作用。W(di)等于1/di2是最佳结果,di的平方的反比决定了W(di) 值的高低[8]。

ARCGIS作为一个可伸缩的平台,为个人用户也为群体用户提供GIS的功能,使用该平台可得到应用于虚幻4引擎的高度图,置换地形数据。本文使用国家综合地球观测数据共享平台一号卫星的数据,使用ArcObjects组件式GIS开发技术,通过ARCGIS整合GIS数据,在软件内部最终转换DEM高程图为灰度位图。灰度图的精度只对于山峰等凸起处的显示起主要作用,对于谷底置换的高度不佳。为此,就需要等高线图比较和根据实地探查再进行修正。

虚拟现实体验平台是基于正常人视角的漫游项目,需要反复多次去长白山调研,拍摄大量照片和素材作为后期制作参照。为了进一步提升地形精度,制作团队分别于春、夏两季4次上山采集。春季采集地形可在无积雪和树叶遮挡的情况下拍摄山体起伏照片,夏季采集地形可记录植被密度,查看实际环境中的遮挡关系,为划分关卡做基础。

长白山区的地理位置和地形较为敏感,无法通过卫星数据获得全部旅游地形信息,实地考察地形可为后期数字化地形构建的提供重要参考依据。因此,团队使用经纬仪交汇法、测距导线法,配合GPS测量手动绘制地形图,得到实地数据。

为了校准数据,可将ARCGIS的灰度图数据导入World Creator2软件,配合实地勘察数据手动调整。World Creator2是基于细分算法的实时地形生成软件,高度图在该软件中作为多边形调节和预览。根据比例尺对地形进行定点调整,可实时监测每个点的高度数据,调节过程如图1-图4所示。图1是ARCGIS中生成灰度图所置换的地形高度,为未手动校准的地形,该地块的海拔高度存在一定误差,图2为使用World Creator2手动校准过的地形。

图1 未手动校准的地形

图2 使用World Creator2手动校准过的地形

将在World Creator2中调节后的多边形重新输出为灰度图导出,重新置换地形高度。对比结果,图3为制作的灰度图在World Creator2中的显示效果,精度为1∶50 000,图4为谷歌地球的效果,精度为1∶250 000。

图3 1∶50 000精度灰度图

图4 1∶250 000精度灰度图

2.2 地形数据导入

虚幻4的场景地形并非是简单的多边形,其基于多边形显现和优化原理[9],但为了达到最佳显示效率,虚幻引擎对场景地形做了一定的优化并制定了一系列规则。

如果按照1∶1还原地形,同时又为了节省计算机现实资源,虚幻4使用“Level”把整块地形划分为几部分。对于超大地形来说,用户在漫游时(指用户视角身处场景当中,非俯视),目力所及的空间或被山脉遮挡,或被植被遮挡,没有必要整体显示全部地形。这样,虚幻引擎就可以指定隐藏和显示的部分。如对一块Landscape_A的正方形场景地形,其占地面积为81平方公里,按照1∶1比例还原。为了节约加载速度,把其平均分为3×3段,这样每个地形的边长就是9公里。整个场景共分为9部分,每一部分可以作为一个独立显示的关卡进行分别加载,那么每一个关卡就是9平方公里。把关卡按照引擎可读取的X,Y方向进行坐标轴分布,分别命名为Landscape_A_X0_Y0,依此类推,直到Landscape_A_X2_Y2。假设用户的出生点在Landscape_A_X0_Y0关卡中,如果该场景中存在山脉、植被、高楼或环境雾等具有遮挡视线作用的物体存在,那么理论上说,用户是不可能看到Landscape_A_X2_Y2这么远的距离。因此,只需加载Landscape_A_X0_Y0和与之临近的Landscape_A_X0_Y1、Landscape_A_X1_Y1、Landscape_A_X1_Y0。

虚幻4引擎对于外部地形数据有着严格的要求和标准。对于本项目来讲,地形功能下的“Scale”选项下的Z值、“Section Size”、“Section per Component”、“Number of Component”、“总体分辨率”、“总组件”参数,它们制约了外部导入地形的精度和比例大小,也决定了整体读取速度和漫游体验效果。在虚幻4的地形编辑器中,从外部导入的地形依据节省显示资源的原则,需要将之被划分为几个Component,即地形组件,其作用是分割整块地形,便于为关卡划分提供便利。如果该场景地形中并无其余“静态网格”多边形组件,则地形是该场景中唯一组件,则地形等于组件;如果将之分为不同组件,则地形关卡等于每个组件。

用户还可以对每个地形组件中分段的种类进行进一步细分。引擎提供了1×1和2×2个分段。虚幻4地形的优化方法基于LOD技术。如果把一个场景划分为4个组件,每个组件下再划分为4个分段,每个分段中所提供的多边形支持就可以通过1×1和2×2进行选择。1×1个分段意思是每个组件的多边形数量等于分段的数量,那么整个地形组件多边形数量是16,2×2的意思是每个组件之中最大可被放入4个多边形,最小可放入1个多边形,那么整个地形组件多边形的数量就是4-16。如果整个场景占地面交较小,为了提升显示精度,则可以使用1×1,本项目场景较大,为了提升加载速度,使用2×2个动态分段。

本项目基于实际高度图进行置换导入,对于外部高度图,虚幻4引擎要求地形必须为偶数顶点,按照分段的最小顶点数量计算,1个分段必须具备9个多边形,共16个顶点,那么虚幻4引擎最优显示的组件、分段、顶点数量的最小可识别单位计算方式为:1个地形具有2×2个分段,每个分段有12×12个多边形,整体有13×13个顶点。那么整体的地形尺寸就可以依据以下公式类推:

式中,S为虚幻4引擎整体地形顶点数量,该值可确定整个场景地形大小;Sq为每个分段占有四边形的数量;Cs为每个组件的分段数量;C为组件数量。

虚幻4引擎按照灰度图中像素点的灰度值计算生成地形高度Z值。在读取灰度图时,虚幻4引擎把灰度共分为512级,即高低落差可置换512个Z方向单位,其中黑色置换为最低点,灰色不置换,白色置换为最高点。若按米为单位换算,则黑色像素所在位置为-256米,白色像素所在位置为256米,灰色像素所在位置不进行高度置换,如图5所示。如果不改变虚幻4引擎的Z值,则引擎只能置换512米的高度落差。根据团队测量,长白山北景区内部最低点与最高点落差为1 500米左右,因此需要在虚幻4引擎中修改Z值,由默认的100改为293,才能与实际测量高度匹配,确保置换地形海拔高度正确。

图5 灰度图在虚幻4引擎中的地形高度值置换

2.3 地形关卡划分

对于长白山北麓地形,一次性加载全部地形数据关卡会占用大量系统资源,对于普通用户来说无法达成流畅体验。为此,本文使用三维游戏的制作方法,将大块地形划分为关卡(Level)分别读取。关卡在虚幻4中是一个十分宽泛的功能。用户可以把任意物体存放在其中,以备随时调用。本项目将关卡类别分为:植被、建筑、DrawCall、流体、地形。

为了缓解制作和读取压力,将地形拆分,使用流送方式建立关卡并分段读取信息的技术称之为World Composition。它旨在简化大型世界场景的管理。其目的之一是避免使用单一独立关卡存储流送信息,再就是它可以避免在超大地形上处理所有地形数据造成的效率低问题。持久关卡不存储任何流送信息,而是扫描文件夹并将找到的所有关卡视为流送关卡。每个流送关卡的信息存储在包头中,不用把关卡加载到内存中,World Composition就能读取这些信息。默认情况下,除持续关卡之外的所有关卡都会在World Composition中卸载其中地形按照1:1还原,北麓共占地面积127×127平方公里,划分为36(6×6)个独立关卡,每个关卡为4 033×4 033个像素点,如图6所示。

图6 基于高度图的长白山北麓地形关卡划分

经过计算与压力测试,项目的每个独立地形关卡顶点为4 033×4 033,每段有63个多边形,每个组件中分为2×2个段数,每个组件的大小是126×126,共分为32×32个组件。这样就可以把北麓的占地面积小的绿渊潭场景和小天池场景放在一个独立地形关卡中,便于后期整体隐藏。

按照地形与像素面积1∶1计算,每个关卡为4.3×4.3公里。关卡的占地面积可以容纳小型场景,如小天池,绿渊潭。而对于长白山天池等大型场景则需要一次性加载所有关卡资源,并同时卸载最北侧的3个场景:地下森林、绿渊潭和小天池,它们由于距离过远,而且为了节省资源,此时无需显示。

3 结语

要得到长白山区相对更加精确的地形,则可以选择无人机飞行采集数据,之后再精确建模。虚幻4引擎可以做到复制现实中的一草一木,并使用PBR渲染出图,理论上说用户在虚拟世界的体验已经与现实世界无异。但碍于当下的VR外部设备和显示技术,即使按照现实中复原场景,也无法实现流畅的实时预览效果。随着8K技术的普及,VR外围设备还有一段路要走,稳定帧数、高分辨率和传输速率都有待提升[10]。

地形构建只是构建场景中的第一步,并非场景全部,如要达到基本真实的用户体验,还要配合静态网格和后期效果处理与优化才能得到较好的效果。

猜你喜欢
关卡虚幻长白山
本期主题
——五月,是诗的样子!
雨中(外二首)
春天越来越虚幻
漫步四季,探索不一样的长白山
疯狂冒险岛
长白山册封始于金代
《头号玩家》里的虚幻与现实
“互联网+”下的长白山休闲旅游
岚雾情吻长白山
文艺范