Files
Prism/README.md

128 lines
3.9 KiB
Markdown
Raw Permalink 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.

# Prism Engine
Prism 是一个基于**实体-组件系统 (ECS)** 的轻量级 3D 编辑引擎,整合了 2D 与 3D 渲染管线、物理模拟 (PhysX/Box2D) 以及 C# 脚本支持。
---
## ✨ 特性
- **混合渲染**
支持 2D 与 3D 渲染管线,基于 OpenGL 实现。
- **ECS 架构**
使用 `entt` 作为核心 ECS 库,组件化设计易于扩展。
- **物理模拟**
- 3D 物理NVIDIA PhysX刚体、碰撞体
- 2D 物理Box2D刚体、碰撞体、多种关节
- **C# 脚本**
集成 Mono 运行时,允许使用 C# 编写实体逻辑。
- **资产管理系统**
支持拖拽导入模型Assimp、纹理stb等资源。
- **编辑器界面**
- 基于 ImGui、ImGuizmo、ImViewZmo 的编辑器面板
- 场景层级面板、对象属性面板、资源浏览器
- 物理调试可视化
- **动画系统**
支持简单骨骼动画。
- **序列化**
使用 YAML (yaml-cpp) 序列化场景和资产。
- ~~**跨平台** (目前主要支持 Windows, PhysX没有成功构建)~~
---
## 🧩 已实现组件
```cpp
// Core
TagComponent, RelationshipComponent, TransformComponent
// 2D Rendering
SpriteRendererComponent
// 2D Physics
RigidBody2DComponent, BoxCollider2DComponent, CircleCollider2DComponent,
DistanceJoint2DComponent, RevoluteJoint2DComponent,
PrismaticJoint2DComponent, WeldJoint2DComponent
// 3D Rendering
MeshComponent, CameraComponent,
DirectionalLightComponent, SkyLightComponent
// 3D Physics
RigidBodyComponent, BoxColliderComponent, SphereColliderComponent,
CapsuleColliderComponent, MeshColliderComponent
// Animation
AnimationComponent
// Scripting
ScriptComponent
```
> 组件列表仍在持续扩展中。
---
## 🛠️ 技术栈 / 依赖
| 领域 | 库 |
|----------|--------------------------------------------|
| 渲染 | OpenGL (GLAD), GLFW, GLM |
| 2D/3D 物理 | PhysX, Box2D |
| ECS | EnTT |
| 脚本 | Mono (.NET) |
| 资产加载 | Assimp, stb_image |
| 编辑器 UI | ImGui, ImGuizmo, ImViewZmo |
| 日志 | spdlog |
| 序列化 | yaml-cpp |
| 其他 | FastNoise (噪声生成), tinyfiledialogs(简单的文件打开) |
---
## 🚀 快速开始
### 环境要求
- Windows 10/11 (暂未适配Linux和Max, 暂时未能在Linux成功构建PhysX的库.后面可能会考虑去看看Jolt或者Bullet)
- MSVC C++17
- CMake 3.10+
- (mono 使用Net内部集成的可以使用dotnet直接构建目前使用版本为 8.0)
### 构建步骤
1. **克隆仓库**(包含子模块)
```bash
git clone --recursive https://github.com/xxx/PrismEngine.git
```
2. **配置依赖**
- PhysX SDK: Prism/CmakeLists.txt内记录了是用的PhysX的构建配置建议手动按照配置构建SDK构建好后无需移动文件项目可以自动链接库
3. **编译**:
- **Cmake**:
```bash
cd Prism
cmake -B build -G Ninja
cmake --build build --target PrismEditor --config Release -j10
```
**Visual Studio**:
- visual Studio启用Cmake。 然后点击project下拉框找到 PrismEditor构建。
**JetBrain Clion**:
- clion 会自动识别Cmake, 运行调试配置找到PrismEditor构建。
---
## 📖 使用指南
- **创建新场景**`File -> New Scene` 或者 `Ctrl+N`
- **添加实体**:在场景层级面板右键 `Create Entity`
- **添加组件**:选中实体后,在属性面板点击 `Add Component`
- **拖拽资源**:从资源浏览器将模型/纹理拖入场景或实体
---
## 🙏 致谢
- 感谢所有开源库的作者们
- 感谢 Unity、Unreal 等商业引擎
- 特别感谢 Hazel Engine 系列教程的启发
---