MetaCore/README.md

99 lines
5.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 UGUIImGui 只作为编辑器和工具 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](D:/MetaCore/Source/MetaCoreFoundation)GUID、项目文件、包、反射、日志等基础服务。
- [Source/MetaCorePlatform](D:/MetaCore/Source/MetaCorePlatform):平台窗口、输入与宿主环境抽象。
- [Source/MetaCoreScene](D:/MetaCore/Source/MetaCoreScene)EnTT ECS、GameObject、Component、场景树、快照和序列化。
- [Source/MetaCoreRender](D:/MetaCore/Source/MetaCoreRender)Filament 渲染桥、编辑器视口渲染、ImGui/渲染纹理衔接。
- [Source/MetaCoreRuntimeData](D:/MetaCore/Source/MetaCoreRuntimeData)TCP、文件回放、数据点、绑定、诊断与实时数据驱动。
- [Source/MetaCoreEditor](D:/MetaCore/Source/MetaCoreEditor)编辑器上下文、模块系统、面板、资产导入、Inspector、Prefab、Undo/Redo。
- [Apps/MetaCoreEditor](D:/MetaCore/Apps/MetaCoreEditor):编辑器独立程序入口。
- [Apps/MetaCorePlayer](D:/MetaCore/Apps/MetaCorePlayer):运行时 Player 程序入口。
- [docs/designs](D:/MetaCore/docs/designs)产品定位、阶段路线、引擎能力、资产、渲染、UI 和打包设计文档。
- [tests](D:/MetaCore/tests)Smoke Tests 与渲染 Demo。
## 构建与验证
### 前提条件
1. 已安装 Visual Studio 2022 / MSVC 工具链。
2. 已安装 `vcpkg` 并正确设置 `VCPKG_ROOT`
3. `third_party/filament_installed` 下存在已编译好的 Google Filament SDK或根据 [cmake/MetaCoreFilament.cmake](D:/MetaCore/cmake/MetaCoreFilament.cmake) 配置对应路径。
### 构建步骤
```powershell
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、统信、麒麟等环境保留平台抽象。
## 参考
- [Google Filament](https://github.com/google/filament)
- [EnTT](https://github.com/skypjack/entt)
- [Dear ImGui](https://github.com/ocornut/imgui)
- [ImGuizmo](https://github.com/CedricGuillemet/ImGuizmo)
- [RmlUi](https://github.com/mikke89/RmlUi)