Cesium 3Dtiles模型多邊形裁剪簡單整理

快三年了,在簡書寫了四篇文章,關于Cesium的基本都是水一下,不是不想寫,一是沒時間,二來確實比較懶,關于Cesium已經一年多沒有看過了,最多也就關注一下官網的更新內容,對于Cesium深入了解還真沒有下功夫。

最近公司業(yè)務調整,手頭的業(yè)務也停掉了,只剩下維護了,也沒有繼續(xù)待著的意義了,趁著換工作的空,整理一下以前抄過、請教過、寫過的一些東西吧,不確定能寫多少,就簡單記錄一下吧。

Ceisum本身有一個clipPlane可以進行裁剪,但是不支持多邊形裁剪,想要支持多邊形裁剪也要費一番功夫。

多邊形裁剪的主要原理:

一、構造裁剪多邊形;

二、將構造多邊形的定點歸化到模型局部坐標系,并獲取模型Rectangle,記錄并傳遞給片元著色器;

三、將多邊形渲染到到一張構造的紋理上,給多邊形一個繪制的顏色,并將紋理賦值給片元著色器;

四、在頂點著色器中把從attribute獲取到的定點傳遞給片元著色器,如

gl_Position = czm_projection*u_modelViewMatrix* viewPos; //投影矩陣*模型視圖矩陣*頂點坐標

中的viewPos.xyz;

五、在片元著色器中,根據(四)中傳遞過來的頂點,判定該頂點是否在(二)中的rectangle中,若在,則計算該頂點在(三)中紋理的uv坐標,用texture2D(texture,uv)獲取當前頂點的color值,若不為空,則繼續(xù),若為空則discard并返回。

通過以上步驟就可以實現以多邊形為邊界的模型裁剪。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容