基于有向距离场的3D温场图渲染方法、装置、介质和设备转让专利

申请号 : CN202111372182.1

文献号 : CN114037811B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 董伟黄正雨井刚李鉴陈傲寒王赛

申请人 : 北京优锘科技有限公司

摘要 :

本发明涉及一种基于有向距离场的3D温场图渲染方法,所述方法包括如下步骤:提取三角面模型中三角形数据,构建BVH加速结构;基于BVH加速结构烘焙出有向距离场数据并存储至3D纹理;GPU利用3D纹理渲染3D温场图;与传统场景渲染结果混合输出至显示器。本发明的方法不再局限于只在模型表面渲染,而是可以真实地在3D空间中渲染出精确的温度信息。本发明还涉及一种基于有向距离场的3D温场图渲染装置、存储介质和设备。

权利要求 :

1.一种基于有向距离场的3D温场图渲染方法,其特征在于,所述方法包括如下步骤:提取三角面模型中三角形数据,构建BVH加速结构;

基于BVH加速结构烘焙出有向距离场数据并存储至3D纹理;

GPU利用3D纹理、BVH包围盒数据、3D空间中实际温度传感器数据渲染3D温场图;

与传统场景渲染结果混合输出至显示器;

其中,所述基于BVH加速结构烘焙出有向距离场数据并存储至3D纹理包括:基于三维引擎创建3D纹理对象;

设置过滤模式,开启双线性插值或者三线性插值进行纹理采样过滤;

填充3D纹理对象;

所述填充3D纹理对象包括:

将BVH加速结构空间体素化为3D纹理对应的体素数量;

利用体素在BVH加速结构中位置查询当前体素相对三角面模型的有向距离。

2.根据权利要求1所述的基于有向距离场的3D温场图渲染方法,其特征在于,所述提取三角面模型中三角形数据,构建BVH加速结构包括:在三维引擎中通过静态网格获取顶点缓冲对象VBO和三角序号缓冲对象IBO;

利用所述顶点缓冲对象VBO和三角序号缓冲对象IBO提取三角形数据,并存储到自定义三角形数据结构中;

基于SAH方法构建BVH加速结构。

3.根据权利要求1所述的基于有向距离场的3D温场图渲染方法,其特征在于,所述GPU利用3D纹理、BVH包围盒数据、3D空间中实际温度传感器数据渲染3D温场图包括:将所述3D纹理、BVH包围盒数据、3D空间中实际温度传感器数据传递至着色器中;

在所述着色器中通过光线步进方法渲染3D温场图,同时检测渲染范围与进行深度测试。

4.根据权利要求3所述的基于有向距离场的3D温场图渲染方法,其特征在于,在所述着色器中通过光线步进方法渲染3D温场图,同时检测渲染范围与进行深度测试包括:在所述着色器中通过光线步进方法进行3D渲染;

渲染范围检测优化,并执行渲染器着色代码;

计算3D纹理的采样UVW,以及单个采样点权重;

计算当前像素最终颜色。

5.根据权利要求4所述的基于有向距离场的3D温场图渲染方法,其特征在于,所述计算当前像素最终颜色包括:单个3D采样点的颜色为Csp,采样点坐标为sp,最终颜色为C,其中通过Clamp过滤掉有向距离小于0的部分,然后累加光路L上所有采样点的颜色Ctemp;

sp=ro+rd*S;

Ctemp=f(sp,hps,whp,color)=∫whp*dist(sp,hp)/rhp*color;

其中,sp为采样点在三维空间的位置,ro为光线起点,rd为光线方向,S为累计光线步长,hps为所有温度传感器采样点数组,whp为单个传感器权重默认为1,rhp为数据覆盖半径,color为基础色,从色带采样得到,hp为单个温度传感器采样点;

Csp=f(UVW)=clamp(sample(UVW),0,1)*Ctemp;

其中,L为光线行进总长即光路,θ为光线步长,Wsp为单个采样点权重。

6.一种基于有向距离场的3D温场图渲染装置,其特征在于,所述装置包括:提取模块,用于提取三角面模型中三角形数据,构建BVH加速结构;

烘焙模块,用于基于BVH加速结构烘焙出有向距离场数据并存储至3D纹理;

渲染模块,用于通过GPU利用3D纹理、BVH包围盒数据、3D空间中实际温度传感器数据渲染3D温场图;

输出模块,用于将所述渲染模块渲染出的3D温场图与传统场景渲染结果混合输出至显示器;

其中,所述烘焙模块具体包括:

基于三维引擎创建3D纹理对象;

设置过滤模式,开启双线性插值或者三线性插值进行纹理采样过滤;

填充3D纹理对象;

所述填充3D纹理对象包括:

将BVH加速结构空间体素化为3D纹理对应的体素数量;

利用体素在BVH加速结构中位置查询当前体素相对三角面模型的有向距离。

7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如权利要求1‑5中任一项所述的基于有向距离场的3D温场图渲染方法中的步骤。

8.一种基于有向距离场的3D温场图渲染设备,其特征在于,包括:处理器和存储器;所述存储器上存储有可被所述处理器执行的计算机可读程序;所述处理器执行所述计算机可读程序时实现如权利要求1‑5中任一项所述的基于有向距离场的3D温场图渲染方法中的步骤。

说明书 :

基于有向距离场的3D温场图渲染方法、装置、介质和设备

技术领域

[0001] 本发明涉及计算机技术领域,尤其涉及一种基于有向距离场的3D温场图渲染方法、装置、存储介质和设备。

背景技术

[0002] 因为图形引擎多数都是基于三角面进行渲染,所以现有的温场图都是基于平面进行表示的,它无法精确地表示3D空间真实的情况,比如人体的体表温度和体内温度是不同的,传统的方案无法正确地表示此种情况,只能绘制表面温度。
[0003] 因此,本领域迫切需要开发出一种能够真实表示3D空间内部温场图的方法。

发明内容

[0004] 本发明所要解决的技术问题是针对现有技术的不足,提供一种基于有向距离场的3D温场图渲染方法、装置、存储介质和设备,主要用于解决现有的建筑楼层模型生成依靠人工制作效率较低、制作周期长以及修改展示效果流程复杂的技术问题。
[0005] 本发明解决上述技术问题的技术方案如下:
[0006] 一种基于有向距离场的3D温场图渲染方法,所述方法包括如下步骤:
[0007] 提取三角面模型中三角形数据,构建BVH加速结构;
[0008] 基于BVH加速结构烘焙出有向距离场数据并存储至3D纹理;
[0009] GPU利用3D纹理渲染3D温场图;
[0010] 与传统场景渲染结果混合输出至显示器。
[0011] 优选地,所述提取三角面模型中三角形数据,构建BVH加速结构包括:
[0012] 在三维引擎中通过静态网格获取顶点缓冲对象VBO和三角序号缓冲对象IBO;
[0013] 利用所述顶点缓冲对象VBO和三角序号缓冲对象IBO提取三角形数据,并存储到自定义三角形数据结构中;
[0014] 基于SAH方法构建BVH加速结构。
[0015] 优选地,所述基于BVH加速结构烘焙出有向距离场数据并存储至3D纹理包括:
[0016] 基于三维引擎创建3D纹理对象;
[0017] 设置过滤模式,开启双线性插值或者三线性插值进行纹理采样过滤;
[0018] 填充3D纹理对象。
[0019] 优选地,所述填充3D纹理对象包括:
[0020] 将BVH加速结构空间体素化为3D纹理对应的体素数量;
[0021] 利用体素在BVH加速结构中位置查询当前体素相对三角面模型的有向距离。
[0022] 优选地,所述GPU利用3D纹理渲染3D温场图包括:
[0023] 将所述3D纹理、BVH包围盒数据、3D空间中实际温度传感器数据传递至着色器中;
[0024] 在所述着色器中通过光线步进方法渲染3D温场图,同时检测渲染范围与进行深度测试。
[0025] 优选地,在所述着色器中通过光线步进方法渲染3D温场图,同时检测渲染范围与进行深度测试包括:
[0026] 在所述着色器中通过光线步进方法进行3D渲染;
[0027] 渲染范围检测优化,并执行渲染器着色代码;
[0028] 计算3D纹理的采样UVW,以及单个采样点权重;
[0029] 计算当前像素最终颜色。
[0030] 优选地,所述计算当前像素最终颜色包括:
[0031] 单个3D采样点的颜色为Csp,采样点坐标为sp,最终颜色为C,其中通过Clamp过滤掉有向距离小于0的部分,然后累加光路L上所有采样点的颜色Ctemp;
[0032] sp=ro+rd*S;
[0033] Ctemp=f(sp,hps,whp,color)=∫whp*dist(sp,hp)/rhp*color;
[0034] 其中,sp为采样点在三维空间的位置,ro为光线起点,rd为光线方向,S为累计光线步长,hps为所有温度传感器采样点数组,whp为单个传感器权重默认为1,rhp为数据覆盖半径,color为基础色,从色带采样得到,hp为单个温度传感器采样点;
[0035] Csp=f(UVW)=clamp(sample(UVW),0,1)*Ctemp;
[0036]
[0037]
[0038] 其中,L为光线行进总长即光路,θ为光线步长,Wsp为单个采样点权重。
[0039] 本发明的有益效果是:提出了一种基于有向距离场的3D温场图渲染方法,不再局限于只在模型表面渲染,而是可以真实地在3D空间中渲染出精确的温度信息。同理,如果通过着色器获取了空气质量传感器数据、重力传感器数据、压力传感器数据、风力传感器数据或人员密度传感器数据等信息,则通过本发明的方法也可以输出与实际场景对应的渲染效果图,不局限于上述描述的3D温场图。
[0040] 本发明还解决上述技术问题的另一种技术方案如下:
[0041] 一种基于有向距离场的3D温场图渲染装置,所述装置包括:
[0042] 提取模块,用于提取三角面模型中三角形数据,构建BVH加速结构;
[0043] 烘焙模块,用于基于BVH加速结构烘焙出有向距离场数据并存储至3D纹理;
[0044] 渲染模块,用于通过GPU利用3D纹理渲染3D温场图;
[0045] 输出模块,用于将所述渲染模块渲染出的3D温场图与传统场景渲染结果混合输出至显示器。
[0046] 此外,本发明提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如上述技术方案中任一项所述的基于有向距离场的3D温场图渲染方法中的步骤。
[0047] 本发明还提供一种基于有向距离场的3D温场图渲染设备,包括:处理器和存储器;所述存储器上存储有可被所述处理器执行的计算机可读程序;所述处理器执行所述计算机可读程序时实现如上述技术方案中任一项所述的基于有向距离场的3D温场图渲染方法中的步骤。
[0048] 本发明附加的方面的优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明实践了解到。

附图说明

[0049] 为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0050] 图1为本发明实施例所述的一种基于有向距离场的3D温场图渲染方法的流程示意图;
[0051] 图2为本发明另一实施例所述的一种基于有向距离场的3D温场图渲染装置的模块示意图。

具体实施方式

[0052] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
[0053] 如图1所示,一种基于有向距离场的3D温场图渲染方法包括以下步骤:
[0054] 110、提取三角面模型中三角形数据,构建BVH加速结构;
[0055] 120、基于BVH加速结构烘焙出有向距离场数据并存储至3D纹理;
[0056] 130、GPU利用3D纹理渲染3D温场图;
[0057] 140、与传统场景渲染结果混合输出至显示器。
[0058] 本发明将显式模型(传统三角面模型)烘焙得到隐式模型(有向距离场),然后使用体渲染的方法在GPU上直接渲染3D温场图,并与传统3D场景渲染结果进行正确混合输出至显示器,从而可以真实地在3D空间中渲染出精确的温度信息。
[0059] 进一步地,步骤110中所述提取三角面模型中三角形数据,构建BVH(层次包围盒)加速结构具体包括:
[0060] 111、在三维引擎中通过静态网格获取顶点缓冲对象VBO和三角序号缓冲对象IBO;
[0061] 112、利用所述顶点缓冲对象VBO和三角序号缓冲对象IBO提取三角形数据,并存储到自定义三角形数据结构FTriangle中,比如序号【0,1,2】三个顶点构成一个三角形;
[0062] 113、基于SAH(Surface Area Heuristic表面积启发式)方法构建BVH加速结构。
[0063] 本发明选用SAH方法构建BVH加速结构,当用于后续查询数量较大时,能获得较大收益。BVH加速结构的构造具体目标就是把空间中的三角形分别按设定的最大数量划分到不同的AABB包围盒中。
[0064] 优选地,步骤120中所述基于BVH加速结构烘焙出有向距离场数据并存储至3D纹理具体包括:
[0065] 121、基于三维引擎创建3D纹理对象;
[0066] 122、设置过滤模式,开启双线性插值或者三线性插值,这样可以带来更加光滑柔和的色彩过渡;
[0067] 123、填充3D纹理对象。
[0068] 上述3D纹理用于存储有向距离,3D纹理需要控制在256单位以上,这样可以得到更好的显示效果,单位数量仅影响其生成时间。需要说明的是,3D纹理对象相较于普通2D纹理贴图,可以理解为多张堆叠在一起的2D纹理。
[0069] 进一步地,上述步骤123中所述填充3D纹理对象具体包括:
[0070] 1231、将BVH加速结构空间体素化为3D纹理对应的体素数量;
[0071] 1232、利用体素在BVH加速结构中位置查询当前体素相对三角面模型的有向距离。其中,有向可以理解为在模型内部,还是在模型外部,如果在模型内部则内部系数为+1,如果在模型外部则外部系数为‑1。
[0072] 上述体素为3D空间中一个单位立方体。
[0073] 优选地,步骤130中所述GPU利用3D纹理渲染3D温场图具体包括:
[0074] 131、将所述3D纹理、BVH包围盒数据、3D空间中实际温度传感器数据等通过三维引擎中的材质球UMaterialInstace传递至着色器中;
[0075] 132、在所述着色器中通过光线步进方法渲染3D温场图,同时检测渲染范围与进行深度测试。
[0076] 上述温度传感器数据包括传感器温度值、传感器采集范围、传感器采集位置等数据信息。并且,本发明中的温度传感器数据可以替换为空气质量传感器、人员密度传感器等传感器数据,对应地生成3D渲染图,由此本发明也可以适用于渲染其他可以显示真实数据的3D渲染图,不局限于上述温场图。
[0077] 优选地,上述步骤132中在所述着色器中通过光线步进方法渲染3D温场图,同时利用利用RayAABB(射线与轴对齐包围盒碰撞检测)检测渲染范围与进行深度测试具体包括:
[0078] 1321、在所述着色器中通过光线步进Raymarching方法进行3D渲染;
[0079] 1322、渲染范围检测优化,假设从相机位置射出的光线与模型的AABB包围盒有交点,并且入射点的深度小于三维引擎场景深度的深度,则执行渲染着色器代码;
[0080] 1323、计算3D纹理的采样UVW,以及单个采样点权重。
[0081] 1324、计算当前像素最终颜色。
[0082] 具体地,在光线与模型的AABB包围盒有交点时,计算出光线与AABB相交的入点P和出点Q,并计算出光线行进总长(光路)L,按照光线步进方法设定的光线步长θ,即可计算出3D纹理的采样UVW。其中,光线起点为ro,光线方向为rd,m1为AABB的最小点,m2为AABB的最大点,累计光线步长为S,则采样UVW、以及单个采样点权重Wsp为:
[0083]
[0084]
[0085] 优选地,步骤1324中所述计算当前像素最终颜色具体包括:
[0086] 单个3D采样点的颜色为Csp,采样点坐标为sp,最终颜色为C,其中通过Clamp过滤掉有向距离小于0的部分,由于只在模型内部渲染温度效果,然后累加光路L上所有采样点的颜色Ctemp;
[0087] sp=ro+rd*S;
[0088] Ctemp=f(sp,hps,whp,color)=∫whp*dist(sp,hp)/rhp*color;
[0089] 其中,sp为采样点在三维空间的位置,ro为光线起点,rd为光线方向,S为累计光线步长,hps为所有温度传感器采样点数组,whp为单个传感器权重默认为1,rhp为数据覆盖半径,color为基础色,从色带采样得到,hp为单个温度传感器采样点;
[0090] Csp=f(UVW)=clamp(sample(UVW),0,1)*Ctemp;
[0091]
[0092] 本发明步骤130中通过基于GPU渲染获得3D温场图,然后将渲染结果与已有传统场景渲染结果混合输出到显示器,最后执行一个简单的颜色混合,由三维引擎最终呈现到显示器上,其具体输出方式如下:
[0093] Output=f(SceneColor,Csp)=SceneColor.rgb*(1‑Csp.a)+Csp.rgb*Csp.a。
[0094] rgb是代表颜色中的红绿蓝三原色,a是代表透明度,SceneColor为当前帧缓冲颜色。
[0095] 本发明的一种基于有向距离场的3D温场图渲染方法,不再局限于只在模型表面渲染,而是可以真实地在3D空间中渲染出精确的温度信息。同理,如果通过着色器获取了空气质量传感器数据、重力传感器数据、压力传感器数据、风力传感器数据或人员密度传感器数据等信息,则通过本发明的方法也可以输出与实际场景对应的渲染效果图,不局限于上述描述的3D温场图。
[0096] 本发明还解决上述技术问题的另一种技术方案如下:
[0097] 如图2所示,一种基于有向距离场的3D温场图渲染装置包括:
[0098] 提取模块,用于提取三角面模型中三角形数据,构建BVH加速结构;
[0099] 烘焙模块,用于基于BVH加速结构烘焙出有向距离场数据并存储至3D纹理;
[0100] 渲染模块,用于通过GPU利用3D纹理渲染3D温场图;
[0101] 输出模块,用于将所述渲染模块渲染出的3D温场图与传统场景渲染结果混合输出至显示器。
[0102] 本发明的基于有向距离场的3D温场图渲染装置可以准确地显示模型内部空间温度的准确情况,相比现有技术中只能描述模型表面的温度更准确更形象;以及,本发明对三角面模型没有任何要求,可以通过用户提供获取,或者直接获取现有现成的三角面模型,直接对任意三角面模型进行处理获取模型内部空间温度的准确情况,与现有方案需要新建一份绘制温度效果的特殊模型或者编写模型专用的着色器相比具有普适性。
[0103] 此外,本发明提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如上述技术方案中任一项所述的基于有向距离场的3D温场图渲染方法中的步骤。
[0104] 本发明还提供一种基于有向距离场的3D温场图渲染设备,包括:处理器和存储器;所述存储器上存储有可被所述处理器执行的计算机可读程序;所述处理器执行所述计算机可读程序时实现如上述技术方案中任一项所述的基于有向距离场的3D温场图渲染方法中的步骤。
[0105] 在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
[0106] 本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0107] 在本发明所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
[0108] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0109] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0110] 所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
[0111] 基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read‑OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括是电载波信号和电信信号。
[0112] 以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
[0113] 以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。