Skip to content

基础概念

本文档介绍 NIVIOBIM 图形引擎的核心概念和架构设计,帮助您建立完整的技术认知。

架构概述

NIVIOBIM 图形引擎采用模块化分层架构:

text
┌─────────────────────────────────────────┐
│               应用层                    │
├─────────────────────────────────────────┤
│               插件层                    │
├─────────────────────────────────────────┤
│               核心层                    │
├─────────────────────────────────────────┤
│               管理器层                  │
├─────────────────────────────────────────┤
│               模型层                    │
├─────────────────────────────────────────┤
│               加载器层                  │
├─────────────────────────────────────────┤
│               渲染层                    │
└─────────────────────────────────────────┘

核心组件

Viewer3D 主引擎

Viewer3D 是引擎入口,负责协调场景、渲染、加载和插件系统。

管理器系统

模型系统

加载器系统

插件系统

数据流

模型加载流程

text
配置对象(Config) → NIVIOBIMLoader → Model → SceneManager → RenderManager

交互事件流程

text
用户输入 → EventManager → 插件系统/选择系统 → 场景更新 → 渲染更新

完整案例:测量插件接入流程

以下示例展示从初始化到启用测量插件的完整流程:

javascript
import * as GraphicsEngine from './core/viewer3D@2.1.5.module.js';
import PluginPackage from './plugins/PluginPackage@2.1.5.module.js';

window.PluginPackage = PluginPackage;

const container = document.getElementById('app');
const config = new GraphicsEngine.Config('地质博物馆建筑', container);
config.setStaticPath('../public/models/');
config.currentLoadType = GraphicsEngine.Config.LoadType.Local;

const viewer3D = GraphicsEngine.Viewer3D.Initializer(
  config,
  (progress) => console.log('加载进度:', progress),
  (error) => console.error('加载错误:', error)
);

// 创建并启用测量插件
const measure = new PluginPackage.Measure(viewer3D, {
  name: 'Measure',
  enabled: true
});

// 设置测量模式和单位
measure.setCurrentMode(PluginPackage.Measure.MODE.DISTANCE);
measure.setCurrentUnit(PluginPackage.Measure.UNIT.M);
measure.setCurrentPrecision(PluginPackage.Measure.PRECISION.TWO);

// 监听测量更新
measure.addEventListener('update', () => {
  console.log('测量状态已更新');
});

最佳实践

  1. 先稳定主流程再扩展插件:先跑通 Config + Viewer3D + 模型加载。
  2. 统一资源释放:页面销毁时调用插件与引擎 dispose
  3. 配置与文档版本保持一致:SDK、文档入口、版本号同步更新。
  4. 优先使用事件驱动:通过 update 等事件同步业务 UI 状态。

相关链接

逆维悦动 智建未来