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对着视点。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/509846.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1224 哥德巴赫猜想(2)

1224 哥德巴赫猜想&#xff08;2&#xff09; Time Limit : 2000/1000 MS(Java/Others) | Memory Limit :65536/32768 KB(Java/Others) Submits : 1564 | Solved : 629 Description 所谓哥德巴赫猜想&#xff0c;就是指任何一个大于2的偶数&#xff0c;都可以写成两个素数的和…

Hbase 查看 rowkey在哪个region中

首先我们先了解下 hbase:meta 表&#xff0c;hbase是指的namespace&#xff0c;meta是表名&#xff0c;这张表存储的是整个集群的Region信息。 hbase:meta表的一个rowkey对应一个region&#xff0c;rowkey设计如下: 表名,region的startRowkey,region创建时的时间戳,EcodedName …

osg坐标系转换

osg中将局部坐标系下的点坐标换算成全局坐标系下点的坐标 标签&#xff1a; matrixlist2012-05-17 16:27 2940人阅读 评论(1) 收藏 举报分类&#xff1a;osg&#xff08;7&#xff09; 坐标变换版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 今天…

1295 爱翻译

1295 爱翻译 Time Limit : 2000/1000 MS(Java/Others) | Memory Limit :65536/32768 KB(Java/Others) Submits : 390 | Solved : 80 Description 英语是现在世界第一大语言&#xff0c;所以学好英语是very important&#xff0c; 但是宁波大学的某个大牛说&#xff1a;“我不怕…

C#/WPF 播放音频文件

C#播放音频文件的方式&#xff1a; 播放系统事件声音使用System.Media.SoundPlayer播放wav使用MCI Command String多媒体设备程序接口播放mp3&#xff0c;wav&#xff0c;avi等使用WindowsMediaPlayer的COM组件来播放(可视化)使用DirectX播放音频文件使用Speech播放(朗读器&am…

Hbase 二级索引 Solr int字段排序问题 can not sort on multivalued field

Hbase Solr 同步二级索引后&#xff0c;进行int字段排序时报错 报错如下 {"responseHeader":{"zkConnected":true,"status":400,"QTime":75,"params":{"q":"*:*","sort":"hbase_index…

OpenGL渲染管线,着色器,光栅化等概念理解

卧槽&#xff0c;前些日子看这几个概念就十分想吐槽&#xff0c;这么难理解的概念窃以为纯属翻译的不够接地气。————首先&#xff0c;光栅化&#xff08;Rasterize/rasteriztion&#xff09;。这个词儿Adobe官方翻译成栅格化或者像素化。没错&#xff0c;就是把矢量图形转化…

Hbase Solr 二级索引 同步int数据报错com.ngdata.hbaseindexer.parse.ByteArrayValueMappers: Error mapping byte

二级索引实现方式&#xff1a;Hbase Key-Value Store Indexer Solr 同步int数据时提示异常 异常如下 2019-12-16 17:39:18,346 WARN com.ngdata.hbaseindexer.parse.ByteArrayValueMappers: Error mapping byte value 101 to int java.lang.IllegalArgumentException: off…

jQuery设计动画

一、显隐效果show() show(duration,[callback])show([duration],[easing],[callback]) 参数说明&#xff1a;duration&#xff1a;为一个字符串或者数字&#xff0c;决定动画将运行多久callback&#xff1a;表示在动画完成时执行的函数。easing&#xff1a;为一个字符串&#x…

值得推荐的C/C++框架和库

下次造轮子前先看看现有的轮子吧 值得学习的C语言开源项目 - 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL&#xff0c;测试网站在压力下工作的性能&#xff0c;最多可以模拟3万个并发连接去测试网站的…

CDH 6 安装 Hbase 二级索引 Solr + Key-Value Store Indexer

目录 一、集群安装Solr Key-Value Store Indexer 二、创建Hbase二级索引 1.更改表结构&#xff0c;允许复制 2.创建相应的SolrCloud集合 3.创建 collection实例并将配置文件上传到 zookeeper 4.创建 Lily HBase Indexer 配置 5.配置Morphline文件 6.注册 Lily HBase I…

glClipPlane剪裁平面

glClipPlane裁剪平面 (2012-02-21 12:49:18) 转载▼标签&#xff1a; 半平面 裁剪 线框 球体 表示 杂谈 分类&#xff1a; OPENGL void glClipPlane(GLenum plane, const GLdouble *equation); 定义一个裁剪平面。equation参数指向平面方程Ax By Cz D …

html思维导图

网页版&#xff1a;https://www.processon.com/view/link/5a658afae4b010a6e728e492

Hbase Solr 二级索引,更新数据部分字段丢失问题

问题&#xff1a; 第一次往hbase put数据&#xff0c;索引同步三个字段&#xff0c;第二次更新hbase数据&#xff0c;只更新一个字段&#xff0c;其他两个字段会消失。 原因&#xff1a; 在创建Hbase Indexer 时我们配置文件指定了 read-row"never" $ cat morphl…

c#事件和委托

一、委托(Delegate) 1、定义 delegate是C#中的一种类型&#xff0c;它实际上是一个能够持有对某个方法的引用的类。与其它的类不同&#xff0c;delegate类能够 拥有一个签名&#xff08;signature&#xff09;&#xff0c;并且它"只能持有与它的签名相匹配的方法的引用&qu…

Hbase二级索引 Solr 异常 The most likely cause is another Solr server (or another solr core in this server)

solr查询数据时候报错&#xff0c;去服务器查看该节点日志 {"responseHeader":{"status":503,"QTime":3,"params":{"q":"*:*","_":"1576753724528"}},"error":{"metadata&q…

MonoBehaviour常用方法

1.Start()在Update方法被调用之前开始调用Start方法&#xff0c;而且Start方法在整个MonoBehaviour生命周期内只被调用一次。Awake和Start不同的地方在于Start方法仅仅在脚本初始化后被调用&#xff0c;这样允许你延迟加载任何代码&#xff0c;直到代码真正被使用时。Awake方法…

Hbase RegionServer 启动失败 Time difference of xxx ms max allowed of 30000ms

Hbase RegionServer 启动报错 异常如下&#xff1a; STOPPED: Unhandled: org.apache.hadoop.hbase.ClockOutOfSyncException: Server hostname13,16020,1576647671625 has been rejected; Reported time is too far out of sync with master. Time difference of 32345ms …

unity3d UGUI视频教程

http://forum.china.unity3d.com/home.php?modspace&uid3418&dothread&viewme&typethread&orderdateline&fromspace&page1