一种基于unity3d的知识图谱3D可视化方法[发明专利]

(19)中华人民共和国国家知识产权局
(12)发明专利申请
(10)申请公布号 (43)申请公布日 (21)申请号 201911376996.5
(22)申请日 2019.12.27
(71)申请人 山东省计算中心(国家超级计算济
南中心)
地址 250014 山东省济南市历下区科院路
19号山东省计算中心
(72)发明人 窦方坤 王小红 赵志刚 潘景山 
郭莹 霍吉东 杨帅 曹皓伟 
(74)专利代理机构 北京华际知识产权代理有限
公司 11676
代理人 褚庆森
(51)Int.Cl.
G06F  16/338(2019.01)
G06F  16/36(2019.01)
(54)发明名称一种基于unity3d的知识图谱3D可视化方法(57)摘要本发明的基于unity3d的知识图谱3D可视化方法,包括:a ).摄像机、天空盒和场景初始化;b).三元组数据获取;c).预制体的创建及三维物理结构组织;d).三维力学模型构建;e).帧循环;f).沉浸式摄影机脚本;g).全局摄影机脚本;h).属性信息显示及UI绘制;i).检索功能及传送功能;j).沉浸视图、全局视图切换。本发明的基于unity3d的知识图谱3D可视化方法,具有良好的可移植性和可扩展性,可以发布到web、手机、PC 等多种平台,而不会像WebGL等技术一样开发后即对平台具有高度依赖;另一方面表现在未来可以方便的扩展至虚拟现实、增强现实等新兴的显示技术上,实现更广阔、更沉浸、更具互动性的知
识图谱3D可视化。权利要求书5页  说明书16页  附图6页CN 111125347 A 2020.05.08
C N  111125347
A
1.一种基于unity3d的知识图谱3D可视化方法,其特征在于,通过以下步骤来实现:
a).摄像机、天空盒和场景初始化;摄像机初始化:向Hierarchy窗格中插入一个摄影机,或者使用新建项目后原有的摄影机,作为沉浸式摄影机,调整其在场景中的位置,使其在水平方向上偏离场景中心点;适当增大该摄影机的可视距离,以获得更好的可视效果;向Hierarchy窗格插入一个新的摄影机作为全局摄影机,调整其在场景中的位置,使其镜头向斜下方俯视并对准场景中心点;
天空盒初始化:对场景设置全局的天空盒,并修改Wrap Mode的值防止出现贴图接缝,选用暗调星空背景的天空盒材质;
相关场景参数设置:取消点光源,设置全局光源,光源颜选为白系;取消掉场景中的重力,使场景中只存在力导向模型中自定义的力,同时防止添加的模型下落;
b).三元组数据获取,从服务器端获取三元组json数据,并进行解析;将三元组数据分组为实体和关系两
类,实体应至少包括实体的id、实体名称和实体类别,关系应至少包括关系的id、关系的源实体id、关系的目标实体id和关系的类别,将实体和关系分别实例化为类数组;
c).预制体的创建及三维物理结构组织;首先,创建具有不同材质和模型的球形预制体,对应实体的不同类别;根据实体类数组中的实体id和类别,将不同的预制体实例化为场景中的对象,该对象的name即为对应实体的id,并将实体的名称绘制在对象的正上方;
之后,设置对象的三维物理结构,包括对象的质量和初始位置;要求所有对象的初始位置在一小块三维空间中随机分布,且需保证彼此之间保持一定的间距,避免发生穿模问题;
最后,根据关系类数组中的关系的源实体和目标实体,在源实体和目标实体对应的对象之间绘制激光效果,以建立两个实体间关系;同时,根据关系的类别,为激光束添加不同的纹理,并将关系名称绘制在激光束的中点正上方;
d).三维力学模型构建,为了能够使对象之间能够自动布局,达到最佳的可视效果,将使用力导向作为自动布局的构建方法,需将传统二维空间中的力导向模型转化为三维空间中的力导向模型;
定义对象在三维空间中的速度、加速度和当前位置,均使用三维坐标进行表示,除当前位置使用对象的真实坐标外,速度和加速度的初始值都为0;
对于力学建模,主要来自于每两个对象之间的斥力和存在关系的对象之间的拉力;对于斥力模型,使用库伦定律进行计算,即为公式(1):
其中G为引力常量,值为6.67×10-11,为方便计算,取值为6.67;M、m分别为两对象的质量,r为两对象之间的距离;
对于拉力模型,使用弹簧拉力公式,为公式(2):
F=kx    (2)
其中,k为弹簧的劲度系数,x为弹簧的形变量;
同时,为了保证在动态布局的过程中,系统整体不会偏离场景中心,添加一个指向场景中心的全局引力;在场景原点处设置一个并不渲染的对象,将其质量设为一个较大值,并保持其在原点静止不动;
对于加速度和速度,则分别由加速度公式和速度公式给出,为公式(3)和公式(4):
v=v+a·t  (4)
公式(3)和公式(4)中,F为对象所受合力大小,m为对象质量,a为对象加速度;v为对象速度,t为时间;
最后,为保证系统的稳定状态能够及时收敛,而不是一直运动下去,需要添加一个全局的线性粘性阻尼力,该力的公式为公式(5):
F=c·v  (5)
其中,c为粘性阻尼系数;
e).帧循环;根据设定的物理模型,对实体和关系的对象进行物理状态的更新,包括实体对象的位置和关系对象的起始终止坐标;每次帧循环中,都要根据实体对象的质量、位置和速度,计算该对象受到的中心引力、实体对象之间的相互斥力、关系对象的引力和运动过程中受到的阻尼力;对这些力在x、y、z轴方向上进行分解并计算其合力,再由其质量计算三个轴向上的加速度,最终更新三个轴向上新的速度;之后,更新该实体对象的位置和速度的物理属性,并依照新属性进行场景的渲染和更新UI;直到整
个场景中的系统达到一个收敛性的稳定阈值时,伴随帧循环的力学计算和物理属性更新都要持续进行下去;
f).沉浸式摄影机脚本;沉浸式摄影机为标准的第一人称摄影机,初始应置于场景原点附近,将支持跟随鼠标的视角旋转,由方向键和“ASDW”键控制前后左右移动,鼠标滚轮控制移动速度;“Tab”键控制菜单UI的切入切出,切出菜单时取消视角的鼠标跟随,以便实现检索、查看、传送功能;
g).全局摄影机脚本;全局摄影机为地图摄影机,目的在于为用户全局的查看整个图谱的规模、结构和关联关系提供可能;全局摄影机的鼠标控制分为鼠标左键实现场景拖拽,鼠标右键实现镜头转向,鼠标滚轮控制缩放;同时,全局摄影机可由键盘的“Q”、“E”两个按键控制视角转向,同样适用“Tab”键控制菜单UI的切入切出;
h).属性信息显示及UI绘制;UI界面的目的是为了对某一实体或关系的属性信息进行详细的展示,整个UI界面分为4部分:顶部为目前指向的实体名称及其ID;左侧为检索功能区,用户可选择相应的搜索条件,并输入检索的关键字,服务器会将检索的结果返回给客户端,并在UI界面上进行更新;右侧为实体属性的详细信息,用来展示该实体具体的属性字段;中间为图形展示区,一是用来展示全局的3D知识图谱中该实体节点所在的位置及其与其它实体的关联情况,二是用来展示某些实体可能具有的3D模型,二者可以相互切换;
i).检索功能及传送功能;用户选择检索条件并键入检索关键字,服务器将检索到的结果返回到客户端;用户选择关注某一返回的节点时,将重新构建以该节点的关联关系为中心的知识图谱3D可视化场景;
用户对于图谱中某一外围节点,可以选择对该节点进行扩展,服务器对该节点的关联实体进行进一步检索并返回;新返回的实体会添加到现有的场景中,并按力导向的模型进行自动化的布局调整;
还提供传送功能,用户点击沉浸视图或全局视图中的某一对象时,将弹出选项询问用户是否传送,当用户选择传送时,会将用户传送至该节点附近并将沉浸式摄影机镜头中心
对准该对象;
j).沉浸视图、全局视图切换;系统提供沉浸视图和全局视图的切换功能,以方便用户从不同的视角观察图谱,快捷键为“M”;沉浸视图和全局视图的切换,实际是用户的视角在沉浸式摄影机和全局摄影机之间的切换。
2.根据权利要求1所述的基于unity3d的知识图谱3D可视化方法,其特征在于,步骤a)中所述的摄像机初始化具体通过以下步骤来实现:
对于沉浸式摄影机,调整初始位置为横向上略微偏离场景中心,即将摄影机位置置于世界坐标系的(0,0,-20)处,并保持其转向为(0,0,0),使其镜头正对场景中心;在此基础上,适当调大其裁剪平面,将
裁剪平面的最远值由初始的1000调整到2000以上,以保证远处的实体对象在摄影机中也能被有效的渲染到,保证用户在沉浸式摄影机中也能对欲观察实体的整体关系有一个良好的把握;
对于全局摄影机,调整其初始位置为场景中心的斜上方,并将摄影机镜头正对场景中心,即将摄影机位置至于世界坐标系的(500,500,-500),并保持其转向为(35.53,-45,0),使其镜头正对场景中心;摄影机的实际位置和转向会在系统整体的力导向基本稳定时根据实际的场景规模进行重新调整,故在初始化的时候不必过于考量初始值的选取;同样,将裁剪平面的最远值调整到2000以上;裁剪平面的最远值和视野宽度也会在系统力导向稳定后重新进行调整,以保证摄影机能够清楚全面的渲染整个图谱;
为实现沉浸式摄影机和全局摄影机无论从哪个角度对场景进行观看,都不会出现背光导致的对象看不清楚的情况,需在保留全局平行光的基础上,为两个摄影机分别挂载平行光源组件,以保证无论视角怎么旋转,都能给前方物体一个照射光源;
步骤a)中所述的天空盒初始化具体通过以下步骤来实现:此处为保持沉浸式摄影机和全局摄影机在场景上的一致性,选择在当前场景上添加全局的天空盒,为将知识图谱的3D 可视化营造为宇宙中星图的整体氛围,故选取星空背景的天空盒材质,为保证天空盒之间不出现裂缝,确保将天空盒材质的“Wrap Mode”的值设为“Clamp”;
步骤a)中所述的场景初始化具体通过以下步骤来实现:为去除重力的影响,将重力的X、Y、Z的值全部
设为0,保证即使将实体对象设为刚体并为其设置质量的情况下,也不会出现因为重力而下坠的情况;
将阴影的值设为“禁用阴影”,将该项目中使用不到的阴影进行关闭,以节省系统资源。
3.根据权利要求1或2所述的基于unity3d的知识图谱3D可视化方法,其特征在于,步骤
c)所述的预制体的创建及三维物理结构组织中:使用不同的材质来区分不同分类的实体,在构建预制体的时候,有两种策略:
一是对所有的实体构建同一个球形预制体,在实体在进行实例化的过程中,对于不同种类的实体,分别对实例对象赋予不同的材质,以区分不同的种类,该种策略下,需要一个预制体和若干的材质,这样做的优点是只需要构建不同的材质球即可,而在制作预制体上将省去大量时间;
二是对于不同种类的实体按种类分别构建多个预制体,在实体进行实例化的过程中,只需要关注不同种类和不同预制体之间的映射,而可以不用再关注实例对象的材质问题,这样做的好处是如果要对某一类实体的实例对象都进行修改,则不需要再进行遍历,而只需要修改它对应的预制体即可。
4.根据权利要求1或2所述的基于unity3d的知识图谱3D可视化方法,其特征在于,步骤
d)三维力学模型构建过程中:
d-1).全局引力,全局引力来自于当前实体对象和场景中心设置的不渲染的隐藏对象之间,设当前实体对象为entity_obj,中心对象为hide_obj,则二者之间的全局引力大小可用公式(7)表示:
其中q为库伦常量,entitiy_obj.mass、hide_obj.mass分别表示当前实体对象和中心对象的质量,entity_obj.position hide_obj.position分别表示当前实体对象和中心对象的位置坐标,|entity_obj.position-hide_obj.position|表示当前实体对象与中心对象之间的距离;则合力即符合公式(8):
d-2).实体-相互斥力,设当前实体对象为entity_obj,其它实体对象为entityi_obj,则二者之间的引力大小可用公式(9)表示:
其合力符合公式(10):
此处的合力直接使用Vector3进行矢量加法运算;
d-3).关系-弹簧斥力,弹簧的拉力只出现在存在关系的两个实体对象之间,他们的合力大小满足弹簧的线性弹力公式;设存在关系的两个实体对象之间的关系为relation i,则具体的公式如公式(11)所示:
|Force i|=k·|relation i.target_position-relation i.source_position|  (11)其中k为预设的弹簧的劲度系数,则该实体对象受到的拉力合力符合公式(12):
需要注意的是,此处在进行里的计算和向量的归一化时,为保证力的方向的正确性,需要保证当前关系中source_position为欲计算的关系实体的位置坐标,若不是,则需要调换source_position和target_position的值再进行计算;
d-3).线性粘滞阻尼力,实体对象受到的线性粘滞阻尼力只与该对象当前的速度有关,设当前实体对象为entity_obj,则其力的计算符合公式(13):
Force=c·(-entity_obj.speed)      (13)
该力同样有大小和方向,直接使用Vector3表示的speed属性参加计算。
5.根据权利要求1或2所述的基于unity3d的知识图谱3D可视化方法,其特征在于,步骤
e)所述的帧循环包括两部分,分别是力学模型的计算更新和其他组件的更新,在每一帧开始时,由全局的力学模型脚本和绑定在各个对象上的力学模型脚本进行力学模型计算,获

本文发布于:2024-09-20 22:51:36,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/775936.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:对象   实体   摄影机   全局   场景   进行
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议