一种基于Unity3D着色器显示机房地面温场分布的方法和装置与流程

文档序号:11182041阅读:919来源:国知局
一种基于Unity3D着色器显示机房地面温场分布的方法和装置与流程

本发明涉及信息可视化技术领域,具体涉及一种基于unity3d着色器显示机房地面温场分布的方法和装置。



背景技术:

在unity3d机房展示界面中,有一项动态环境数据展示功能,展示系统采集监测机房中的各项数据指标,图1示出了现有技术中显示机房地面的温度分布的示意图,如图1所示,系统中动环数据展示指标以文字形式展示,其中温度数据指标,这样的展示方式比较死板且无法直观体现出机房实际温度区域分布状况,不利于对机房运行状况的有效监测。

其中,温度数据作为动态环境数据中表征机房运行状况的重要的指标之一,机房的运维人员希望能够更加直观、动态地观察机房各区域的温度分布情况以及温度扩散情况,需要实现图形显示环境温度分布情况,类似图2中显示效果,图2示出了现有技术中通过图形显示机房环境温度的示意图。

现有技术中,在unity3d着色器附给地面对象,通过颜色算法计算着色器颜色可以实现类似图2中显示效果。然而,现有方案存在如下缺陷:1、监控温度点的温度和位置在unity3d着色器程序中固定写死,无法对应机房应用中动态加载的传感器温度和传感器实际位置;2、针对正方形地板着色算法显示正常,温度以圆形方式扩散影响范围,但是机房实际模型往往是不规则形状,使用同样方法会对显示温度区域进行扭曲,无法正确体现温度影响区域效果,如图3所示,图3示出了现有技术中机房地面温场分布显示发生扭曲的示意图。



技术实现要素:

鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的基于unity3d着色器显示机房地面温场分布的方法和装 置。

依据本发明的一个方面,提供了一种基于unity3d着色器显示机房地面温场分布的方法,该方法包括:

将待显示机房的机房模型导入到unity3d中;

建立渲染平面坐标系;所述渲染平面坐标系的x轴平行于所述机房模型中的地面模型的长边,y轴平行于所述地面模型的宽边,x轴与y轴的量程的比例等于所述地面模型的长宽比例;

将位于所述地面模型上的各传感器模型在世界坐标系中的位置坐标变换为在所述渲染平面坐标系中的位置坐标;

根据各传感器模型的温度和在渲染平面坐标系中的位置坐标,利用unity3d着色器在所述渲染平面坐标系中进行温场分布渲染,将渲染得到的温场分布图按比例放大或缩小后覆盖在所述地面模型上,使得所述温场分布图与所述地面模型相重合。

依据本发明的另一个方面,提供了一种基于unity3d着色器显示机房地面温场分布的装置,该装置包括:

模型导入单元,适于将待显示机房的机房模型导入到unity3d中;

渲染平面坐标系建立单元,适于建立渲染平面坐标系;所述渲染平面坐标系的x轴平行于所述机房模型中的地面模型的长边,y轴平行于所述地面模型的宽边,x轴与y轴的量程的比例等于所述地面模型的长宽比例;

坐标变换单元,适于将位于所述地面模型上的各传感器模型在世界坐标系中的位置坐标变换为在所述渲染平面坐标系中的位置坐标;

渲染处理单元,适于根据各传感器模型的温度和在渲染平面坐标系中的位置坐标,利用unity3d着色器在所述渲染平面坐标系中进行温场分布渲染,将渲染得到的温场分布图按比例放大或缩小后覆盖在所述地面模型上,使得所述温场分布图与所述地面模型相重合。

由上述可知,本发明提供的技术方案在机房模型中建立渲染平面坐标系,以渲染平面坐标系为基准所形成的渲染平面与地面模型的长宽具有等比例性,保证了最终在渲染平面上渲染显示的地面温场分布的正确性,不会因地面模型的不规则而发生扭曲和变形;又由于该方案在建立渲染平面坐标系 后可以根据需要灵活进行传感器模型的坐标变换和渲染处理的特点,当机房中的温度传感器的数量或位置发生变化时,可以动态地变化机房模型中的传感器模型,动态地进行相应的温场分布的渲染;使得机房的运维人员可以在unity3d机房模型展示界面中直观地看到机房地面各区域的温度高低和对比,有利于对机房环境及运行情况进行有效地监控。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1示出了现有技术中显示机房地面的温度分布的示意图;

图2示出了现有技术中通过图形显示机房环境温度的示意图;

图3示出了现有技术中机房地面温场分布显示发生扭曲的示意图;

图4示出了根据本发明一个实施例的一种基于unity3d着色器显示机房地面温场分布的方法的流程图;

图5示出了根据本发明一个实施例的地面模型的俯视图;

图6示出了根据本发明一个实施例显示的机房地面温场分布的示意图;

图7示出了根据本发明另一个实施例显示的机房地面温场分布的示意图;

图8示出了根据本发明一个实施例的一种基于unity3d着色器显示机房地面温场分布的装置的示意图;

图9示出了根据本发明另一个实施例的一种基于unity3d着色器显示机房地面温场分布的装置的示意图。

具体实施方式

下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。

图4示出了根据本发明一个实施例的一种基于unity3d着色器显示机房地面温场分布的方法的流程图。如图4所示,该方法包括:

步骤s410,将待显示机房的机房模型导入到unity3d中。

本步骤中,所述机房模型是在3d场景中所建立的机房模型,该机房模型是以世界坐标系显示在3d场景中的,因此导入到unity3d中的机房模型的相关参数均是以世界坐标系为基准的。

步骤s420,建立渲染平面坐标系;所述渲染平面坐标系的x轴平行于所述机房模型中的地面模型的长边,y轴平行于所述地面模型的宽边,x轴与y轴的量程的比例等于所述地面模型的长宽比例。

步骤s430,将位于所述地面模型上的各传感器模型在世界坐标系中的位置坐标变换为在所述渲染平面坐标系中的位置坐标。

本步骤中,每个传感器模型是实际情景下置于机房的地面上的温度传感器,用于测量其所在位置的温度。

步骤s440,根据各传感器模型的温度和在渲染平面坐标系中的位置坐标,利用unity3d着色器在所述渲染平面坐标系形成的渲染平面上进行温场分布渲染,将渲染得到的温场分布图按比例放大或缩小后覆盖在所述地面模型上,使得所述温场分布图与所述地面模型相重合。

本步骤中,unity3d着色器中已预先定义了温度与颜色的对应关系以及温度扩散函数,该温度扩散函数根据已知的各传感器模型的温度和在渲染平面坐标系中的位置坐标,能够计算得到渲染平面坐标系形成的渲染平面上的其他坐标点的温度分布,以相应的颜色进行表征。具体地,该温度扩散函数为二维线性差值算法,通过该二维线性差值算法可以得到每两个已知温度点之间的各坐标点的温度分布。

可见,图4所示的方法对于待显示地面温场分布的机房,将机房模型导入unity3d中作为unity项目,根据该unity项目中的相关参数,建立渲染 平面坐标系,该渲染平面坐标系形成的渲染平面与机房模型中的地面模型的大小成比例、位置一致,实质上成比例地重现了地面模型;将传感器模型在世界坐标系中的位置坐标变换为在渲染平面坐标系中的位置坐标;则可知根据传感器模型的温度和在渲染平面坐标系中的位置坐标所渲染出的在渲染平面上的温场分布实质上反映了地面模型上的温场分布情况,将渲染后得到的温场分布图按比例放大或缩小后重合覆盖在所述地面模型上,实现了在该地面模型上显示温场分布的效果。

依据此方案,由于渲染平面坐标系所形成的渲染平面与地面模型的长宽等比例性,保证了最终显示的地面温场分布的正确性,不会发生扭曲和变形;又由于该方案的粒度较小灵活性较高,当机房中的温度传感器的数量或位置发生变化时,可以动态地变化机房模型中的传感器模型,动态地进行相应的温场分布的渲染;使得机房的运维人员可以在unity3d机房模型展示界面中直观地看到机房地面各区域的温度高低和对比,有利于对机房环境及运行情况进行有效地监控。

在本发明的一个实施例中,在步骤s410将待显示机房的机房模型导入到unity3d中之前,图4所示的方法进一步包括:在unity3d着色器中预先声明地面对象,该地面对象的变量包括:该地面对象的长度变量、宽度变量和位置坐标变量;以及,在unity3d着色器中预先声明多个温度点对象,每个温度点对象的变量包括:该温度点对象的位置坐标变量,该温度点对象的温度变量。

则步骤s420建立渲染平面坐标系包括:从所述机房模型中获取所述地面模型的长度值、宽度值和在世界坐标系中的位置坐标值;将所述长度值赋值给unity3d着色器中预先声明的长度变量,将所述宽度值赋值给unity3d着色器中预先声明的宽度变量,将所述地面模型在世界坐标系中的位置坐标值赋值给unity3d着色器中预先声明的位置坐标变量;根据被赋值的地面对象的长度变量、宽度变量和位置坐标变量,建立所述渲染平面坐标系。

在建立上述渲染平面坐标系之后,步骤s430从所述机房模型中获取位于所述地面模型上的各传感器模型在世界坐标系中的位置坐标值;根据所述地面模型的长度值、宽度值和在世界坐标系中的位置坐标值,将各传感器模 型在世界坐标系中的位置坐标值变换为在所述渲染平面坐标系中的位置坐标值。

进而,步骤s440根据各传感器模型的温度和在渲染平面坐标系中的位置坐标,利用unity3d着色器在所述渲染平面坐标系中进行温场分布渲染包括:将各传感器模型与unity3d着色器中预先声明的多个温度点对象建立一一对应关系;对于每个传感器模型,将该传感器模型在所述渲染平面上的相对位置坐标值赋值给对应的温度点对象的位置坐标变量,将该传感器模型的温度值赋值给对应的温度点对象的温度变量;根据被赋值的各温度点对象的位置坐标变量和温度变量,利用unity3d着色器在所述渲染平面上进行温场分布渲染。

通过一个具体的实施例来说明本方案的实施过程:在unity3d着色器的属性设置中预先声明一个地面对象和多个温度点对象,地面对象的变量包括:该地面对象的长度变量、宽度变量和位置坐标变量,每个温度点对象的变量包括:该温度点对象的位置坐标变量和温度变量。

对应的具体过程的代码如下:

从上段代码中可以看到,在本实施例中,在unity3d着色器的属性设置 中预先声明了一个地面对象,该地面对象通过一个四维向量的类型对象来表征,该四维向量包括四个浮点变量,依次为:地面对象的中心点在世界坐标系中的x轴坐标变量,地面对象的中心点在世界坐标系中的y轴坐标变量,地面对象的长度变量,地面对象的宽度变量;以及,在unity3d着色器的属性设置中预先声明了n个温度点对象,每个温度点对象通过一个四维向量的类型对象来表征,该四维向量包括四个浮点变量,依次为:温度点对象在世界坐标系中的x轴坐标变量,温度点对象在世界坐标系中的y轴坐标变量,温度点对象的温度变量,温度点对象的生效标识;当然也可以是:温度点对象在渲染平面坐标系中的x轴坐标变量,温度点对象在渲染平面坐标系中的y轴坐标变量,温度点对象的温度变量,温度点对象的生效标识;其中,温度点对象的生效标识为记录该温度点对象是否生效的标识,如果温度点对象不生效,则在渲染生成温场分布时不考虑该温度点对象,如果温度点对象生效,则在渲染生成温场分布时考虑该温度点对象。

接着,将待显示地面温场分布的机房的机房模型导入到unity3d中作为一个unity项目,该unity项目中携带机房模型以世界坐标系为基准的各种相关参数。根据该unity项目关于机房模型中的地面模型的相关参数,建立渲染平面坐标系,图5示出了根据本发明一个实施例的地面模型的俯视图。如图5所示,o-xyz坐标系为世界坐标系,由于视角原因图5中只能看到世界坐标系的x轴和y轴,z轴垂直于纸面向外,地面模型为矩形abcd,长度ab=cd=a,宽度bc=ad=b,地面模型的中心点在世界坐标系中的位置坐标为(xc,yc),建立渲染平面坐标系o-xy,使得该渲染平面坐标系的原点与地面模型的a点相重合,该渲染平面坐标系的x轴与地面模型的ab边相重合,且x轴的量程为a/b,该渲染平面坐标系的y轴与地面模型的ad边相重合,且y轴的量程为1。

对应的具体过程的代码如下:

在建立图5所示的渲染平面坐标系之后,可以获知地面模型与该渲染平面坐标系之间的位置关系,进而可以将位于地面模型上的传感器模型在世界坐标系中的位置坐标转换为在渲染平面坐标系中的位置坐标。在进行坐标转换之前,先要对unity3d着色器中预先声明的地面对象进行赋值,以在添加温度点对象时使用;在本实施例中,表征地面对象的四维向量为(xc,yc,a,b)。

对应的具体过程的代码如下,续接在上段代码之后:

如图5所示,位于地面模型上的一个传感器模型在世界坐标系中的位置坐标为(x,y),则该传感器模型在所述渲染平面坐标系中的位置坐标值为(x,y),其中,

该坐标变换算法满足本实施例中的任意传感器模型的坐标变换过程,因此可以将该坐标变换算法预置放入unity3d着色器中,则在对传感器模型进行坐标变换时,直接调用该算法即可。在将传感器模型在世界坐标系中的位置坐标变换为在渲染平面坐标系中的位置坐标后,利用传感器模型在渲染平面坐标系中的位置坐标值以及相应的温度值对温度点对象进行赋值,以进行下一步的渲染工作。

对应的具体过程的代码如下:

vector3position=obj.transform.position;

//将传感器模型在世界坐标系中的位置坐标变换为在渲染平面坐标系中的位置坐标

vector4poi=newvector4(position.x,position.y,tempera,1);

tempshadermat.setvector(“_poi”+counter,poi);

//每个传感器模型在渲染平面坐标系中的x坐标值、y坐标值、温度值和生效标识共同构成的四维向量赋值给相应的温度点对象

最后,unity3d着色器根据各生效状态的温度点对象在渲染平面坐标系上的坐标与温度的对应关系,利用温度扩散函数得出其他各坐标点所对应的温度,在渲染平面上绘制渲染相应的温场分布图,将温场分布图按比例放大或缩小后覆盖在所述地面模型上,使得所述温场分布图与所述地面模型相重合,实现了对地面模型的温场分布的显示,即实现了对机房地面的温场分布的显示,如图6-图7所示,图6示出了根据本发明一个实施例显示的机房地面温场分布的示意图,图7示出了根据本发明另一个实施例显示的机房地面温场分布的示意图,从图中可以看出,在非正方形的机房地面上,温度均以 圆形方式扩散影响范围,符合温度扩散规律。

图8示出了根据本发明一个实施例的一种基于unity3d着色器显示机房地面温场分布的装置的示意图。如图8所示,该基于unity3d着色器显示机房地面温场分布的装置800包括:

模型导入单元810,适于将待显示机房的机房模型导入到unity3d中。

渲染平面坐标系建立单元820,适于建立渲染平面坐标系;所述渲染平面坐标系的x轴平行于所述机房模型中的地面模型的长边,y轴平行于所述地面模型的宽边,x轴与y轴的量程的比例等于所述地面模型的长宽比例。

坐标变换单元830,适于将位于所述地面模型上的各传感器模型在世界坐标系中的位置坐标变换为在所述渲染平面坐标系中的位置坐标。

渲染处理单元840,适于根据各传感器模型的温度和在渲染平面坐标系中的位置坐标,利用unity3d着色器在所述渲染平面坐标系中进行温场分布渲染,将渲染得到的温场分布图按比例放大或缩小后覆盖在所述地面模型上,使得所述温场分布图与所述地面模型相重合。

可见,图8所示的装置对于待显示地面温场分布的机房,将机房模型导入unity3d中作为unity项目,根据该unity项目中的相关参数,建立渲染平面坐标系,该渲染平面坐标系形成的渲染平面与机房模型中的地面模型的大小成比例、位置一致,实质上成比例地重现了地面模型;将传感器模型在世界坐标系中的位置坐标变换为在渲染平面坐标系中的位置坐标;则可知根据传感器模型的温度和在渲染平面坐标系中的位置坐标所渲染出的在渲染平面上的温场分布实质上反映了地面模型上的温场分布情况,将渲染后得到的温场分布图按比例放大或缩小后重合覆盖在所述地面模型上,实现了在该地面模型上显示温场分布的效果。

依据此方案,由于渲染平面坐标系所形成的渲染平面与地面模型的长宽等比例性,保证了最终显示的地面温场分布的正确性,不会发生扭曲和变形;又由于该方案的粒度较小灵活性较高,当机房中的温度传感器的数量或位置发生变化时,可以动态地变化机房模型中的传感器模型,动态地进行相应的温场分布的渲染;使得机房的运维人员可以在unity3d机房模型展示界 面中直观地看到机房地面各区域的温度高低和对比,有利于对机房环境及运行情况进行有效地监控。

图9示出了根据本发明另一个实施例的一种基于unity3d着色器显示机房地面温场分布的装置的示意图。如图9所示,该基于unity3d着色器显示机房地面温场分布的装置900包括:预处理单元910、模型导入单元920、渲染平面坐标系建立单元930、坐标变换单元940和渲染处理单元950;其中,模型导入单元920、渲染平面坐标系建立单元930、坐标变换单元940、渲染处理单元950分别与图8所示的模型导入810、渲染平面坐标系建立单元820、坐标变换单元830、渲染处理单元840具有对应相同的功能,对于相同的部分则不再赘述。

预处理单元910,适于在模型导入单元920将待显示机房的机房模型导入到unity3d中之前,在unity3d着色器中预先声明地面对象,该地面对象的变量包括:该地面对象的长度变量、宽度变量和位置坐标变量。

在本发明的一个实施例中,渲染平面坐标系建立单元930,适于从所述机房模型中获取所述地面模型的长度值、宽度值和在世界坐标系中的位置坐标值;将所述长度值赋值给unity3d着色器中预先声明的长度变量,将所述宽度值赋值给unity3d着色器中预先声明的宽度变量,将所述地面模型在世界坐标系中的位置坐标值赋值给unity3d着色器中预先声明的位置坐标变量;根据被赋值的地面对象的长度变量、宽度变量和位置坐标变量,建立所述渲染平面坐标系。

在本发明的一个实施例中,坐标变换单元940,适于从所述机房模型中获取位于所述地面模型上的各传感器模型在世界坐标系中的位置坐标值;根据所述地面模型的长度值、宽度值和在世界坐标系中的位置坐标值,将各传感器模型在世界坐标系中的位置坐标值变换为在所述渲染平面坐标系中的位置坐标值。

其中,在一个具体的实施例中,坐标变换单元940,适于通过如下方式将各传感器模型在世界坐标系中的位置坐标值变换为在所述渲染平面坐标系中的位置坐标值:

所述地面模型的长度值为a,宽度值为b,所述地面模型在世界坐标系 中的位置坐标值包括该地面模型的中心点在世界坐标系中的位置坐标值(xc,yc);对于一个传感器模型,该传感器模型在世界坐标系中的位置坐标值为(x,y),则该传感器模型在所述渲染平面坐标系中的相对位置坐标值为(x,y),

在本发明的一个实施例中,预处理单元910,进一步适于在模型导入单元920将待显示机房的机房模型导入到unity3d中之前,在unity3d着色器中预先声明多个温度点对象,每个温度点对象的变量包括:该温度点对象的位置坐标变量,该温度点对象的温度变量。

在此情况下,渲染处理单元950,适于将各传感器模型与unity3d着色器中预先声明的多个温度点对象建立一一对应关系;对于每个传感器模型,将该传感器模型在所述渲染平面上的相对位置坐标值赋值给对应的温度点对象的位置坐标变量,将该传感器模型的温度值赋值给对应的温度点对象的温度变量;根据被赋值的各温度点对象的位置坐标变量和温度变量,利用unity3d着色器在所述渲染平面上进行温场分布渲染。

在本发明的一个实施例中,每个温度点对象的变量还包括:该温度点对象的生效标识;则渲染处理单元950,进一步适于在根据被赋值的各温度点对象的位置坐标变量和温度变量,利用unity3d着色器在所述渲染平面上进行温场分布渲染之前,将所述被赋值的各温度点对象中的一个或多个温度点对象的生效标识设置为生效状态;根据生效标识设置为生效状态的各温度点对象的位置坐标变量和温度变量,利用unity3d着色器在所述渲染平面上进行温场分布渲染。

需要说明的是,图8-图9所示装置的各实施例与图4-图7所示的各实施例对应相同,上文中已有详细说明,在此不再赘述。

综上所述,本发明提供的技术方案通过保证所建立的渲染平面坐标系所形成的渲染平面与地面模型的长宽等比例性,保证了最终显示的地面温场分布的正确性,不会发生扭曲和变形;又通过将技术方案小粒度化,使得方案中可以灵活地变化温度点对象,当机房中的温度传感器的数量或位置发生变 化时,可以动态地变化机房模型中的传感器模型,动态地进行相应的温场分布的渲染;使得机房的运维人员可以在unity3d机房模型展示界面中直观地看到机房地面各区域的温度高低和对比,有利于对机房环境及运行情况进行有效地监控。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1