Billboard 廣告牌 實現的逐步推導

2021-04-13 01:34:05 字數 1258 閱讀 3480

廣告牌並不是什麼令人心動的技術,但我敢說是最實用的技術,

在粒子系統和場景優化方面,起著重要的作用。

下面我用最明了的公式和步驟解釋實現的整個過程,

希望對初學者有幫助。

1、獲得當前的模型檢視矩陣

glfloat viewmatrix[16];

glgetfloatv(gl_modelview_matrix, viewmatrix);

2、轉置此矩陣就會找到up和right向量

[ m0 m1 m2 m3 ]

[ m4 m5 m6 m7 ]

[ m8 m9 m10 m11]

[ m12 m13 m14 m15]

轉置為[ m0 m4 m8 m12 ]

[ m1 m5 m9 m13 ]

[ m2 m6 m10 m14 ]

[ m3 m7 m11 m15 ]

3、從矩陣中抽取相應的向上和向右向量(紅色部分)

vec3 right(viewmatrix[0], viewmatrix[4], viewmatrix[8]);

vec3 up(viewmatrix[1], viewmatrix[5], viewmatrix[9]);

4、計算新的座標

newpoint = centerpoint + up * heightscale + right * widthscale;

對於位於中心點的左邊的角點,其widthscale值取負,而對於位於中心點

下方的角點,其heightscale應為負值。

5、繪製乙個billboard quad

//左下角

gltexcoord2f(0.0, 1.0); glvertex3fv(point + (right + up) * -size).v);

//右下角

gltexcoord2f(1.0, 0.0); glvertex3fv(point + (right - up) * size).v);

//右上角

gltexcoord2f(1.0, 1.0); glvertex3fv(point + (right + up) * size).v);

//左上角

gltexcoord2f(0.0, 1.0); glvertex3fv(point + (right - up) * -size).v);

另外對於y軸向的billboard, 我們只用使它的up vector 等於(0, 1, 0), 就可以了!!

www.azure.com.cn

廣告牌安放問題

某公司的廣告部門為了增加盈利,決定要沿著當地一家公園的道路鋪設廣告 這是乙個很好的盈利措施,因為有很多人每天會沿著公園的道路慢跑鍛鍊身體 他們已經在準備建造一些廣告牌,要將這些廣告牌樹立在路上。那麼現在問題來了 如何安排廣告牌的位置,使之既要達到宣傳效果,又要盡量節省廣告牌的開支 廣告牌的數量最少 ...

Python tkinter簡易廣告牌

使用tkinter製作的簡易廣告牌,v1.0 2020.07.19 功能 在視窗滾動顯示廣告.import tkinter as tk global advertise advertise 千里之行,始於足下 def show ad global advertise text1.delete 0.0...

頂點動畫 廣告牌效果

轉動攝像機時,無論從哪個方向對著物體,會看到物體看起來總是正對著攝像機。為了使物體不會隨著攝像機的角度的不同,而成像的面向不同。可以使用旋轉矩陣,對物體實時進行旋轉上的修正。即求得模型空間下,以視角方向做為法線方向,並計算出其他兩個座標方向,up與right,構成一組正交基。再使用它對原頂點進行轉換...