Journal of Geo-information Science >
A Screen-based Method for Rendering 3D Linear Map Symbol
Received date: 2018-01-23
Request revised date: 2018-05-17
Online published: 2018-08-24
Supported by
National Natural Science Foundation of China, No.41371365.
Copyright
Vector data, as an important part of Geographic Information System (GIS), plays a significant role in three-dimensional(3D) GIS to indicate geographic objects, explain spatial relationships and enrich map information. However, in the study of 2D vector rendering onto 3D terrain surface, vector lines drawn by traditional algorithms are relatively simple and monotonous, mainly shown as monochromatic lines or multicolor parallel lines, which cannot meet the growing demands for visualization. With the rapid development of graphics hardware acceleration and the widespread application of Virtual Geographical Environment (VGE), in order to draw the complicated linear map symbol in 3D map effectively and efficiently, this paper proposes a screen-based method that renders the linear symbol onto the 3D terrain surface with the use of OpenGL Shader Language (GLSL). We transfer the vector data from the procedure to Graphics Processing Unit (GPU) by encoding the vector data into the texture data. The mapping relationships between terrain units and vector lines are stored in the index texture, and the mapping is used for looking up the related line segments in real-time. In addition, the node texture stores the attribute of vector lines. We calculate the position relationship between screen fragments and related line segments, and find out the area where the current fragment belongs to. If the current screen fragment has associated line segments, then we get the attributes of the related line segments from the node texture and set the fragment color. It is worth mentioning that we provide a variety of symbolic functions, which can render different types of vector line segments, including gradient lines, periodic lines, etc. In order to achieve better visual effects, we apply a series of detail optimization operations to related line segments, including anti-aliasing and corner optimization. Finally, we take the Purple Mountain as an example and render vector lines onto it using the proposed method. The experiments demonstrated that vector lines rendered by our method show great visual effect and our method can render some complicated and typical line symbols with high performance while keeping rendering efficiency at real time level.
LIU Junyan , CHEN Yaqian , GAO Yiyuan , LI Chuang , SHE Jiangfeng . A Screen-based Method for Rendering 3D Linear Map Symbol[J]. Journal of Geo-information Science, 2018 , 20(8) : 1047 -1054 . DOI: 10.12082/dqxxkx.2018.180070
Fig. 1 Technology roadmap图1 技术路线图 |
Fig. 2 Storage of vector line attribute图2 矢量线属性存储 |
Fig. 3 Affected area of vector line图3 矢量线影响范围 |
Fig. 4 Index of related textures图4 相关纹理索引 |
Fig. 5 Computational process of boundary symbol color图5 边界符号颜色计算过程 |
Fig.6 Calculation of perpendicular distance and accumulative distance图6 垂直距离和累积距离计算 |
Fig. 7 Resample of symbol edge图7 符号边缘重采样 |
Fig. 8 Processing of line segment joints图8 线段相接处理 |
Fig. 9 Rendering effect of line symbols图9 线状符号渲染结果图 |
Fig.10 Rendering effect of scene图10 场景效果图 |
Tab.1 Comparison of average rendering frame rate表1 平均渲染帧速对比 |
序号 | 窗口大小(宽×高,像元) | 地形三角形数量/万条 | 矢量节点数量(多条矢量线) | 符号类型 | 平均渲染帧速/fps |
---|---|---|---|---|---|
1 | 800×600 | 309.4 | 2 000 | 道路 | 165.1 |
2 | 1280×960 | 309.4 | 2 000 | 道路 | 89.2 |
3 | 1920×960 | 309.4 | 2 000 | 道路 | 60.7 |
4 | 1280×960 | 77.28 | 2 000 | 道路 | 112.4 |
5 | 1280×960 | 1239.68 | 2 000 | 道路 | 52.0 |
6 | 1280×960 | 309.4 | 800 | 道路 | 102.4 |
7 | 1280×960 | 309.4 | 10 000 | 道路 | 81.6 |
8 | 1280×960 | 309.4 | 2 000 | 单色线 | 97.3 |
9 | 1280×960 | 309.4 | 2 000 | 边界线 | 82.5 |
10 | 1280×960 | 309.4 | 2 000 | 组合 | 85.3 |
The authors have declared that no competing interests exist.
[1] |
[
|
[2] |
[
|
[3] |
|
[4] |
[
|
[5] |
|
[6] |
|
[7] |
|
[8] |
|
[9] |
|
[10] |
|
[11] |
|
[12] |
[
|
[13] |
|
[14] |
|
[15] |
|
[16] |
|
[17] |
|
[18] |
[
|
[19] |
[
|
[20] |
|
[21] |
|
[22] |
|
[23] |
|
[24] |
[
|
/
〈 | 〉 |