| .codex/environments | ||
| Apps | ||
| build_filament | ||
| ci | ||
| cmake | ||
| docs | ||
| FeishuAgent | ||
| SandboxProject | ||
| scripts | ||
| Source | ||
| TestProject | ||
| tests | ||
| third_party | ||
| tools | ||
| vcpkg-triplets | ||
| .gitignore | ||
| build_log.txt | ||
| build_out_final_2.txt | ||
| build_out_final_3.txt | ||
| build_out_final_4.txt | ||
| build_out_final_5.txt | ||
| build_out_final_6.txt | ||
| build_out_final_7.txt | ||
| build_out_final.txt | ||
| build_out.txt | ||
| build_output.txt | ||
| CMakeLists.txt | ||
| CMakePresets.json | ||
| demo_err.txt | ||
| demo_out.txt | ||
| diff_head.txt | ||
| diff.txt | ||
| do_ecs_refactor.py | ||
| fix_ecs_api_3.py | ||
| fix_ecs_api_5.py | ||
| fix_ecs_api_6.py | ||
| fix_ecs_api.py | ||
| README.md | ||
| rewrite.py | ||
| run_err2.txt | ||
| run_err4.txt | ||
| run_err.txt | ||
| run_out2.txt | ||
| run_out4.txt | ||
| run_out.txt | ||
| test_err3.txt | ||
| test_err4.txt | ||
| test_err.txt | ||
| test_merge_err.txt | ||
| test_merge_out.txt | ||
| test_out3.txt | ||
| test_out4.txt | ||
| test_out.txt | ||
| vcpkg.json | ||
MetaCore
MetaCore 是一个使用 C++20 开发的自主 3D 引擎与编辑器原型。项目以 EnTT ECS 为底层架构,使用 Google Filament 作为现代渲染核心,使用 Dear ImGui 构建编辑器界面,并规划使用 RmlUi 承载运行时 UI。目标是在轻量、可控、可国产化适配的基础上,形成类似 Unity / Unreal Engine 的可视化 3D 应用开发工作流。
当前阶段的核心策略是:编辑期优先 JSON 与可读元数据,快速迭代、便于调试和版本管理;发布期再通过 Cook / Package 转换为二进制运行时资产,保证交付性能和封装性。
当前定位
- 底层架构:基于
EnTT的 ECS,外层提供GameObject + Component的编辑器友好语义。 - 编辑器界面:使用
Dear ImGui Docking构建 Hierarchy、Scene、Inspector、Project、Console 等编辑器面板。 - 渲染核心:以
Google Filament为主渲染后端,面向 PBR、glTF/GLB、材质、灯光和现代多图形 API 能力。 - 运行时 UI:规划使用
RmlUi作为正式项目 UI 系统,定位类似 Unity UGUI;ImGui 只作为编辑器和工具 UI。 - 模型导入:当前优先围绕
glTF/GLB与gltfio建立模型、材质、贴图、节点层级导入闭环。 - 资产路线:编辑器阶段使用 JSON /
.mcmeta/ 可读项目文件;打包阶段生成 cooked 二进制资产与运行时配置。 - 交付方向:编辑器面向 Windows、Linux、统信 UOS、麒麟等桌面系统;运行时面向 C/S 桌面交付,并为 B/S / WebGPU 嵌入预留边界。
- 行业对标:工作流对标 Unity,渲染和工程化目标参考 Unreal Engine,但第一阶段更聚焦工业仿真、数字孪生和实时可视化交付。
技术栈
- 核心语言:
C++20 - 构建系统:
CMake - 包管理:
vcpkg - ECS:
EnTT - 渲染核心:
Google Filament - 模型导入:
gltfio/glTF/GLB - 编辑器 UI:
Dear ImGui (Docking) - 运行时 UI:
RmlUi(规划主线) - 3D 操控:
ImGuizmo - 数学库:
glm - 数据通信:
Winsock2、文件回放、运行时数据绑定
渲染目标
MetaCore 当前不从零自研完整 RHI,而是借助 Filament 的成熟后端能力逐步覆盖多平台渲染:
Vulkan:首选高性能现代图形 API。OpenGL:用于兼容、过渡和更广泛设备适配。DirectX 12:面向 Windows 高性能运行时。WebGPU:面向未来 B/S 架构、浏览器嵌入和 Web 交付。
目录结构
- Source/MetaCoreFoundation:GUID、项目文件、包、反射、日志等基础服务。
- Source/MetaCorePlatform:平台窗口、输入与宿主环境抽象。
- Source/MetaCoreScene:EnTT ECS、GameObject、Component、场景树、快照和序列化。
- Source/MetaCoreRender:Filament 渲染桥、编辑器视口渲染、ImGui/渲染纹理衔接。
- Source/MetaCoreRuntimeData:TCP、文件回放、数据点、绑定、诊断与实时数据驱动。
- Source/MetaCoreEditor:编辑器上下文、模块系统、面板、资产导入、Inspector、Prefab、Undo/Redo。
- Apps/MetaCoreEditor:编辑器独立程序入口。
- Apps/MetaCorePlayer:运行时 Player 程序入口。
- docs/designs:产品定位、阶段路线、引擎能力、资产、渲染、UI 和打包设计文档。
- tests:Smoke Tests 与渲染 Demo。
构建与验证
前提条件
- 已安装 Visual Studio 2022 / MSVC 工具链。
- 已安装
vcpkg并正确设置VCPKG_ROOT。 third_party/filament_installed下存在已编译好的 Google Filament SDK,或根据 cmake/MetaCoreFilament.cmake 配置对应路径。
构建步骤
cmake -B build -G "Visual Studio 17 2022" -A x64
cmake --build build --config RelWithDebInfo --target MetaCoreEditorApp
cmake --build build --config RelWithDebInfo --target MetaCoreSmokeTests
.\build\RelWithDebInfo\MetaCoreSmokeTests.exe
当前能力
- 原生窗口、输入和主循环。
- 基于 EnTT 的场景对象、组件、层级、快照和序列化。
- Dear ImGui Docking 编辑器框架。
- Filament 离屏视口桥接与 PBR 场景渲染。
- glTF/GLB 模型导入、节点层级同步和模型实例化。
- ImGuizmo 移动、旋转、缩放工具链。
- 资产 GUID、
.mcmeta、AssetDatabase、导入与重导入基础链路。 - 编辑期 JSON 场景/资产元数据方向,运行期 Cook / Package 二进制方向。
- TCP / 文件回放 runtime data 驱动,支持绑定到场景组件。
- Smoke Tests 覆盖场景编辑、选择、Undo/Redo、模块组合、资产导入、运行时数据、UI 文档序列化等基础行为。
开发原则
- 敏捷开发,快速迭代:先打通可运行闭环,再逐步工程化和性能化。
- 编辑期可读优先:JSON、元数据、项目文件必须便于 diff、调试、人工修复和团队协作。
- 运行期性能优先:发布包通过 Cook 生成二进制资产与运行时配置。
- 模块边界清晰:ECS、渲染桥、编辑器 UI、运行时 UI、资产导入、数据源都应保持可替换。
- 国产化适配优先:Windows 先行,同时面向 Linux、统信、麒麟等环境保留平台抽象。