CN105427371B - 一种三维透视投影场景中保持图形对象等像素面积显示的方法 - Google Patents
一种三维透视投影场景中保持图形对象等像素面积显示的方法 Download PDFInfo
- Publication number
- CN105427371B CN105427371B CN201510970102.0A CN201510970102A CN105427371B CN 105427371 B CN105427371 B CN 105427371B CN 201510970102 A CN201510970102 A CN 201510970102A CN 105427371 B CN105427371 B CN 105427371B
- Authority
- CN
- China
- Prior art keywords
- mtd
- mrow
- mtr
- drawing object
- mat
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10032—Satellite or aerial image; Remote sensing
Abstract
本发明公开了一种三维透视投影场景中保持图形对象等像素面积显示的方法,该方法在三维图形帧更新事件中,根据三维视口的Fov(Field Of View)与视截体纵横比等信息,结合图形对象的空间位置(深度信息)与基础比例系数,利用FOV与视口宽高静态不变的特点,动态计算图形对象的实际比例参数,通过投影变换达到在不同观察位置与观察视角时保持图形对象的像素面积不变的效果。本发明通过透视投影保证图形对象的三维立体效果,通过设计合理的数学计算模型进行运算,运算效率高,并且在场景发生变化时图形显示效果平稳,不会出现像素面积跳跃的现象。
Description
技术领域
本发明涉及三维态势显示技术领域,特别是涉及一种三维透视投影场景中保持图形对象等像素面积显示的方法。
背景技术
在各种仿真与应用信息系统中,通过实时访问遥感/侦察影像、数字高程模型、矢量地形图等地理空间数据,在空间范围进行剪裁,融合成所属区域的栅格图像数据,构建具备真实感的三维场景;通过雷达、电子侦察等传感器的探测、处理,将空中飞行的飞机,海面上航行的舰船,陆地上运动的车辆等动目标,在三维场景中进行显示,同时在三维场景中还需表达一些图标、文字、矢量图形、模型等信息,如在三维场景中静态显示机场图标、建筑标记、热点注记等,在实际的使用过程中,往往会要求这些三维图形在透视投影模式下保持等像素面积变化,不随观察位置和观察视角的变化而变化。
传统的方式是使用正交投影,但使用正交投影方式会导致物体没有深度信息,缺乏三维立体感,如图3所示。除了上述的使用正交投影方法外,还可使用动态更换纹理或重新构建图形的方法,但上述方法在显示效率上存在较大开销,并且过渡效果不平稳,容易出现跳变现象。
发明内容
发明目的:本发明的目的是提供一种能够保证图形对象的三维立体效果,运算效率高,不会出现像素面积跳跃现象的三维透视投影场景中保持图形对象等像素面积显示的方法。
本发明所述的三维透视投影场景中保持图形对象等像素面积显示的方法,包括以下的步骤:
S1:获取图形对象的位置与姿态,包括经纬度、高度、航向角、俯仰角、横滚角等,并将其转换为笛卡尔坐标系下的世界坐标V:
V={x,y,z},其中x、y、z分别表示世界坐标中的坐标值,单位为米;
S2:获取视口的视角信息Fov与宽高信息Width与Height:
Fov单位为度,取值范围为[0,45];Width与Height的单位为像素;
S3:根据图形对象的深度信息(即世界坐标V中的z分量),利用Fov与Height静态不变的特点,通过等比变换计算出比例系数Scale,计算过程如式(1)所示:
其中,V.z为步骤S1中得到的世界坐标V中的z分量(该分量表达了深度信息);
S4:根据式(2)计算放缩矩阵Matscale:
S5:根据V计算偏移矩阵Mattrans,并与Matscale相乘,得出最终的矩阵Matworld,实现投影变换,计算过程如式(3)和式(4)所示:
Matworld=Matscale*Mattrans (4)
其中,V.x为步骤S1中得到的世界坐标V中的x分量,V.y为步骤S1中得到的世界坐标V中的y分量。
有益效果:与现有技术相比,本发明具有如下的有益效果:
1)通过透视投影保证图形对象的三维立体效果;
2)通过设计合理的数学计算模型进行运算,运算效率高;
3)在场景发生变化时图形显示效果平稳,不会出现像素面积跳跃的现象。
附图说明
图1为本发明的方法流程图;
图2是本发明的透视投影的可视区域(平截头体)示意图;
图3是传统的正交投影的效果图;
图4是本发明的比例变换示意图。
具体实施方式
下面结合具体实施方式对本发明的技术方案作进一步的介绍。
图3是传统的正交投影的效果图。本发明采用透视投影方法,使显示的三维图形保持物体在视截体内的任何位置均不发生大小变化,获得最佳3D显示效果。在透视投影方法中,远处的物体看上去比近处的物体更小一些。它的可视区域看上去类似一个顶部被削平的金字塔,如图2所示,这个形状被称为平截头体(Frustum)。靠进可视区域前面的物体看上去比较接近它们的原始大小。但是,当靠近可视区域后部的物体被投影到可视区域的前部时,它们看上去就显得比较小。在模拟和3D动画中,这种投影能够获得最大程度的逼真感,并需要通过软件方法进行特殊处理。
本发明的方法,如图1所示,包括以下的步骤:
S1:获取图形对象的位置与姿态,包括经纬度、高度、航向角、俯仰角、横滚角等,并将其转换为笛卡尔坐标系下的世界坐标V:
V={x,y,z},其中x、y、z分别表示世界坐标中的坐标值,单位为米;
S2:获取视口的视角信息Fov与宽高信息Width与Height,如图4所示:
Fov单位为度,取值范围为[0,45];Width与Height的单位为像素;一般地,三维场景中的Fov、Width、Height等值具有恒定的比值关系,基于该特征,如要保持场景中的图形对象大小或像素面积不变,则利用图形对象的深度信息(即图形高度)与Width的比例关系(K为恒值)动态计算比例值,进而通过该比例对图形对象缩放;
S3:根据图形对象的深度信息(即世界坐标V中的z分量),利用Fov与Height静态不变的特点,通过等比变换计算出比例系数Scale,计算过程如式(1)所示:
其中,V.z为步骤S1中得到的世界坐标V中的z分量;
S4:根据式(2)计算放缩矩阵Matscale,该矩阵的变换过程使得图形对象保持相同的大小。
S5:根据V计算偏移矩阵Mattrans(该矩阵描述了位置信息),并与Matscale相乘,得出最终的矩阵Matworld,基于Matworld实现投影变换并最终绘制图形。计算过程如式(3)和式(4)所示:
Matworld=Matscale*Mattrans (4)
其中,V.x为步骤S1中得到的世界坐标V中的x分量,V.y为步骤S1中得到的世界坐标V中的y分量。
Claims (1)
1.一种三维透视投影场景中保持图形对象等像素面积显示的方法,其特征在于:包括以下的步骤:
S1:将图形对象的中心经纬度坐标转换为世界坐标V:
V={x,y,z},其中x、y、z分别表示世界坐标中的坐标值,单位为米;
S2:获取视口的视角信息Fov与宽高信息Width与Height:
Fov单位为度,取值范围为[0,45];Width与Height的单位为像素;
S3:根据图形对象的深度信息,利用Fov与Height静态不变的特点,通过等比变换计算出比例系数Scale,计算过程如式(1)所示:
<mrow>
<mi>S</mi>
<mi>c</mi>
<mi>a</mi>
<mi>l</mi>
<mi>e</mi>
<mo>=</mo>
<mi>f</mi>
<mi>a</mi>
<mi>b</mi>
<mi>s</mi>
<mrow>
<mo>(</mo>
<mi>t</mi>
<mi>a</mi>
<mi>n</mi>
<mo>(</mo>
<mrow>
<mi>F</mi>
<mi>o</mi>
<mi>v</mi>
<mo>*</mo>
<mfrac>
<mi>&pi;</mi>
<mn>360</mn>
</mfrac>
</mrow>
<mo>)</mo>
<mo>*</mo>
<mfrac>
<mrow>
<mi>V</mi>
<mo>.</mo>
<mi>z</mi>
</mrow>
<mrow>
<mi>H</mi>
<mi>e</mi>
<mi>i</mi>
<mi>g</mi>
<mi>h</mi>
<mi>t</mi>
</mrow>
</mfrac>
<mo>*</mo>
<mn>2</mn>
<mo>)</mo>
</mrow>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>1</mn>
<mo>)</mo>
</mrow>
</mrow>
其中,V.z为步骤S1中得到的世界坐标V中的z分量,所述图形对象的深度信息为世界坐标V中的z分量;
S4:根据式(2)计算放缩矩阵Matscale:
<mrow>
<msub>
<mi>Mat</mi>
<mrow>
<mi>s</mi>
<mi>c</mi>
<mi>a</mi>
<mi>l</mi>
<mi>e</mi>
</mrow>
</msub>
<mo>=</mo>
<mfenced open = "(" close = ")">
<mtable>
<mtr>
<mtd>
<mrow>
<mi>S</mi>
<mi>c</mi>
<mi>a</mi>
<mi>l</mi>
<mi>e</mi>
</mrow>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mrow>
<mi>S</mi>
<mi>c</mi>
<mi>a</mi>
<mi>l</mi>
<mi>e</mi>
</mrow>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mrow>
<mi>S</mi>
<mi>c</mi>
<mi>a</mi>
<mi>l</mi>
<mi>e</mi>
</mrow>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>2</mn>
<mo>)</mo>
</mrow>
</mrow>
S5:根据V计算偏移矩阵Mattrans,并与Matscale相乘,得出最终的矩阵Matworld,实现投影变换,计算过程如式(3)和式(4)所示:
<mrow>
<msub>
<mi>Mat</mi>
<mrow>
<mi>t</mi>
<mi>r</mi>
<mi>a</mi>
<mi>n</mi>
<mi>s</mi>
</mrow>
</msub>
<mo>=</mo>
<mfenced open = "(" close = ")">
<mtable>
<mtr>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
<mtd>
<mn>0</mn>
</mtd>
</mtr>
<mtr>
<mtd>
<mrow>
<mi>V</mi>
<mo>.</mo>
<mi>x</mi>
</mrow>
</mtd>
<mtd>
<mrow>
<mi>V</mi>
<mo>.</mo>
<mi>y</mi>
</mrow>
</mtd>
<mtd>
<mrow>
<mi>V</mi>
<mo>.</mo>
<mi>z</mi>
</mrow>
</mtd>
<mtd>
<mn>1</mn>
</mtd>
</mtr>
</mtable>
</mfenced>
<mo>-</mo>
<mo>-</mo>
<mo>-</mo>
<mrow>
<mo>(</mo>
<mn>3</mn>
<mo>)</mo>
</mrow>
</mrow>
Matworld=Matscale*Mattrans (4)
其中,V.x为步骤S1中得到的世界坐标V中的x分量,V.y为步骤S1中得到的世界坐标V中的y分量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510970102.0A CN105427371B (zh) | 2015-12-22 | 2015-12-22 | 一种三维透视投影场景中保持图形对象等像素面积显示的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510970102.0A CN105427371B (zh) | 2015-12-22 | 2015-12-22 | 一种三维透视投影场景中保持图形对象等像素面积显示的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105427371A CN105427371A (zh) | 2016-03-23 |
CN105427371B true CN105427371B (zh) | 2017-12-08 |
Family
ID=55505550
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510970102.0A Active CN105427371B (zh) | 2015-12-22 | 2015-12-22 | 一种三维透视投影场景中保持图形对象等像素面积显示的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105427371B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106127853B (zh) * | 2016-06-17 | 2019-02-05 | 中国电子科技集团公司第二十八研究所 | 一种无人机探测范围分析方法 |
CN106484397A (zh) * | 2016-09-18 | 2017-03-08 | 乐视控股(北京)有限公司 | 一种3d空间中用户界面控件的生成方法及其装置 |
CN108961314B (zh) * | 2018-06-29 | 2021-09-17 | 北京微播视界科技有限公司 | 运动图像生成方法、装置、电子设备及计算机可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101789132A (zh) * | 2010-01-22 | 2010-07-28 | 苏州领航自动化科技有限公司 | 一种单视图多OpenGL视口的显示方法 |
CN102467756A (zh) * | 2010-10-29 | 2012-05-23 | 国际商业机器公司 | 用于三维场景的透视方法及装置 |
CN103824277A (zh) * | 2013-11-29 | 2014-05-28 | 广东电网公司电力科学研究院 | 基于非线性参数优化标定的变电站三维实景监测布点方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105096245B (zh) * | 2014-04-21 | 2018-05-04 | 上海澜至半导体有限公司 | 一种处理2d图像的方法和装置 |
-
2015
- 2015-12-22 CN CN201510970102.0A patent/CN105427371B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101789132A (zh) * | 2010-01-22 | 2010-07-28 | 苏州领航自动化科技有限公司 | 一种单视图多OpenGL视口的显示方法 |
CN102467756A (zh) * | 2010-10-29 | 2012-05-23 | 国际商业机器公司 | 用于三维场景的透视方法及装置 |
CN103824277A (zh) * | 2013-11-29 | 2014-05-28 | 广东电网公司电力科学研究院 | 基于非线性参数优化标定的变电站三维实景监测布点方法 |
Non-Patent Citations (4)
Title |
---|
一种基于透视投影的纹理校正方法;石睿 等;《计算机应用》;20010430;第21卷(第4期);第30-32页 * |
一种快速实现透视投影校正和空间定位的方法;杜召彬 等;《长江大学学报(自科版) 理工卷》;20070930;第4卷(第3期);第27-30页 * |
三维场景透视投影中梯形修正探讨;王先进;《指挥信息系统与技术》;20121231;第1卷(第6期);第70-74页 * |
图形变换中透视投影变换矩阵的推导;吴迪 等;《海洋测绘》;20030131;第23卷(第1期);第18-21页 * |
Also Published As
Publication number | Publication date |
---|---|
CN105427371A (zh) | 2016-03-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104748746B (zh) | 智能机姿态测定及虚拟现实漫游方法 | |
CN108401461A (zh) | 三维建图方法、装置、系统、云端平台、电子设备和计算机程序产品 | |
US8223145B2 (en) | Method and system for 3D object positioning in 3D virtual environments | |
CN105427361B (zh) | 一种三维场景中动目标轨迹的显示方法 | |
CN107168516B (zh) | 基于vr及手势交互技术的全球气候矢量场数据可视化方法 | |
CN107015654A (zh) | 基于增强现实的导航方法及装置 | |
CN105247575A (zh) | 用于在三维场景上叠加二维地图数据的系统和方法 | |
CN108917758A (zh) | 一种基于ar的导航方法及系统 | |
CN105894563B (zh) | 一种数字地球上的全球海洋效果模拟方法 | |
JP2843666B2 (ja) | 飛翔体の姿勢表示方法 | |
JP3503385B2 (ja) | ナビゲーションシステム及びそれに用いるナビゲーションプログラムを記憶した媒体 | |
KR101591427B1 (ko) | 3차원 지형 영상 가시화에서의 적응형 렌더링 방법 | |
CN105427371B (zh) | 一种三维透视投影场景中保持图形对象等像素面积显示的方法 | |
CN108939488B (zh) | 一种基于增强现实的帆船辅助训练路径规划方法 | |
Fukuda et al. | Improvement of registration accuracy of a handheld augmented reality system for urban landscape simulation | |
Trenchev et al. | Mathematical approaches for creation of complex 3D models and their application in education | |
Butkiewicz | Designing augmented reality marine navigation aids using virtual reality | |
CN107705361A (zh) | 一种基于数据驱动的舰船三维态势图展示方法 | |
CN107478217B (zh) | 一种poi显示方法及装置 | |
JP2011102736A (ja) | 地殻変動追跡システムおよび地殻変動追跡方法 | |
CN104102357B (zh) | 一种虚拟场景中的3d模型检测方法及装置 | |
CN109241233A (zh) | 一种坐标匹配方法及装置 | |
JP2007041692A (ja) | 三次元地形データ制御装置及び三次元地形データ制御方法 | |
CN111815775A (zh) | 一种基于OpenGL的三维背景地图快速填充方法 | |
CN108491401B (zh) | 一种2.5维地图的坐标纠偏方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |