发明名称 |
一种基于OSG三维引擎的海陆接合可视化方法 |
摘要 |
本发明涉及一种基于OSG三维引擎的海陆接合可视化方法,属于图形可视化技术领域。包括:使用OSG三维渲染引擎进行三维场景框架搭建;使用VPB生成大规模地形模型文件;使用海洋绘制插件生成海洋节点;将海洋节点与地形模型文件同时加载入OSG的场景树中进行可视化;如果海洋绘制插件绘制出的海洋节点不会跟随视点移动而移动,设置海洋节点为动态节点;设置海洋高度随视点高度动态变化并根据海洋高度进行显示。对比现有技术,本发明方法通过在一个场景中同时加入大规模陆地节点与海洋节点,并根据视点高度动态调整海洋的高度,使得视点远离海陆场景时,海洋与陆地的深度缓存相差不会过小,从而避免海陆频闪的问题;同时简单高效。 |
申请公布号 |
CN105069841A |
申请公布日期 |
2015.11.18 |
申请号 |
CN201510454965.2 |
申请日期 |
2015.07.29 |
申请人 |
北京理工大学 |
发明人 |
李凤霞;霍达;李立杰;陈宇峰 |
分类号 |
G06T17/05(2011.01)I |
主分类号 |
G06T17/05(2011.01)I |
代理机构 |
|
代理人 |
|
主权项 |
一种基于OSG三维引擎的海陆接合可视化方法,其特征在于,包括以下步骤:步骤1,使用OSG三维渲染引擎进行三维场景框架搭建;步骤2,使用地形建模插件生成大规模地形模型文件;步骤3,使用海洋绘制插件生成海洋节点;并将海洋节点与地形模型文件同时加载入OSG的场景树中进行可视化;步骤4,如果海洋绘制插件绘制出的海洋节点不会跟随视点移动而移动,设置海洋节点为动态节点,即海洋节点绘制范围不会动态变化,并且应跟随视点移动而移动;步骤5,设置海洋高度随视点高度动态变化,然后根据海洋高度进行海洋场景显示,具体过程如下:步骤5.1在三维场景中加入漫游器;步骤5.2修改漫游器的缩放回调函数,在回调函数中按照下述公式(1)或(2)设置海洋高度值,公式(1)是针对着重观察陆地模型时的情况,公式(2)是针对着重观察海洋效果时的情况:<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><mi>H</mi><mo>=</mo><mfenced open = '{' close = ''><mtable><mtr><mtd><mrow><msub><mi>H</mi><mn>0</mn></msub><mo>-</mo><mfrac><mrow><mi>d</mi><mi>i</mi><mi>s</mi><mi>tan</mi><mi>c</mi><mi>e</mi></mrow><mrow><mfrac><mn>5</mn><mn>6</mn></mfrac><mo>×</mo><mi>W</mi><mo>÷</mo><mi>h</mi></mrow></mfrac></mrow></mtd><mtd><mrow><mi>d</mi><mi>i</mi><mi>s</mi><mi>tan</mi><mi>c</mi><mi>e</mi><mo>≤</mo><mfrac><mn>5</mn><mn>6</mn></mfrac><mo>×</mo><mi>W</mi></mrow></mtd></mtr><mtr><mtd><mrow><msub><mi>H</mi><mn>0</mn></msub><mo>-</mo><mi>h</mi></mrow></mtd><mtd><mrow><mi>d</mi><mi>i</mi><mi>s</mi><mi>tan</mi><mi>c</mi><mi>e</mi><mo>></mo><mfrac><mn>5</mn><mn>6</mn></mfrac><mo>×</mo><mi>W</mi></mrow></mtd></mtr></mtable></mfenced><mo>;</mo><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000769901420000011.GIF" wi="1780" he="278" /></maths><maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><mi>H</mi><mo>=</mo><mfenced open = '{' close = ''><mtable><mtr><mtd><mrow><msub><mi>H</mi><mn>0</mn></msub><mo>+</mo><mfrac><mrow><mi>d</mi><mi>i</mi><mi>s</mi><mi>tan</mi><mi>c</mi><mi>e</mi></mrow><mrow><mfrac><mn>5</mn><mn>6</mn></mfrac><mo>×</mo><mi>W</mi><mo>÷</mo><mi>h</mi></mrow></mfrac></mrow></mtd><mtd><mrow><mi>d</mi><mi>i</mi><mi>s</mi><mi>tan</mi><mi>c</mi><mi>e</mi><mo>≤</mo><mfrac><mn>5</mn><mn>6</mn></mfrac><mo>×</mo><mi>W</mi></mrow></mtd></mtr><mtr><mtd><mrow><msub><mi>H</mi><mn>0</mn></msub><mo>+</mo><mi>h</mi></mrow></mtd><mtd><mrow><mi>d</mi><mi>i</mi><mi>s</mi><mi>tan</mi><mi>c</mi><mi>e</mi><mo>></mo><mfrac><mn>5</mn><mn>6</mn></mfrac><mo>×</mo><mi>W</mi></mrow></mtd></mtr></mtable></mfenced><mo>;</mo><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000769901420000012.GIF" wi="1781" he="272" /></maths>其中,W为海陆场景规模,H<sub>0</sub>为初始化海洋绘制高度,distance为视点距离海陆场景的高度,h为海洋波浪高度;步骤5.3根据计算得到的海洋高度值,区分如下情况进行显示:(1)如果地形建模插件所绘制出的地形模型中的海洋部分有贴图,则distance增长到5/6W之后,海洋节点不再显示,只显示贴图即可;(2)如果地形建模插件所绘制出的地形模型中的海洋部分没有贴图,则distance增长到5/6W之后,海洋节点继续显示,高度不再发生变化。 |
地址 |
100081 北京市海淀区中关村南大街5号北京理工大学 |