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