Go to file

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没有成功构建)

🧩 已实现组件

// 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. 克隆仓库(包含子模块)

    git clone --recursive https://github.com/xxx/PrismEngine.git
    
  2. 配置依赖

    • PhysX SDK: Prism/CmakeLists.txt内记录了是用的PhysX的构建配置建议手动按照配置构建SDK构建好后无需移动文件项目可以自动链接库
  3. 编译:

    • Cmake:
    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 系列教程的启发

Description
No description provided
Readme 253 MiB
Languages
C++ 86.2%
GLSL 6.5%
C# 6.4%
CMake 0.8%
C 0.1%