一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种三维场景下流体风场图渲染方法与流程

2022-06-30 01:09:47 来源:中国专利 TAG:


1.本发明属于三维图像建模技术领域,具体涉及一种三维场景下流体风场图渲染方法。


背景技术:

2.三维渲染技术随着移动互联网应用的发展得到飞速发展。中国专利《一种大场景的三维渲染方法及系统》(申请号201710772069.x;申请日2017.08.31) 公开了一种三维渲染方法,提及电子地图采用三维渲染,其方案是将当前待渲染场景三维渲染所需的渲染数据动态加载到内存;确定当前待渲染场景对应的预设渲染加速规则,并依据所述预设渲染加速规则,调用所述渲染线程对当前待渲染场景中的多个待渲染物体进行三维渲染。其提出了多个渲染对象在一个批次内渲染完成或者多个模型数据合并确定为同一个渲染批次的方案,加速渲染,以提高渲染效果。但是该渲染方案在实际应用中,静态对象适用效果好,对于动态对象,实际渲染中流动性的模拟的精度性有待提高,用户体验需要进一步改善。中国专利《三维大场景的移动过程中的场景渲染过渡方法》(申请号201810288385.4;申请日2018.04.03)公开了一种三维场景渲染过渡方法,提及如百度街景和谷歌街景采用的渲染方法,提出了三维模型建好后的三维模型进行贴图,能够更为流畅的对移动过程中的场景渲染进行过渡,但是对于如风场图这种多变化特征、多变化属性的动态对象如何高精度划分、如何高精度数值化模拟并没有给出实现方案。


技术实现要素:

3.本发明目的是提供一种三维场景下流体风场图渲染方法,解决背景技术中的问题,对于流体风场图这种动态对象高精度划分、高精度数值化模拟,改善三维场景下流体风场图数值模拟及可视效果,且渲染方法也简单。
4.为了实现以上目的,本发明采用的技术方案为:一种三维场景下流体风场图渲染方法,包括以下步骤:
5.步骤1):开始渲染模型:根据当前的三维场景视域和获取到的风场数据,其中,风场数据为等步长经度、纬度划分的网格数据,每个格点具有经度lng、纬度lat、速度值speed、方向值dir;并依据下列公式计算出横方向向量值u、纵方向的向量值v:
6.u=-speed*sin(dir)
7.v=-speed*cos(dir);
8.步骤2):根据风场数据生成棋盘网格模型,网格模型对象中包括网格的四周边界值xmin、xmax、ymin、ymax、行数cols、列数rows,每个棋盘网格具有以下数据:对应的所在行x,所在列y、经度lng、纬度lat、横方向向量值u、纵方向的向量值v;
9.步骤3):根据风场范围生成随机的多个粒子数据,每个粒子数据具备的属性数据有:初始坐标经度lng、纬度lat、粒子存活的生命周期次数age;
10.步骤4):循环所有粒子对象,根据每个粒子的当前经纬度位[lng,lat]值计算出该
粒子在棋盘网格中的横纵坐标位置[x,y];
[0011]
步骤5):根据横纵坐标位置[x,y],获取当前位置相邻的4个经纬网格坐标 [x1,y1]、[x1,y2]、[x2,y1]、[x2,y2]及其对应的u、v值;
[0012]
步骤6):通过在x方向上进行两次线性插值计算,然后在y方向上进行一次插值计算步骤7:根据粒子当前所在位置的经度lng、纬度lat和计算得到的横方向向量值u、纵方向向量值v,步长step常量值,计算出粒子下一次要到达的位置的经度值nextlng和纬度值nextlat;计算公式如下:
[0013]
nextlng=lng step*u
[0014]
nextlat=lat step*v;
[0015]
步骤8):粒子新的位置值[nextlng、nextlat]判断是否在当前三维场景视域内,如果不在当前三维场景视域范围内,结束渲染;
[0016]
步骤9):粒子根据计算得到的新的位置值[nextlng、nextlat]进行移动,渲染到新的位置,形成流动的结果,并且粒子的生命周期age值减1;
[0017]
步骤10):如果粒子的生命周期age值为0,结束渲染;
[0018]
步骤11):如果三维场景内的粒子数少于设置的常量值时,再次生成随机的新的粒子进行渲染;
[0019]
步骤12):在三维场景中渲染出动态的流体风场图;结束渲染。
[0020]
进一步的,步骤6)中通过下面公式分别计算出粒子所在x、y坐标位置的u 值和v值:
[0021][0022][0023][0024]
进一步的,步骤11)中粒子数常量值为1万。
[0025]
进一步的,步骤12)中通过视觉处理器在三维场景中渲染出动态的流体风场图。
[0026]
再进一步的,步骤3)中初始坐标经度lng、纬度lat为一个集合值。
[0027]
本发明的技术效果在于:对于流体风场图这种动态对象高精度划分、高精度数值化模拟,改善三维场景下流体风场图数值模拟及可视效果,且渲染方法也简单,且实现了风场动态数据的缓存显示,满足三维场景下风场变化过程高精细度的展示。
附图说明
[0028]
图1为本发明的具体实施例的流程图;
[0029]
图2为本发明的具体实施例中的网格图;
[0030]
图3为本发明的具体实施例网格中的坐标图。
具体实施方式
[0031]
下面将结合本发明实施例,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0032]
参照附图,本发明的具体实施例:一种三维场景下流体风场图渲染方法,包括如下步骤:
[0033]
步骤1):开始渲染(模型):根据当前的三维场景视域(数据集)和获取到的风场数据,其中,风场数据为等步长经度、纬度划分的网格(数据),每个格点具有经度lng、纬度lat、速度值speed、方向值dir;并依据下列公式计算出横方向(x方向)向量值u、纵方向(y方向)的向量值v:
[0034]
u=-speed*sin(dir)
[0035]
v=-speed*cos(dir);
[0036]
步骤2):根据风场数据生成(棋盘)网格模型,网格模型对象(数据)中包括网格的四周边界值xmin(所在行x最小值)、xmax(所在行x最大值)、 ymin(所在列y最小值)、ymax(所在列y最大值)、行数cols、列数rows,每个(棋盘)网格具有(以下数据):对应的所在行x,所在列y、经度lng、纬度lat、横方向(x方向)向量值u、纵方向(y方向)的向量值v;
[0037]
步骤3):根据风场范围生成随机的多个粒子(数据),每个粒子(数据) 具备的属性数据(子数据)有:初始坐标经度lng、纬度lat、粒子存活的生命周期次数age;
[0038]
步骤4):循环所有粒子对象,根据每个粒子的当前经纬度位[lng,lat]值计算出该粒子在(棋盘)网格中的横纵坐标位置[x,y];
[0039]
//根据经纬度,算出棋盘格位置
[0040]
togridxy(lng,lat){ let x=((lng-this.xmin)/(this.xmax-this.xmin))*(this.cols-1); let y=((this.ymax-lat)/(this.ymax-this.ymin))*(this.rows-1); return{x,y}; }
[0041]
步骤5):根据横纵坐标位置[x,y],如图3所示,获取当前位置相邻的4个经纬网格坐标[x1,y1]、[x1,y2]、[x2,y1]、[x2,y2]及其对应的u、v值(分别是q11、q21、q12、q22);
[0042]
步骤6):通过在x方向(横坐标)上进行两次线性插值计算,然后在y方向(纵坐标)上进行一次插值计算,具体的,通过下面公式分别计算出粒子所在x、y(横、纵)坐标位置的u值和v值:
[0043][0044][0045][0046]
步骤7:根据粒子当前所在位置的经度lng、纬度lat和计算得到的横方向 (x方向)
向量值u、纵方向(y方向)向量值v,步长step常量值,计算出粒子下一次要到达的位置的经度值nextlng和纬度值nextlat;计算公式如下:
[0047]
nextlng=lng step*u
[0048]
nextlat=lat step*v;
[0049]
步骤8):粒子新的位置(值)[nextlng、nextlat](即前述下一次要到达的位置的经度值、纬度值)判断是否在当前三维场景视域(数据集)内,如果不在当前(三维场景)视域范围内,结束渲染;
[0050]
步骤9):粒子根据计算得到的新的位置(值)[nextlng、nextlat](即前述下一次要到达的位置的经度值、纬度值)进行移动,渲染到新的位置,形成流动的结果,并且粒子的生命周期age值减1;
[0051]
步骤10):如果粒子的生命周期age值为0,结束渲染;
[0052]
步骤11):如果三维场景内的粒子数少于设置的常量值(如1万个粒子)时,再次生成随机的新的粒子进行渲染;
[0053]
步骤12):通过(视觉处理器gpu)在三维场景中渲染出动态的流体风场图;结束渲染。
[0054]
本发明对于流体风场图这种动态对象高精度划分、高精度数值化模拟,改善三维场景下流体风场图数值模拟及可视效果,且渲染方法也简单,且实现了风场动态数据的缓存显示,满足三维场景下风场变化过程高精细度的展示。
[0055]
基于上述具体实施例的方案,本发明的另一实施例:
[0056]
一种三维场景下流体风场图渲染方法,包括如下步骤:
[0057]
步骤1):开始渲染模型:根据当前的三维场景视域(数据集)和获取到的风场数据进行采集(分析),在该(三维场景)视域内加载棋盘网格(模型) 中;
[0058]
步骤2):根据采集的或者备有的数据生成风速风向计算棋盘网格模型(有了棋盘网格模型,就可以为后续计算粒子在当前位置的的风速值提供依据);
[0059]
步骤3):根据风场范围生成随机的多个粒子(数据),每个粒子(数据) 具备的属性数据有:初始位置值(参照前述具体实施例的初始坐标经度lng、纬度lat,该初始位置值是初始坐标经度、纬度的一个集合值)、粒子存活的生命周期次数;
[0060]
步骤4):如果随机生成的粒子(数据)不存在于当前的三维场景视域(数据集)内,将其生命周期(值)置为0,结束渲染;
[0061]
步骤5):根据粒子(数据)的初始位置(值)计算出该粒子在棋盘网格中的横、纵坐标位置;
[0062]
步骤6):使用双性线(即前述具体实施例的两次线性)插值,计算出粒子所在横、纵坐标位置的风速风向值:
[0063][0064]
[0065][0066]
步骤7):根据得到的风速风向值,即横、纵方向速度值,计算出粒子下一次要到达的位置,如此循环往复(粒子就能在图上动起来);
[0067]
步骤8):粒子每渲染一次后,粒子的生命周期减1,直至该粒子的生命周期为0;
[0068]
步骤9):当粒子数量少于给定值时,再次生成随机的粒子,设定或判定(粒子)当前的位置,以及计算(粒子)下一次到达的位置,生命周期递减,直至生命周期为0;
[0069]
步骤10):(已经拥有粒子的当前位置以及下一次到达的位置,就可以绘制出一条流动的线或线集),通过(视觉处理器gpu)在三维场景中渲染出动态的流体风场图;结束渲染。
[0070]
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献