目錄
- 1. 概述
- 2. 實體
- 2.1. TerrainViewer.html
- 2.2. TerrainViewer.js
- 3. 結果
- 4. 參考
1. 概述
在上一篇教程《WebGL簡易教程(八):三維場景互動》中,給三維場景加入了簡單的互動,通過滑鼠實作場景的旋轉和縮放,那么在這一篇教程中,綜合前面的知識,可以做出一個稍微復雜的實體:繪制一張基于現實的地形圖,
地形也就是DEM(數字高程模型),是由一組網格點組成的模型,每個點都有x,y,z值;更簡單來說,影像格式就可以作為DEM的載體,只不過每個影像的像素值代表的是高程的值,這里準備了一張tif格式的DEM資料DEM.tif:

這張tif是從谷歌地球上下載下來的,是美國大峽谷的某一塊地形,因為JS處理tif稍微有點麻煩,我這里預先將其處理成DEM.dem,這是一個文本格式:

其中第一行的六個值分別表示:
起點X坐標 起點Y坐標 X間距 Y間距 寬 高
剩下的每一行表示一個點,點的順序為從上至下,從左至右:
與起點X距離 與起點Y距離 高程值 顏色R 顏色G 顏色B 法向量X坐標 法向量Y坐標 法向量Z坐標
一般來說DEM里面保存的應該只有點的位置資訊也就是XYZ坐標,其渲染的顏色資訊和法向量資訊是預處理的程序中計算出來的,目前來說可以將其當成已知量,以后有機會將會在后續介紹詳細的預處理程序,
2. 實體
2.1. TerrainViewer.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title> 顯示地形 </title>
<title>Hello Triangle</title>
</head>
<body onl oad="main()">
<div><input type='file' id='demFile'></div>
<div>
<canvas id="webgl" width="600" height="600">
請使用支持WebGL的瀏覽器
</canvas>
</div>
<script src=https://www.cnblogs.com/charlee44/p/"../lib/webgl-utils.js"></script>
<script src="../lib/webgl-debug.js"></script>
<script src="../lib/cuon-utils.js"></script>
<script src="../lib/cuon-matrix.js"></script>
<script src="TerrainViewer.js"></script>
