# MetaCore 当前架构与技术路线 更新时间:2026-05-20 状态:当前主线说明 读者:产品、架构、引擎、编辑器、渲染、工具链、交付 ## 一句话定位 MetaCore 是一个以 EnTT ECS 为底层架构、Filament 为现代渲染核心、ImGui 为编辑器界面、RmlUi 为运行时 UI 的轻量级 Unity / Unreal Engine 对标型 3D 引擎与编辑器,采用编辑期 JSON、发布期二进制 Cook 的敏捷迭代路线,面向工业仿真、数字孪生、实时可视化和跨平台运行时交付。 ## 当前技术选型 | 能力域 | 当前选择 | 定位 | | --- | --- | --- | | 底层架构 | EnTT | ECS 数据层,承载实体、组件和场景状态 | | 编辑器对象语义 | GameObject + Component | 面向编辑器和用户工作流的 ECS 封装 | | 编辑器 UI | Dear ImGui Docking | 快速构建工具面板、Inspector、Hierarchy、Project、Console | | 3D 操控 | ImGuizmo | 编辑器视口中的移动、旋转、缩放工具 | | 渲染核心 | Google Filament | PBR、材质、灯光、glTF、跨图形 API 渲染后端 | | 模型导入 | glTF / GLB / gltfio | 当前模型导入主线,后续扩展其他格式 | | 运行时 UI | RmlUi | 项目正式 UI,定位类似 Unity UGUI | | 编辑期资产 | JSON / mcmeta / 可读项目文件 | 快速迭代、可 diff、可调试、可人工修复 | | 发布期资产 | Cooked binary / package | 面向运行时性能、封装和交付稳定性 | | RuntimeData | TCP / 文件回放 / 数据绑定 | 外部仿真、遥测、业务数据驱动场景组件 | ## 渲染路线 MetaCore 已经从 Panda3D 迁移到 Filament 主线。Panda3D 相关代码只应被视为历史兼容层或待清理实现,不再作为新增能力的扩展方向。 Filament 作为主渲染核心,承担: - PBR 材质与光照。 - glTF / GLB 加载与资源解释。 - 编辑器视口离屏渲染。 - 运行时 Player 场景渲染。 - Vulkan、OpenGL、DirectX 12、WebGPU 等后端能力的长期承接。 优先级建议: 1. Vulkan:首选高性能现代图形 API。 2. OpenGL:兼容和过渡。 3. DirectX 12:Windows 高性能运行时。 4. WebGPU:B/S 架构、浏览器嵌入和 Web 交付。 ## UI 路线 MetaCore 明确区分两套 UI: ### 编辑器 UI 编辑器 UI 使用 Dear ImGui。它服务于工具工作流: - Hierarchy - Scene - Inspector - Project - Console - RuntimeData 面板 - 导入、Cook、诊断等工具窗口 ImGui 不承担最终项目运行时 UI 的长期职责。 ### 运行时 UI 运行时 UI 使用 RmlUi。它服务于项目交付: - 标题栏、侧边栏、设备信息面板。 - 状态文本、告警提示、按钮、图片和图标。 - 与场景对象、RuntimeData 和业务状态绑定。 - 后续在编辑器中提供可视化编辑,再由 RmlUi 在 Player 中渲染。 这条路线类似 Unity 中“编辑器工具 UI”和“UGUI 项目 UI”的分工。 ## 资产与序列化路线 当前阶段采用双阶段资产策略: ### 编辑期 编辑器阶段优先使用 JSON 和可读元数据: - `MetaCore.project.json` - `.mcscene.json` 或可读场景文档 - `.mcmeta` - JSON 化材质、UI、导入描述和资源记录 目标是: - 快速迭代。 - 便于 diff 和代码评审。 - 便于调试和人工修复。 - 降低早期功能演进的成本。 ### 发布期 打包阶段再生成二进制运行时资产: - cooked scene - cooked mesh / material / texture - runtime config - CookManifest - 可交付 Player 包 目标是: - 提高加载性能。 - 减少运行时解析成本。 - 封装交付内容。 - 支持 C/S 和未来 B/S 发布形态。 ## 平台与交付目标 ### 编辑器平台 编辑器优先面向: - Windows - Linux - 统信 UOS - 麒麟 OS 第一阶段可以 Windows 先行,但平台抽象必须为国产化桌面环境保留边界。 ### 运行时交付 运行时面向两种架构: - C/S:第一阶段主要承诺,适合桌面端工业仿真、数字孪生、大屏和本地部署。 - B/S:后续产品化方向,适合 WebGPU、浏览器嵌入、第三方业务系统集成。 ## 行业对标 MetaCore 对标 Unity 和 Unreal Engine,但不是第一阶段复制它们的全部功能广度。 对标 Unity: - GameObject / Component 工作流。 - Scene / Hierarchy / Inspector / Project。 - Prefab。 - UGUI 类运行时 UI。 - 资产导入与可视化编辑体验。 对标 Unreal Engine: - 高质量渲染目标。 - 材质和资源工程化。 - 大型项目交付、Cook、Package、运行时边界。 MetaCore 的差异化方向: - 更轻量。 - 更容易国产化适配。 - 更适合工业仿真、数字孪生和业务系统嵌入。 - 更强调编辑期可读、运行期可交付的资产闭环。 ## 开发方法 MetaCore 当前采用敏捷开发、快速迭代的方式: - 先打通主链路,再逐步工程化。 - 先让编辑器可用,再逐步完善运行时性能。 - 先建立 JSON 可读资产闭环,再收敛 Cook 二进制发布链路。 - 先服务真实交付场景,再扩展通用引擎能力。 第一阶段的核心不是一次性做完整引擎,而是快速形成: ```text 创建项目 -> 导入模型 -> 编辑场景 -> 配置材质 / UI / 数据绑定 -> 保存 JSON 编辑期资产 -> Cook 运行时资产 -> Player 运行 -> 交付 C/S 应用 ``` ## 当前约束 - 新渲染能力默认走 Filament,不再沿 Panda3D 扩展。 - 编辑器工具 UI 默认走 ImGui。 - 项目运行时 UI 默认走 RmlUi。 - 模型导入优先完善 glTF / GLB / gltfio 闭环。 - 资产格式优先保证编辑期 JSON 可读性,再进入发布期二进制优化。 - 测试应区分“编辑期 JSON 资产链路”和“发布期 Cook 二进制链路”,避免用二进制产物是否存在来阻塞早期编辑器迭代。