osg布告板技术(Billboard)
?公告牌技術,即billboard技術,在3D游戲中有著廣泛的應用.它的本質就是用預先做好的幾幅
位圖來代替3D物體,極大地節省資源和提高速度.仔細觀察<<魔法門>>系列游戲,它的精靈,樹木,物
品都是二維圖象,但由于它始終朝向觀察者,你根本看不到它"扁"的一面,所以給人一種立體的感覺.
這種技術最大的優點是快.試想一個多邊形構成的3D精靈,至少百余個多邊形,而用billboard技術,
只需處理兩個多邊形,優勢不言而喻.其他3D游戲的爆炸效果,<<極品飛車>>中路旁的樹木,都使用了
該技術.
使用方法:
- 創建公告牌 osg::Billboard*?center?=?new?osg::Billboard();
- 設置旋轉模式,可選如下
center->setMode(osg::Billboard::POINT_ROT_WORLD);POINT_ROT_EYE?:始終朝向眼睛 ? POINT_ROT_WORLD?: ? AXIAL_ROT:繞坐標軸
如果是坐標軸
x_arrow->setMode(osg::Billboard::AXIAL_ROT);
//以x軸為旋轉軸
?x_arrow->setAxis(osg::Vec3(1.0f,0.0f,0.0f));
在本例中createSquare創建了一個貼紋理的正方形。
關于紋理以后會進行研究。
createAxis函數創建了一個坐標軸,像Texture2D、LineWidth都是狀態屬性,對應于OpenGL的狀態集,
應該去設置StateSet。
Billboard繼承Geode,可以添加drawable,因此,像DrawPixels、Geometry、ShapeDrawable、TextBase
等都可以添加其中。
Billboard中也有
enum Mode {
??????????? POINT_ROT_EYE,
??????????? POINT_ROT_WORLD,
??????????? AXIAL_ROT
?????
? };這三種模式,用于設置節點朝向。
這里不得不比較一下AutoTransform和Billboard的區別:
BillBoard繼承Geode,因此它可以實現一些輕量級的朝向屏幕,例如樹可以通過這種方式實現。
AutoTransform繼承Group,實現的功能比Billboard要多,更靈活,可以根據視點到節點的距離自動進行
節點縮放。
因此說AutoTransform是Billboard更為靈活的一種替代物。
因為osgText::Text也同樣有朝向屏幕的功能,因此不建議text和Billboard和AutoTransform一起使用。
下面是從網上找的的關于Billboard和AutoTransform的說明:
osg::AutoTransform is an alternative to osg::Billboard.
AutoTransform是Billboard的另外一種選擇。
AutoTransform is a derived form of Transform that automatically scales or rotates to keep
its children aligned with screen coordinates.
AutoTransform繼承Transform,通過自動縮放和旋轉來保持子節點對齊屏幕坐標。
Billboard is a derived form of Geode that orients its osg::Drawable children to face the
eye point.?
Billboard繼承Geode,能夠自動使Drawable對著視點。
總結
以上是生活随笔為你收集整理的osg布告板技术(Billboard)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HugeGraph Server/Hub
- 下一篇: ubuntu 安装PCL