NIVIOBIM-GraphicsEngine 文档
欢迎使用 NIVIOBIM 轻量化图形引擎 API 文档!
NIVIOBIM-GraphicsEngine 是北京逆维悦动科技有限公司开发的高性能 WebGL 图形渲染引擎,专门用于 BIM 模型的轻量化可视化。该引擎提供了完整的 3D 渲染解决方案,支持大规模 BIM 模型的流式加载、高性能渲染和丰富的交互功能。

重要说明:这是一个纯图形库,专注于 3D 渲染和数据处理,不包含任何 UI 组件。开发者需要基于此库自行构建用户界面。
技术亮点:基于微内核的插拔式架构,将内核系统与插件系统相分离,用户可以通过自定义插件来实现业务需求,同时保持着代码的简洁、便于后期维护。
📚 文档导航
核心模块
- Viewer3D - 主引擎类,提供完整的3D场景管理
- Config - 配置管理类,用于引擎初始化配置
- Utils - 工具类,提供各种实用工具函数
- Selection - 选择系统,支持3D对象交互选择
- SelectionBase - 选择基础类,提供射线检测功能
管理器模块
- SceneManager - 场景管理器,管理3D场景和相机
- RenderManager - 渲染管理器,控制WebGL和CSS2D渲染
- CameraManager - 相机管理器,提供相机控制功能
- LightManager - 灯光管理器,管理场景光照
- DataManager - 数据管理器,管理模型数据
- EventManager - 事件管理器,提供事件系统
- ExtensionManager - 扩展管理器,管理插件系统
模型系统
- Model - 模型基类,提供模型管理功能
- InstancedObjects - 实例化对象,优化渲染性能
- MergedObjects - 合并对象,减少绘制调用
- SingleObjects - 单对象,处理独立对象
加载器
- NIVIOBIMLoader - NIVIOBIM格式加载器,支持流式加载
插件系统
- Plugin - 插件基类,提供插件开发基础
- Measure - 测量插件,提供3D测量工具
- Section - 截面插件,支持模型剖切
- SkyBox - 天空盒插件,提供环境贴图
- ViewCubeControl - 视图立方插件,提供视图控制
- KeyInputControl.md - 键盘控制插件
- FirstPersonControl - 第一人称控制插件
- DrawingMapModel - 图模映射插件,关联CAD和3D模型
🎯 核心特性
🚀 高性能渲染
- 流式加载:支持大型 BIM 模型的分批流式加载,避免浏览器阻塞
- 实例化渲染:智能识别重复对象,自动转换为实例化渲染,大幅提升性能
- 几何合并:对相似对象进行几何合并,减少 Draw Call,优化渲染效率
- BVH 加速结构:内置 BVH 树,优化碰撞检测、射线拾取和视锥剔除
- Web Worker:多线程处理 BVH 树构建和文件解压,保持 UI 流畅
📦 智能文件处理
- 多格式支持:支持 GLB、GLTF 和自研 NIVIO 格式
- 压缩解压:集成 libarchive.js,支持 ZIP、7-Zip、RAR、TAR 等多种压缩格式
- 加密解密:自动处理加密压缩包,保护模型数据安全
- DRACO 压缩:支持 DRACO 几何压缩,大幅减小模型文件体积
- WebAssembly:利用 WASM 实现高性能文件解压和处理
🏗️ BIM 专业功能
- 图模映射:支持 CAD 图纸与 3D 模型的双向关联和联动
- 构件属性:完整的 BIM 构件属性管理和查询系统
- 树形结构:支持模型的层级树形结构导航
- 截面分析:支持任意平面的模型剖切和截面分析
- 碰撞检测:基于 BVH 树的高效碰撞检测
🎮 丰富的交互体验
- 轨道控制:流畅的鼠标和触摸轨道相机控制
- 漫游模式:支持第一人称和第三人称漫游,键盘+鼠标控制
- 精确拾取:基于射线的精确 3D 对象选择和高亮
- 测量工具:距离、角度、面积等多种测量功能
- 视图立方:直观的六面体视图方向控制
🔌 插件化架构
- 微内核设计:核心功能与插件分离,保持代码简洁
- 插件热插拔:支持动态加载和卸载插件
- 标准接口:统一的插件开发接口和生命周期管理
- 扩展性强:轻松扩展测量、标注、分析等业务功能
- 独立打包:插件独立打包,按需加载,减小初始加载体积
🛠️ 技术栈
- Three.js 0.145.0 - 3D 图形渲染库(共享实例,避免多实例问题)
- libarchive.js - WebAssembly 归档文件处理库(支持多种压缩格式)
- WebGL - 硬件加速图形渲染
- Web Workers - 多线程处理
- WebAssembly - 高性能 WASM 模块
- Webpack 5 - 模块打包工具,支持ESM输出和版本化命名
- ES Modules - 现代JavaScript模块系统
📖 使用指南
🔗 相关链接
📄 许可证
本项目为北京逆维悦动科技有限公司的专有技术,受法律保护。未经书面许可,禁止复制、传播、修改或用于商业用途。如需授权或合作:
- 请联系:李南南
- 联系方式:186 1220 3599
版本: 2.1.0
最后更新: 2025年5月