OSG初步
OSG:OpenSceneGraph 跨平台开源 场景图形 API
OSG 是一个 C++ API 库
- 需要前导知识:
本书的读者应当对于 C++的设计特性较为熟悉,例如公有和私有成员,虚函数,内存分配,类继承,以及构造和析构函数等。
OSG 对于标准模板库(STL) 的运用十分广泛,因此读者应当对 STL 容器,特别是列表(list),向量组(vector)和映射(map),有较深的了解。
如果读者对于设计模式(design patterns)也有 一定的认识,这对于 OSG 的学习大有裨益,不过并不是必要的。
读者应当熟练掌握和运用数据结构的相关知识,例如树结构和链表。
在自己的程序中使用 OSG 之前,读者首先要对 3D 图形学有一定的了解。 对于本书而言,读者需要对标准的跨平台底层 3D 图形库 OpenGL 较为熟悉。
读者需要理解不同坐标空间的概念,并熟练应用笛卡尔三维坐标系来指定几何数据。读者还需要了解纹理贴图的本质,即向几何体指定图形,不过并不需要对底层图形硬件的实现有很深入的认识。
读者最好还具备一定的线性代数知识。了解用向量表达 3D 位置的方法,以及渲染中图形系统按矩阵变换向量的过程。读者需要了解矩阵连乘来表现几何变换的有关知识
- 变换节点(Transform)
OSG 通过 osg::Transform 节点类家族来实现几何数据的变换。Transform 类 继承自 Group 类,它可以有多个子节点。但是 Transform 类是一个无法由应用程 序实例化的虚基类。用户应当使用 osg::MatrixTransform 或 osg::PositionAttitudeTransform 来替代它,这两者均继承自 Transform。它们提供 了不同的变换接口。根据用户程序的需要,可以使用其中任意一个或者同时使用 这两者。
Transform 对 OpenGL 的模型-视图(model-view)矩阵堆栈产生影响。多个 紧密排列的 Transform 节点可以创建连续级联的变换,将多个矩阵压入矩阵堆栈 的栈顶,这一点与 OpenGL 的矩阵操作命令相同(glRotatef(),glScalef()等)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)