Skip to content

Latest commit

 

History

History
77 lines (66 loc) · 3.06 KB

File metadata and controls

77 lines (66 loc) · 3.06 KB

03.01 公告板

- 创建几何体, 设置纹理
- 设置公告板
- osg::StateSet::setMode(): 设置混合, 光照
- osg::Billboard

03.02 位置变换节点

- osg::PositionAttitudeTransform
    - setPosition
    - setScale
    - addChild

03.03 矩阵变换节点

- osg::MatrixTransform: 继承自 osg::Transform
    - setMatrix
    - addChild
- osg::Matrix
    - makeTranslate
    - makeRotate

03.04 自动对齐节点

- osg::AutoTransform: 朝向屏幕, 朝向相机
    - setAutoRotateMode
    - setAutoScaleToScreen
    - setMinimumScale
    - setMaximumScale
    - setPosition
- osgText::Text 为 osg::Drawable
    - setFont()
    - setFontResolution()
    - setCharacterSize()
    - setAlignment()
    - setAxisAlignment()

03.05 开关节点

- osg::Switch: 继承自 osg::Group
    - addChild()

03.06 细节层次节点

- osg::LOD: 继承自 osg::Group, 两种中心模式
    - addChild

03.07 分页细节层次节点

- osg::PagedLOD: 继承自 osg::LOD, osg::LOD 节点存在于一个文件中, osg::PagedLOD 每个节点都是磁盘的文件, 节点只提供索引的作用
    - setCenter
    - setFileName
    - setRange

03.08 替代节点

- osgSim::Impostor: 继承自 osg::LOD 节点, 替代节点也是一种布告板, 通过从当前视点将一个复杂物体对象绘制到一幅图像纹理上创建的, 其中渲染的图像纹理映射到布告板上. 替代节点可用于物体的一些实例或图形的一些画面, 加速了绘制和渲染. 替代节点的另一个优点是可以对纹理图像进行低通滤波(后期处理)
  - 图形纹理的分辨率绝对不能超过屏幕当前的分辨率
  - setImposterThreashold()
  - addChild()

03.09 遮挡裁剪节点

- osg::OccluderNode: 继承自 osg::Group. 该节点的主要作用是裁剪掉被遮挡的物体.
- osg::OccluderNode 主要采用基于点的遮挡算法, 其需要指定一个遮挡面
    - void setOccluder(), 该平面应该为一个凸多边形
- osg::ConvexPlanarPolygon 可以用来设置遮挡平面
    - void add(): 添加顶点
- osg::Node::getBound(): 得到包围球 osg::BoundingSphere
- osg::BoundingBox::expandBy(osg::BoundingSphere): 由包围球扩展为包围盒
- osg::BoundingBox::corner() 可以得到一个角

03.10 坐标系节点

- osg::CoordinateSystemNode: 继承自 osg::Group 节点, 使一个场景的对象关联一个坐标系统. 通常的坐标系统类型有 WKT, PROJ4, USGS, 与 osg::EllipsoidModel 节点一起使用
    - setEllipsoidModel: 设置椭圆模型
    - addChild: 添加一个 geode, 里面一般为球形物体
- WKT 坐标系

03.11 自定义拷贝(1)

- 派生自 osg::CopyOp 类
    - 重写 operator() 方法
- 克隆调用各自节点的 clone() 方法, 参数使用 osg::CopyOp 或其派生类

03.12 自定义拷贝(2)

- 重写 osg::CopyOp 的派生类, 解决一个节点多个父节点的深度拷贝问题