在看完了毛星雲的《實時渲染提煉總結》9.6-9.7與馮樂樂的《unity shader入門精要》後,我對公告板技術有了大概的認識,在這裡總結一下。
公告板,英文名billboarding,是一項讓著色四邊形根據視角方向來旋轉的技術,這樣看起來似乎物體總是面向觀察者。與alpha紋理和動畫技術結合,可用公告板建立許多不具有平滑實體表面的現象,比如常見的煙霧,雲朵,**效果,能量盾等等。
讓物體根據視角來旋轉,這無疑就產生了旋轉矩陣,而旋轉矩陣需要三個正交基,這就是billboarding的難點所在。公告板技術通常選取表面法線(n)、上方向(u)以及指向右的方向(r),因為u和n往往不是垂直的,故還需要指定乙個錨點,使其固定不變,這樣我們就能確定物體在空間中的位置。
如上所示,固定n,則r=n x u(叉乘),此時r和n是垂直的,對r進行歸一化,再更新上方向u』=n x r,這樣n,r,u兩兩正交,這樣就確定了正交基。當然也可以固定u,計算過程類似。通常根據需求來確定是固定u還是n,當要模擬自然界的花草樹木是,我們當然需要固定上方向u,使u的方向始終為(0,0,1);固定n的例子就太多了(現在好多資料都只講固定n)英雄聯盟中人物的名字和血條就是最好的例子。
公告板不能孤立存在,它們通常扎根於乙個公告集,在該公告集內有相同的尺寸、材質等,這樣能節省計算機的計算和渲染時間,當公告集內有大量的公告板時,這樣的渲染方式就十分有必要了。因為有相同的材質和尺寸,這就意味著gpu在進行渲染時,300和3000個公告板並沒有多大區別。
計蒜客 公告板
問題描述 蒜廠有乙個 h w 的矩形公告板,其中 h 是高度,w 是寬度。現在有若干張 1 wi 的公告,wi 是寬度,公告只能橫著放,即高度為 1 的邊垂直於水平面,且不能互相有重疊,每張公告都要求盡可能的放在最上面的合法的位置上。若可以放置,輸出每塊可放置的位置的行號 若不存在,輸出 1。行號由...
用DIV布局製作公告板
一 素材 1 公告板頂部 top.gif 2 公告板中部 center.gif 3 公告板底部 bottom.gif 三張的寬度是一樣的。二 div布局製作公告板 用div css製作公告板 title style type text css box top center bottom style ...
計蒜客習題 公告板
問題 蒜廠有乙個 h w 的矩形公告板,其中 h 是高度,w 是寬度。現在有若干張 1 wi 的公告,wi 是寬度,公告只能橫著放,即高度為 1 的邊垂直於水平面,且不能互相有重疊,每張公告都要求盡可能的放在最上面的合法的位置上。若可以放置,輸出每塊可放置的位置的行號 若不存在,輸出 1。行號由上至...