简介
Coin3D是OpenInventor规范/API的开源实现,它提供了丰富的资源供学习OpenInventor编程,并以更为宽松的LGPL许可证发布。
重要类别
包括基本类型(如向量、矩阵等)、大多数对象的基类、用于运行时类型检查的类、字段和字段容器的抽象基类、场景图中的节点基类与组节点、场景数据库中节点遍历路径的容器类,以及用于建立复杂连接的引擎基类等。
SoPath, SoNode, SoEngine
是 Coin3D 中的主要对象类别。SbXXX
:基本类型,如向量、矩阵、颜色等。SoBase
:大多数 Coin3D 对象的基类,提供引用计数、类型识别和导入/导出功能。SoType
:用于运行时类型检查。SoField
:字段的抽象基类,用于封装基本数据类型并检测更改。SoFieldContainer
:提供序列化功能。SoNode
:场景图中的节点基类。SoGroup
:类似于 FreeCAD 中的App::DocumentObjectGroup
。SoSeparator
:状态保持的组节点,不影响之前的状态。SoPath
:场景数据库中节点遍历路径的容器类。SoEngine
:用于在字段之间建立复杂连接的引擎基类。
场景组织
Coin3D通过有向无环图(DAG)来组织场景以提高性能,并提供了访问全局数据的方法。
SoDB
:收集用于初始化、设置和访问 Coin 库中常见全局数据的方法。
场景渲染
Coin3D提供了用于渲染基本形状的类,以及其他形状详细信息的存储类。此外,它还可以在其他几何体之上绘制所有子几何体。
SoAnnotation
:在其他几何体之上绘制所有子几何体。SoShape
:用于渲染基本形状。SoDetail
:存储特定形状的详细信息。
其他对象
包括VRML文件的导入和导出、3D声音、场景操作传感器、摄像机和灯光(仅属于场景)以及全局设置等。
SoVRMLXXX
:VRML 文件导入和导出。SoAudioDevice
:3D 声音。SoSensor
:用于场景操作。SoCamera
和SoLight
:仅属于场景。SoEnvironment
:全局设置。
动作、事件和回调
Coin3D提供了在场景图或场景图中的路径上执行操作的基本机制,以及捕获用户交互事件和设置回调钩子的方法。同时,它还定义了键盘/鼠标/3D运动事件的基类。
SoAction
:在场景图或场景图中的路径上执行各种操作的基本机制。SoEvent
:键盘/鼠标/3D 运动事件的基类。SoEventCallback
和SoCallback
:在场景图中捕获用户交互事件和设置回调钩子。
窗口系统集成
通过Quarter库,Coin3D实现了与Qt的无缝集成,提供了一个继承自QGLWidget的小部件,用于渲染Coin场景图,并能将QEvents转换为SoEvents。
Quarter
:提供 Coin 和 Qt 之间无缝集成的轻量级库,替代了 SoQt。QuarterWidget
:一个继承自QGLWidget
的小部件,用于渲染 Coin 场景图和将QEvents
转换为SoEvents
。
总结
Coin3D是一个功能强大的开源3D可视化库,与OpenInventor兼容。它提供了丰富的类和功能,可用于构建复杂的3D场景图、处理用户交互、集成到不同的窗口系统中,并通过Qt的Quarter库与2D用户界面实现无缝集成。