CN113436307B - 基于osgEarth影像数据到UE4场景的映射算法 - Google Patents
基于osgEarth影像数据到UE4场景的映射算法 Download PDFInfo
- Publication number
- CN113436307B CN113436307B CN202110992836.4A CN202110992836A CN113436307B CN 113436307 B CN113436307 B CN 113436307B CN 202110992836 A CN202110992836 A CN 202110992836A CN 113436307 B CN113436307 B CN 113436307B
- Authority
- CN
- China
- Prior art keywords
- osgearth
- engine
- camera
- under
- terrain rendering
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/05—Geographic models
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Remote Sensing (AREA)
- Processing Or Creating Images (AREA)
- Image Generation (AREA)
Abstract
本发明公开一种基于osgEarth影像数据到UE4场景的映射算法,步骤为:S1:初始化osgEarth设置其视口,加载影像数据;S2:设置Unreal Engine的相机参数,S3:经过osgEarth裁剪,判断当前视野是否存在影像数据,若是则对影像数据进行动态切分形成Tile集合;否则直接返回;S4:若存在Tile集合,则循环访问Tile集合,获取参数,构建TileEx;S5:通过TileEx进行Tile顶点坐标转换;S6:通过TileEx进行纹理转换;S7:生成Unreal Engine下的自定义UMeshComponent,将UMeshComponent传入渲染线程,流程结束。
Description
技术领域
本发明涉及三维模型索引创建技术领域,具体涉及一种基于osgEarth影像数据到UE4场景的映射算法。
背景技术
数字样机技术使用计算机模型来代替真实物理样机,广泛应用在产品生命周期的各个阶段,能够大幅减少产品设计、制造、维护的成本,具有重要的应用价值;UnrealEngine是一款由EpicGames开发的图形引擎,提供了强大的渲染能力、丰富的人机交互功能和广泛的虚拟外设支持,基于UnrealEngine能够大大降低数字样机产品的开发周期和建设成本。
电子海图是为适用航海需要而绘制的包含海域地理信息和航海信息的一种数字化的专题地图,符合国际标准的电子海图数据统称为S57电子海图。传统的S57电子海图都是通过二维的方式来显示,但随着三维可视化技术的发展,三维电子海图的需求越来越大。目前市面上能够加载三维电子海图的厂家数量很少,仅有的几家都采用的是将预先生成好的海图数据通过切片的方式加载到三维地球上,这种方法的弊端有两点,首先是每一份海图数据在加载显示之前都需要做数据的预处理,不仅繁琐,而且生成的瓦片金字塔数据量大,文件迁移也十分不便。其次生成好的数据也不具有灵活性,无法动态显隐指定图层。
OsgEarth是一款开源的三维数字地球引擎,由于它本身兼具地理和三维特性,因此在GIS(地理信息系统)行业有着广泛的应用。其中最典型的应用就是地理数据的加载与显示,比如加载全球高分辨率影像数据等栅格数据或者全国行政区划等矢量数据。矢量数据通常包括点、线、面三种类型,对于点数据或者线数据,OsgEarth的加载效率通常可以满足应用要求,但是在面数据的处理上,现有的技术加载速度却非常缓慢。
随着“智慧城市”、“数字孪生”概念的提出,如何高效、快速的构建数字城市场景成为该领域研究热点。Unreal Engine游戏引擎具有强大的“场景表现力”,一方面通过实时动态的渲染,可以构建丰富精细的场景表现;另一方面强大的物理引擎可以真实模拟现实世界的运行规则,这些技术也正是“数字孪生”迫切需要的。“数字孪生”需要大量地理数据支撑,但Unreal Engine并不具备在地理数据的存储、交换、业务性分析层面的优势,而osgEarth能够实现高效处理加载调度地理数据,如果将两者对优势结合在一起,在数据获取后,打通从数据管理到场景构建再到可视化表达的所有技术环节,形成一套高效的技术解决方案,可以大大推动“数字孪生”的发展。但目前没有基于osgEarth影像瓦片数据到Unreal Engine场景转换的相关研究;因此,我们提出一种基于地形渲染引擎osgEarth的影像瓦片数据到Unreal Engine场景的快速转换方法,提高“数字孪生”场景搭建效率。
发明内容
本发明主要解决的问题是提供一种基于osgEarth影像数据到UE4场景的映射算法,提高“数字孪生”场景搭建效率。
为了解决上述技术问题,本发明采用的技术方案是:该基于osgEarth影像数据到UE4场景的映射算法,具体包括以下步骤:
S1:初始化地形渲染引擎osgEarth,根据Unreal Engine游戏界面大小,设置地形渲染引擎osgEarth的视口大小,通过地形渲染引擎osgEarth加载TIF影像数据;
S2:根据步骤S1中获取地形渲染引擎osgEarth的相机参数,设置Unreal Engine中的相机参数,使Unreal Engine中相机与地形渲染引擎osgEarth的相机保持同步,完成相机转换;
S3:根据步骤S2中osgEarth平台的相机的参数,经过地形渲染引擎osgEarth的裁剪,判断当前视野中是否存在影像数据,若存在,则对影像数据按照四叉树方法进行动态切分,形成Tile集合;若不存在,则直接返回,流程结束;
S4:若在视野中存在Tile集合,则通过自定义的Tile访问器,循环访问Tile集合,获取Tile集合的模型矩阵、顶点坐标、三角面顶点索引、纹理坐标、纹理矩阵和纹理数据,构建地形渲染引擎osgEarth和Unreal Engine的中间交换格式瓦片交换TileEx;
S5:通过步骤S4中生成的中间交换格式瓦片交换TileEx,进行Tile顶点坐标转换;
S6:通过步骤S4中生成的中间交换格式瓦片交换TileEx,进行纹理转换;
S7:通过步骤S4中生成的中间交换格式瓦片交换TileEx,生成Unreal Engine下的自定义UMeshComponent,将UMeshComponent传入渲染线程并输出,流程结束。
作为本发明的优选技术方案,所述步骤S2中的相机转换中的相机的坐标转换的具体步骤为:
S21-1:获取地形渲染引擎osgEarth中相机的视场角、远近裁剪面,并将视场角、远近裁剪面设置到Unreal Engine的相机;
S21-2:获取地形渲染引擎osgEarth相机的位置、视点,设置Unreal Engine中相机的位置;因osgEarth中获取的相机位置和视点坐标为地形渲染引擎osgEarth下的世界坐标,因此坐标转换采用以下方法:
(X,Y,Z)UE=(X,Y,Z)OE*ModelMatrixOE*T*S;
其中(X,Y,Z)UE表示Unreal Engine下的世界坐标,(X,Y,Z)OE表示地形渲染引擎osgEarth下坐标数据,ModelMatrixOE表示地形渲染引擎osgEarth下模型到世界坐标的转换矩阵;
T表示地形渲染引擎osgEarth下的转换矩阵,
S表示地形渲染引擎osgEarth下缩放矩阵:
S21-3:对步骤S22中获取的osgEarth中相机视点,采用同样的坐标转换,转换到Unreal Engine的坐标系下,根据转换后的相机位置、视点,计算Unreal Engine下相机前向量、右向量和上向量,归一化后,计算Unreal Engine下相机的矩阵,设置Unreal Engine下相机的姿态。
作为本发明的优选技术方案,所述步骤S2中的相机转换中的相机的视场角转换的具体步骤为:由于地形渲染引擎osgEarth中采用垂直方向视场角,Unreal Engine中采用水平方向视场角,因此需要对视场角进行转换,转换方法为:
tan(hFOVUE/2)=tan(vFOVOE/2)*aspect;
aspect=width/height;
其中tan为三角正切函数,hFOVUE为Unreal Engine下的视场角,vFOVOE为osgEarth下的视场角,aspect表示视口比率,width表示视口宽度,height表示视口高度;计算后通过调用Unreal Engine下APlayerCameraManager类的SetFOV函数传递到设置Unreal Engine相机的视场角。
作为本发明的优选技术方案,所述步骤S2中的相机转换中的相机的姿态转换的具体步骤为:S22-1:获取osgEarth中相机的位置CameraPosition、相机镜头对准的物体的世界坐标CenterPosition、相机上向量UpVector;
S22-2:将osgEarth相机CameraPosition、CenterPosition、UpVector通过(X,Y,Z)UE=(X,Y,Z)OE*ModelMatrixOE*T*S转换到Unreal Engine下;
其中(X,Y,Z)UE表示Unreal Engine下的世界坐标,(X,Y,Z)OE表示地形渲染引擎osgEarth下坐标数据,ModelMatrixOE表示地形渲染引擎osgEarth下模型到世界坐标的转换矩阵;
T表示地形渲染引擎osgEarth下的转换矩阵,
S表示地形渲染引擎osgEarth下缩放矩阵:
S22-3:计算Unreal Engine下前向量、右向量和上向量,公式为:
CameraFrontUE=CenterPositionUE-CameraPositionUE;
CameraRightUE=UpV ectornUE-CameraFrontUE;
其中CenterPositionUE为Unreal Engine下相机镜头对准的物体的世界位置坐标,CameraPositionUE为Unreal Engine下相机位置坐标,CameraFrontUE为Unreal Engine下相机的前向向量,UpVectorUE为Unreal Engine下相机上向量,CameraRightUE为UnrealEngine下相机右向量;
S22-4:通过前向量、右向量和上向量计算Unreal Engine下相机的矩阵,计算方法直接使用Unreal Engine下的FMatrix类:
FMatrix rotateMatrix(NCameraFrontUE,
NCameraRightUE,
NUpVectorUE,
FVector(0,0,0));
其中NCameraFrontUE表示归一化后的前向量,NCameraRightUE表示归一化后右向量,NUpVectorUE表示归一化后上向量;通过CameraRotatorUE=rotateMatrix.Rotator();最终获取Unreal Engine下相机的姿态信息。
相机转换主要包括内容:相机位置、姿态转换,视场角、视口设置等。相机位置的转换方法同步骤S5的顶点坐标的转换方法;获取Unreal Engine视口的左上角坐标、宽度和高度并设置到osgEarth中的视口。
作为本发明的优选技术方案,所述步骤S5中的Tile顶点坐标转换的方法具体包括以下步骤:
S51:由于地形渲染引擎osgEarth与Unreal Engine属于不同平台,两者之间坐标体系不同,因此,将两平台之间以世界坐标建立统一的标准;本发明中osgEarth输出的坐标均为世界坐标;在地形渲染引擎osgEarth中,采用坐标系是右手坐标,其中X轴由屏幕左到右增大,Y轴由屏幕外向内增大,Z轴由屏幕下向上增大;Unreal Engine中采用左手坐标系,其中X轴由屏幕外向内增大,Y轴由屏幕左到右增大,Z轴由屏幕下向上增大;因此两平台间坐标转换方法为:地形渲染引擎osgEarth与Unreal Engine两平台间的坐标转换的公式为:
osgEarth:(X,Y,Z)→UnrealEngine:(Y,X,Z);
S52:由于地形渲染引擎osgEarth平台中坐标单位默认为米,Unreal Engine平台中的坐标单位默认为厘米,因此再进行坐标单位的转换,转换公式为:
(X,Y,Z)UE=(X,Y,Z)OE*ModelMatrixOE*T*S;
其中(X,Y,Z)UE表示Unreal Engine下的世界坐标,(X,Y,Z)OE表示地形渲染引擎osgEarth下坐标数据,ModelMatrixOE表示地形渲染引擎osgEarth下模型到世界坐标的转换矩阵;
T表示地形渲染引擎osgEarth下的转换矩阵,
S表示地形渲染引擎osgEarth下缩放矩阵:
作为本发明的优选技术方案,所述步骤S6中的纹理转换包括纹理坐标转换和纹理数据格式转换;具体步骤为:
S61:对中间交换格式瓦片交换TileEx进行纹理转换,纹理坐标转换的公式为:
TexCoor(U,V)UE=TexCoor(U,V)OE*TexMatrixOE;
其中,TexCoor(U,V)UE表示Unreal Engine中的纹理坐标,TexCoor(U,V)OE表示osgEarth中的纹理坐标;TexMatrixOE表示osgEarth中的纹理坐标矩阵;
S62:对中间交换格式瓦片交换TileEx进行纹理数据格式转换,纹理数据格式转换的公式为:Unreal Engine中可以通过宽、高和像素类型创建纹理,其像素类型有自己的分类,比如PF_R8G8B8A8、PF_DXT1、PF_A32B32G32R32F、PF_R32_FLOAT等;而osgEarth中没有对应的类型,要进行转换,根据地形渲染引擎osgEarth中纹理的数据类型和像素类型共同确定的公式为:
PixelFormatUE=DataTypeOE&&PixelFormatOE;
其中,PixelFormatUE表示Unreal Engine中的像素类型,DataTypeOE表示osgEarth中的数据类型,PixelFormatOE表示地形渲染引擎osgEarth中的像素类型。
作为本发明的优选技术方案,所述步骤S4中的定义瓦片交换TileEx的数据结构作为中间方式,瓦片交换TileEx包含以下变量:tileKey、parentKey、SCGeom、modelMatrix和SCTextures;其中SCGeom中包含瓦片坐标、三角面索引、法线,纹理坐标,SCTextures由多个SCTexture构成;SCTexture包括width、height、image、imgMatrix。
作为本发明的优选技术方案,所述步骤S6中进行转换的类型包括:
PF_R8G8B8A8=GL_UNSIGNED_BYTE&&GL_RGBA;
PF_R8G8B8A8=GL_UNSIGNED_BYTE&&GL_RGB;
PF_DXT1=GL_UNSIGNED_BYTE&&GL_COMPRESSED_RGBA_S3TC_DXT1_EXT;
PF_DXT5=GL_UNSIGNED_BYTE&&GL_COMPRESSED_RGBA_S3TC_DXT5_EXT;
PF_A32B32G32R32F=GL_FLOAT&&GL_RGBA;
PF_R32_FLOAT=GL_FLOAT&&GL_RED。
与现有技术相比,该基于osgEarth影像数据到UE4场景的映射算法具有以下有点:将osgEarth中的影像瓦片数据快速转到Unreal Engine场景下,打通地理数据到UnrealEngine中场景搭建的壁垒;结合Unreal Engine强大的场景表现能力和osgEarth地理数据高效调度优势,提高“数字孪生”场景搭建效率。
附图说明
图1为本发明基于osgEarth影像数据到UE4场景的映射算法的流程图。
具体实施方式
下面将结合本发明的实施例图中的附图,对本发明实施例中的技术方案进行清楚、完整的描述。
实施例:如图1所示,该基于osgEarth影像数据到UE4场景的映射算法(即基于地形渲染引擎osgEarth影像瓦片数据到Unreal Engine场景的快速映射算法),具体包括以下步骤:
S1:初始化地形渲染引擎osgEarth,根据Unreal Engine游戏界面大小,设置地形渲染引擎osgEarth的视口大小,通过地形渲染引擎osgEarth加载TIF影像数据;
S2:根据步骤S1中获取地形渲染引擎osgEarth的相机参数,设置Unreal Engine中的相机参数,使Unreal Engine中相机与地形渲染引擎osgEarth的相机保持同步,完成相机转换;相机转换主要包括内容:相机位置、姿态转换,视场角、视口设置等;相机位置的转换方法同步骤S5的顶点坐标的转换方法;获取Unreal Engine视口的左上角坐标、宽度和高度并设置到osgEarth中的视口;
所述步骤S2中的相机转换中的相机的坐标转换的具体步骤为:
S21-1:获取地形渲染引擎osgEarth中相机的视场角、远近裁剪面,并将视场角、远近裁剪面设置到Unreal Engine的相机;
S21-2:获取地形渲染引擎osgEarth相机的位置、视点,设置Unreal Engine中相机的位置;因osgEarth中获取的相机位置和视点坐标为地形渲染引擎osgEarth下的世界坐标,因此坐标转换采用以下方法:
(X,Y,Z)UE=(X,Y,Z)OE*ModelMatrixOE*T*S;
其中(X,Y,Z)UE表示Unreal Engine下的世界坐标,(X,Y,Z)OE表示地形渲染引擎osgEarth下坐标数据,ModelMatrixOE表示地形渲染引擎osgEarth下模型到世界坐标的转换矩阵;
T表示地形渲染引擎osgEarth下的转换矩阵,
S表示地形渲染引擎osgEarth下缩放矩阵:
S21-3:对步骤S22中获取的osgEarth中相机视点,采用同样的坐标转换,转换到Unreal Engine的坐标系下,根据转换后的相机位置、视点,计算Unreal Engine下相机前向量、右向量和上向量,归一化后,计算Unreal Engine下相机的矩阵,设置Unreal Engine下相机的姿态;
所述步骤S2中的相机转换中的相机的视场角转换的具体步骤为:由于地形渲染引擎osgEarth中采用垂直方向视场角,Unreal Engine中采用水平方向视场角,因此需要对视场角进行转换,转换方法为:
tan(hFOVUE/2)=tan(vFOVOE/2)*aspect;
aspect=width/height;
其中tan为三角正切函数,hFOVUE为Unreal Engine下的视场角,vFOVOE为osgEarth下的视场角,aspect表示视口比率,width表示视口宽度,height表示视口高度;计算后通过调用Unreal Engine下APlayerCameraManager类的SetFOV函数传递到设置Unreal Engine相机的视场角;
所述步骤S2中的相机转换中的相机的姿态转换的具体步骤为:S22-1:获取osgEarth中相机的位置CameraPosition、相机镜头对准的物体的世界坐标CenterPosition、相机上向量UpVector;
S22-2:将osgEarth相机CameraPosition、CenterPosition、UpVector通过(X,Y,Z)UE=(X,Y,Z)OE*ModelMatrixOE*T*S转换到Unreal Engine下;
其中(X,Y,Z)UE表示Unreal Engine下的世界坐标,(X,Y,Z)OE表示地形渲染引擎osgEarth下坐标数据,ModelMatrixOE表示地形渲染引擎osgEarth下模型到世界坐标的转换矩阵;
T表示地形渲染引擎osgEarth下的转换矩阵,
S表示地形渲染引擎osgEarth下缩放矩阵:
S22-3:计算Unreal Engine下前向量、右向量和上向量,公式为:
CameraFrontUE=CenterPositionUE-CameraPositionUE;
CameraRightUE=UpVectornUE-CameraFrontUE;
其中CenterPositionUE为Unreal Engine下相机镜头对准的物体的世界位置坐标,CameraPositionUE为Unreal Engine下相机位置坐标,CameraFrontUE为Unreal Engine下相机的前向向量,UpVectorUE为Unreal Engine下相机上向量,CameraRightUE为UnrealEngine下相机右向量;
S22-4:通过前向量、右向量和上向量计算Unreal Engine下相机的矩阵,计算方法直接使用Unreal Engine下的FMatrix类:
FMatrix rotateMatrix(NCameraFrontUE,
NCameraRightUE,
NUpVectorUE,
FVector(0,0,0));
其中NCameraFrontUE表示归一化后的前向量,NCameraRightUE表示归一化后右向量,NUpVectorUE表示归一化后上向量;通过CameraRotatorUE=rotateMatrix.Rotator();最终获取Unreal Engine下相机的姿态信息;
S3:根据步骤S2中osgEarth平台的相机的参数,经过地形渲染引擎osgEarth的裁剪,判断当前视野中是否存在影像数据,若存在,则对影像数据按照四叉树方法进行动态切分,形成Tile集合;若不存在,则直接返回,流程结束;四叉树方法是osgEarth平台自带的瓦片分割方法;
S4:若在视野中存在Tile集合,则通过自定义的Tile访问器,循环访问Tile集合,获取Tile集合的模型矩阵、顶点坐标、三角面顶点索引、纹理坐标、纹理矩阵和纹理数据,构建地形渲染引擎osgEarth和Unreal Engine的中间交换格式瓦片交换TileEx;所述步骤S4中的定义瓦片交换TileEx的数据结构作为中间方式,瓦片交换TileEx包含以下变量:tileKey、parentKey、SCGeom、modelMatrix和SCTextures;其中SCGeom中包含瓦片坐标、三角面索引、法线,纹理坐标,SCTextures由多个SCTexture构成;SCTexture包括width、height、image、imgMatrix;
S5:通过步骤S4中生成的中间交换格式瓦片交换TileEx,进行Tile顶点坐标转换;
所述步骤S5中的Tile顶点坐标转换的方法具体包括以下步骤:
S51:由于地形渲染引擎osgEarth与Unreal Engine属于不同平台,两者之间坐标体系不同,因此,将两平台之间以世界坐标建立统一的标准;本发明中osgEarth输出的坐标均为世界坐标;在地形渲染引擎osgEarth中,采用坐标系是右手坐标,其中X轴由屏幕左到右增大,Y轴由屏幕外向内增大,Z轴由屏幕下向上增大;Unreal Engine中采用左手坐标系,其中X轴由屏幕外向内增大,Y轴由屏幕左到右增大,Z轴由屏幕下向上增大;因此,地形渲染引擎osgEarth与Unreal Engine两平台间的坐标转换的公式为:
osgEarth:(X,Y,Z)→UnrealEngine:(X,Y,Z);
S52:由于地形渲染引擎osgEarth平台中坐标单位默认为米,Unreal Engine平台中的坐标单位默认为厘米,因此再进行坐标单位的转换,转换公式为:
(X,Y,Z)UE=(X,Y,Z)OE*ModelMatrixOE*T*S;
其中(X,Y,Z)UE表示Unreal Engine下的世界坐标,(X,Y,Z)OE表示地形渲染引擎osgEarth下坐标数据,ModelMatrixOE表示地形渲染引擎osgEarth下模型到世界坐标的转换矩阵;
T表示地形渲染引擎osgEarth下的转换矩阵,
S表示地形渲染引擎osgEarth下缩放矩阵:
S6:通过步骤S4中生成的中间交换格式瓦片交换TileEx,进行纹理转换;
所述步骤S6中的纹理转换包括纹理坐标转换和纹理数据格式转换;具体步骤为:
S61:对中间交换格式瓦片交换TileEx进行纹理转换,纹理坐标转换的公式为:
TexCorr(U,V)UE=TexCoor(U,V)OE*TexMatrixOE;
其中,TexCoor(U,V)UE表示Unreal Engine中的纹理坐标,TexCoor(U,V)OE表示osgEarth中的纹理坐标;TexMatrixOE表示osgEarth中的纹理坐标矩阵;
S62:对中间交换格式瓦片交换TileEx进行纹理数据格式转换,纹理数据格式转换的公式为:Unreal Engine中可以通过宽、高和像素类型创建纹理,其像素类型有自己的分类,比如PF_R8G8B8A8、PF_DXT1、PF_A32B32G32R32F、PF_R32_FLOAT等;而osgEarth中没有对应的类型,要进行转换,根据地形渲染引擎osgEarth中纹理的数据类型和像素类型共同确定的公式为:
PixelFormatUE=DataTypeOE&&PixelFormatOE;
其中,PixelFormatUE表示Unreal Engine中的像素类型,DataTypeOE表示osgEarth中的数据类型,PixelFormatOE表示地形渲染引擎osgEarth中的像素类型;
所述步骤S6中进行转换的类型包括:
PF_R8G8B8A8=GL_UNSIGNED_BYTE&&GL_RGBA;
PF_R8G8B8A8=GL_UNSIGNED_BYTE&&GL_RGB;
PF_DXT1=GL_UNSIGNED_BYTE&&GL_COMPRESSED_RGBA_S3TC_DXT1_EXT;
PF_DXT5=GL_UNSIGNED_BYTE&&GL_COMPRESSED_RGBA_S3TC_DXT5_EXT;
PF_A32B32G32R32F=GL_FLOAT&&GL_RGBA;
PF_R32_FLOAT=GL_FLOAT&&GL_RED。
S7:通过步骤S4中生成的中间交换格式瓦片交换TileEx,生成Unreal Engine下的自定义UMeshComponent,将UMeshComponent传入渲染线程并输出,流程结束。
以上所述仅为本发明的较佳实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种基于osgEarth影像数据到UE4场景的映射方法,其特征在于,具体包括以下步骤:
S1:初始化地形渲染引擎osgEarth,根据Unreal Engine游戏界面大小,设置地形渲染引擎osgEarth的视口大小,通过地形渲染引擎osgEarth加载TIF影像数据;
S2:根据步骤S1中获取地形渲染引擎osgEarth的相机参数,设置Unreal Engine中的相机参数,使Unreal Engine中相机与地形渲染引擎osgEarth的相机保持同步,完成相机转换;
S3:根据步骤S2中osgEarth平台的相机的参数,经过地形渲染引擎osgEarth的裁剪,判断当前视野中是否存在影像数据,若存在,则对影像数据按照四叉树方法进行动态切分,形成Tile集合;若不存在,则直接返回,流程结束;
S4:若在视野中存在Tile集合,则通过自定义的Tile访问器,循环访问Tile集合,获取Tile集合的模型矩阵、顶点坐标、三角面顶点索引、纹理坐标、纹理矩阵和纹理数据,构建地形渲染引擎osgEarth和Unreal Engine的中间交换格式瓦片交换TileEx;
S5:通过步骤S4中生成的中间交换格式瓦片交换TileEx,进行Tile顶点坐标转换;
S6:通过步骤S4中生成的中间交换格式瓦片交换TileEx,进行纹理转换;
S7:通过步骤S4中生成的中间交换格式瓦片交换TileEx,生成Unreal Engine下的自定义UMeshComponent,将UMeshComponent传入渲染线程并输出,流程结束。
2.根据权利要求1所述的基于osgEarth影像数据到UE4场景的映射方法,其特征在于,所述步骤S2中的相机转换中的相机的坐标转换的具体步骤为:
S21-1:获取地形渲染引擎osgEarth中相机的视场角、远近裁剪面,并将视场角、远近裁剪面设置到Unreal Engine的相机;
S21-2:获取地形渲染引擎osgEarth相机的位置、视点,设置Unreal Engine中相机的位置;因osgEarth中获取的相机位置和视点坐标为地形渲染引擎osgEarth下的世界坐标,因此坐标转换采用以下方法:
(X,Y,Z)UE=(Z,Y,Z)OE*ModelMatrixOE*T*S;
其中(X,Y,Z)UE表示Unreal Engine下的世界坐标,(X,Y,Z)OE表示地形渲染引擎osgEarth下坐标数据,ModelMatrixOE表示地形渲染引擎osgEarth下模型到世界坐标的转换矩阵;
T表示地形渲染引擎osgEarth下的转换矩阵,
S表示地形渲染引擎osgEarth下缩放矩阵:
S21-3:对步骤S22中获取的osgEarth中相机视点,采用同样的坐标转换,转换到UnrealEngine的坐标系下,根据转换后的相机位置、视点,计算Unreal Engine下相机前向量、右向量和上向量,归一化后,计算Unreal Engine下相机的矩阵,设置Unreal Engine下相机的姿态。
3.根据权利要求2所述的基于osgEarth影像数据到UE4场景的映射方法,其特征在于,所述步骤S2中的相机转换中的相机的视场角转换的具体步骤为:由于地形渲染引擎osgEarth中采用垂直方向视场角,Unreal Engine中采用水平方向视场角,因此需要对视场角进行转换,转换方法为:
tan(hFOVUE/2)=tan(vFOVOE/2)*aspect;
aspect=width/height;
其中tan为三角正切函数,hFOVUE为Unreal Engine下的视场角,vFOVOE为osgEarth下的视场角,aspect表示视口比率,width表示视口宽度,height表示视口高度;计算后通过调用Unreal Engine下APlayerCameraManager类的SetFOV函数传递到设置Unreal Engine相机的视场角。
4.根据权利要求2所述的基于osgEarth影像数据到UE4场景的映射方法,其特征在于,所述步骤S2中的相机转换中的相机的姿态转换的具体步骤为:S22-1:获取osgEarth中相机的位置CameraPosition、相机镜头对准的物体的世界坐标CenterPosition、相机上向量UpVector;
S22-2:将osgEarth相机CameraPosition、CenterPosition、UpVector通过(X,Y,Z)UE=(X,Y,Z)OE*ModelMatrixOE*T*S转换到Unreal Engine下;
其中(X,Y,Z)UE表示Unreal Engine下的世界坐标,(X,Y,Z)OE表示地形渲染引擎osgEarth下坐标数据,ModelMatrixOE表示地形渲染引擎osgEarth下模型到世界坐标的转换矩阵;
T表示地形渲染引擎osgEarth下的转换矩阵,
S表示地形渲染引擎osgEarth下缩放矩阵:
S22-3:计算Unreal Engine下前向量、右向量和上向量,公式为:
CameraFrontUE=CenterPositionUE-CameraPositionUE;
CameraRightUE=UpVectornUE-CameraFrontUE;
其中CenterPositionUE为Unreal Engine下相机镜头对准的物体的世界位置坐标,CameraPositionUE为Unreal Engine下相机位置坐标,CameraFrontUE为Unreal Engine下相机的前向向量,UpVectorUE为Unreal Engine下相机上向量,CameraRightUE为UnrealEngine下相机右向量;
S22-4:通过前向量、右向量和上向量计算Unreal Engine下相机的矩阵,计算方法直接使用Unreal Engine下的FMatrix类:
FMatrix rotateMatrix(NCameraFrontUE,NCameraRightUE,NUpVectorUE,FVector(0,0,0));
其中NCameraFrontUE表示归一化后的前向量,NCameraPightUE表示归一化后右向量,NUpVectorUE表示归一化后上向量;通过CameraRotatorUE=rotateMatrix.Rotator();最终获取Unreal Engine下相机的姿态信息。
5.根据权利要求2所述的基于osgEarth影像数据到UE4场景的映射方法,其特征在于,所述步骤S5中的Tile顶点坐标转换的方法具体包括以下步骤:
S51:由于地形渲染引擎osgEarth与Unreal Engine属于不同平台,两者之间坐标体系不同,因此,将两平台之间以世界坐标建立统一的标准;地形渲染引擎osgEarth与UnrealEngine两平台间的坐标转换的公式为:
osgEarth:(X,Y,Z)→UnrealEngine:(Y,X,Z);
S52:由于地形渲染引擎osgEarth平台中坐标单位默认为米,Unral Engine平台中的坐标单位默认为厘米,因此再进行坐标单位的转换,转换公式为:
(X,Y,Z)UE=(X,Y,Z)OE*ModelMatrixOE*T*S;
其中(X,Y,Z)UE表示Unreal Engine下的世界坐标,(X,Y,Z)OE表示地形渲染引擎osgEarth下坐标数据,ModelMatrixOE表示地形渲染引擎osgEarth下模型到世界坐标的转换矩阵;
T表示地形渲染引擎osgEarth下的转换矩阵,
S表示地形渲染引擎osgEarth下缩放矩阵:
6.根据权利要求2所述的基于osgEarth影像数据到UE4场景的映射方法,其特征在于,所述步骤S6中的纹理转换包括纹理坐标转换和纹理数据格式转换;
具体步骤为:
S61:对中间交换格式瓦片交换TileEx进行纹理转换,纹理坐标转换的公式为:
TexCoor(U,V)UE=TexCoor(U,V)OE*TexMatrixOE;
其中,TexCoor(U,V)UE表示Unreal Engine中的纹理坐标,TexCoor(U,V)OE表示osgEarth中的纹理坐标;TexMatrixOE表示osgEarth中的纹理坐标矩阵;
S62:对中间交换格式瓦片交换TileEx进行纹理数据格式转换,纹理数据格式转换的公式为:根据地形渲染引擎osgEarth中纹理的数据类型和像素类型共同确定的公式为:
PixelFormatUE=DataTypeOE&&PixelFormatOE;
其中,PixelFormatUE表示Unreal Engine中的像素类型,DataTypeOE表示osgEarth中的数据类型,PixelFormatOE表示地形渲染引擎osgEarth中的像素类型。
7.根据权利要求2所述的基于osgEarth影像数据到UE4场景的映射方法,其特征在于,所述步骤S4中的定义瓦片交换TileEx的数据结构作为中间方式,瓦片交换TileEx包含以下变量:tileKey、parentKey、SCGeom、modelMatrix和SCTextures;其中SCGeom中包含瓦片坐标、三角面索引、法线,纹理坐标,SCTextures由多个SCTexture构成;SCTexture包括width、height、image、imgMatrix。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110992836.4A CN113436307B (zh) | 2021-08-27 | 2021-08-27 | 基于osgEarth影像数据到UE4场景的映射算法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110992836.4A CN113436307B (zh) | 2021-08-27 | 2021-08-27 | 基于osgEarth影像数据到UE4场景的映射算法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113436307A CN113436307A (zh) | 2021-09-24 |
CN113436307B true CN113436307B (zh) | 2021-11-16 |
Family
ID=77798207
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110992836.4A Active CN113436307B (zh) | 2021-08-27 | 2021-08-27 | 基于osgEarth影像数据到UE4场景的映射算法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113436307B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114546141B (zh) * | 2022-04-25 | 2022-07-12 | 成都柔水科技有限公司 | 一种基于ue5的适用于gis应用的相机控制方法 |
CN114998503A (zh) * | 2022-06-21 | 2022-09-02 | 重庆市勘测院((重庆市地图编制中心)) | 一种基于实景三维的白模自动纹理构建方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108765576A (zh) * | 2018-03-28 | 2018-11-06 | 中国人民解放军92859部队 | 基于OsgEarth的VIVE虚拟地球漫游浏览方法 |
CN111161411A (zh) * | 2020-04-08 | 2020-05-15 | 速度时空信息科技股份有限公司 | 一种基于八叉树的三维建筑物模型lod方法 |
CN113297668A (zh) * | 2021-05-13 | 2021-08-24 | 中国人民解放军军事科学院战争研究院 | 一种基于ue4游戏引擎的三光吊舱仿真方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112381935A (zh) * | 2020-09-29 | 2021-02-19 | 西安应用光学研究所 | 一种合成视觉生成及多元融合装置 |
CN112203074B (zh) * | 2020-12-07 | 2021-03-02 | 南京爱奇艺智能科技有限公司 | 一种基于两步迭代的相机平移新视点图像生成方法和系统 |
-
2021
- 2021-08-27 CN CN202110992836.4A patent/CN113436307B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108765576A (zh) * | 2018-03-28 | 2018-11-06 | 中国人民解放军92859部队 | 基于OsgEarth的VIVE虚拟地球漫游浏览方法 |
CN111161411A (zh) * | 2020-04-08 | 2020-05-15 | 速度时空信息科技股份有限公司 | 一种基于八叉树的三维建筑物模型lod方法 |
CN113297668A (zh) * | 2021-05-13 | 2021-08-24 | 中国人民解放军军事科学院战争研究院 | 一种基于ue4游戏引擎的三光吊舱仿真方法 |
Non-Patent Citations (2)
Title |
---|
A tile service-driven architecture for online climate analysis with an application to estimation of ocean carbon flux;Ye, Weiwen等;《ENVIRONMENTAL MODELLING & SOFTWARE 》;20190831;第118卷;120-133 * |
osgEarth 在三维GIS 开发中的研究与应用;韩哲 等;《现代防御技术》;20170430;第45卷(第2期);14-21 * |
Also Published As
Publication number | Publication date |
---|---|
CN113436307A (zh) | 2021-09-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108648269B (zh) | 三维建筑物模型的单体化方法和系统 | |
US20230053462A1 (en) | Image rendering method and apparatus, device, medium, and computer program product | |
CN111008422B (zh) | 一种建筑物实景地图制作方法及系统 | |
US6954202B2 (en) | Image-based methods of representation and rendering of three-dimensional object and animated three-dimensional object | |
CN106575448B (zh) | 激光扫描数据的图像渲染 | |
CN113436307B (zh) | 基于osgEarth影像数据到UE4场景的映射算法 | |
US8134556B2 (en) | Method and apparatus for real-time 3D viewer with ray trace on demand | |
KR20030004017A (ko) | 3차원 정지 및 동작 객체의 계층적 이미지 기반 표현 및렌더링방법 및 장치 | |
CN111784833A (zh) | 基于WebGL的洪水演进态势三维动态可视化展示方法 | |
CN102999946B (zh) | 一种3d图形数据处理方法、装置及设备 | |
CN113593051B (zh) | 一种实景可视化方法及大坝可视化方法及计算机设备 | |
CN114219902A (zh) | 气象数据的体绘制渲染方法、装置和计算机设备 | |
CN112991558B (zh) | 一种地图编辑方法和地图编辑器 | |
CN116051759B (zh) | 一种生成倾斜摄影lod简化模型的方法 | |
CN116051713B (zh) | 渲染方法、电子设备和计算机可读存储介质 | |
Westerteiger et al. | Spherical Terrain Rendering using the hierarchical HEALPix grid | |
Bao et al. | Realistic real-time rendering for large-scale forest scenes | |
CN112200899B (zh) | 一种采用实例化渲染实现模型业务交互的方法 | |
CN108230430A (zh) | 云层遮罩图的处理方法及装置 | |
CN110930509A (zh) | 线性四元树多层模型驱动的dem即时可视化方法 | |
CN111563929B (zh) | 一种基于浏览器的2.5d网页开发方法 | |
CN115035231A (zh) | 阴影烘焙方法、装置、电子设备和存储介质 | |
Xu et al. | Visualization methods of vector data on a Digital Earth System | |
KR100679289B1 (ko) | 벡터화소를 이용한 이미지 처리 시스템 | |
EP3821602A1 (en) | A method, an apparatus and a computer program product for volumetric video coding |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder |
Address after: 210042 8 Blocks 699-22 Xuanwu Avenue, Xuanwu District, Nanjing City, Jiangsu Province Patentee after: Speed Technology Co.,Ltd. Address before: 210042 8 Blocks 699-22 Xuanwu Avenue, Xuanwu District, Nanjing City, Jiangsu Province Patentee before: SPEED TIME AND SPACE INFORMATION TECHNOLOGY Co.,Ltd. |
|
CP01 | Change in the name or title of a patent holder |