opengl 天空盒 ThingJS玩轉天空盒技術

2021-10-17 10:45:00 字數 1094 閱讀 8648

在計算機的三維世界中,三維天空的繪製肯定不可能像現實生活中的天空一樣,一望無際綿延無盡……thingjs的天空盒技術是認真的。

引用地圖元件指令碼之後地球相機引數就改變,需要校正天空盒。為什麼偏偏是天空盒呢?這就得問一下,天空盒的原理是什麼?opengl中天空盒的思想就是繪製乙個大的立方體,然後將觀察者放在立方體的中心,當相機移動時,這個立方體也跟著相機一起移動,這樣相機就永遠不會運動到場景的邊緣。

所以在實時渲染中,因為照相機隨著物體一起移動,在肉眼看來,物體大小幾乎是沒什麼變化的,這種就是天空盒技術玩的把戲。

為了保持視角一致,需要校正天空盒,攝像機飛行完之後,當前的視角變化了,天空盒就需要校正——獲取自定義圖層tilelayer1的型別、名稱和url,新增此圖層到基礎的地圖集合列表即可。

thing.widget.button('飛到北京', function () .google.cn/vt/lyrs=s&hl=zh-cn&gl=cn&x=&y=&z='

});map.baselayers.add(tilelayer1);

地球上使用天空盒又有另一套簡單的技術實現。所謂的天空盒其實就是將乙個立方體展開,然後在六個面上貼上相應的貼圖,官方提供多達8種彩色背景gif貼圖,比如銀河、藍天、黑夜,可以供不同場景使用。

先引用地圖元件指令碼,建立完地球相機引數後需校正天空盒,讓攝像機始終處於這個立方體的中心位置,就對了。示例如下:

skybox: 'milkyway' // 設定天空盒為銀河git

});// 引用地圖元件指令碼

thing.utils.dynamicload([''], function () );

//建立完地球相機引數會改變,需校正天空盒

cmap.util.correctskybox();

type: 'tilelayer',

name: 'tilelayer1',

url: ''

});map.baselayers.add(tilelayer1);

thingjs開發平台,讓物聯網開發者輕鬆整合!

QT與OpenGL結合實現天空盒

之前搗鼓過一段時間opengl,用的是glad加上glfw庫,由於在windows下c 開發用qt較多,所以把qt和opengl結合,因此進行了嘗試。首先qt5.8.0下有自帶的opengl控制項opengl widget,將這個控制項提公升為乙個自己寫的類myopenglbox繼承於qopengl...

關於OpenGL的天空盒的理解

參考 owed by 春夜喜雨 關於天空盒 空間概念上 可以理解為乙個盒子,內壁貼著貼圖,我們位於盒子內,盒子離我們無窮遠。我們抬頭向四面看,最遠處是這個盒子的內壁,由於我們始終位於盒子內,所以我們不會看到盒子以外的部分。opengl實現上 通常是 天空盒採用6張可以連線縫合的天空,貼圖到乙個立方體...

OpenGL學習筆記 天空盒(反射,折射)

先展示乙個效果圖 多個紋理組合起來對映到一張紋理上的一種紋理型別 立方體貼圖 cube map 簡單來說,立方體貼圖就是乙個包含了6個2d紋理的紋理,每個2d紋理都組成了立方體的乙個面 乙個有紋理的立方體。你可能會奇怪,這樣乙個立方體有什麼用途呢?為什麼要把6張紋理合併到一張紋理中,而不是直接使用6...