osg布告板技术(Billboard)

 公告牌技术,即billboard技术,在3D游戏中有着广泛的应用.它的本质就是用预先做好的几幅
位图来代替3D物体,极大地节省资源和提高速度.仔细观察<<魔法门>>系列游戏,它的精灵,树木,物
品都是二维图象,但由于它始终朝向观察者,你根本看不到它"扁"的一面,所以给人一种立体的感觉.
这种技术最大的优点是快.试想一个多边形构成的3D精灵,至少百余个多边形,而用billboard技术,
只需处理两个多边形,优势不言而喻.其他3D游戏的爆炸效果,<<极品飞车>>中路旁的树木,都使用了
该技术.

使用方法:

  • 创建公告牌
    osg::Billboard *  center  =   new  osg::Billboard();
  • 设置旋转模式,可选如下
    POINT_ROT_EYE :始终朝向眼睛 
    POINT_ROT_WORLD : 
    AXIAL_ROT:绕坐标轴
    center->setMode(osg::Billboard::POINT_ROT_WORLD);

    如果是坐标轴
    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对着视点。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值