engvis-0.1.0 is not a library.
engvis
工程可视化框架 - 基于Rust和wgpu的高性能3D工程可视化工具
项目简介
engvis是一个用Rust编写的工程可视化框架,专为工程应用设计。它提供了完整的3D渲染管线,支持glTF模型加载、PBR材质渲染、灵活的相机控制和丰富的UI界面。
主要特性
- GPU加速渲染: 基于wgpu实现跨平台GPU渲染
- glTF模型支持: 支持加载glTF格式的3D模型
- PBR材质系统: 完整的物理渲染材质系统
- 灵活的相机控制: 轨道相机,支持多种视图模式(前视图、顶视图、右视图、等轴测视图)
- 顶点和边线渲染: 可视化显示网格的顶点和边线
- 高级光照系统: 支持环境光、方向光和点光源
- 实时UI界面: 基于egui的实时参数调整界面
- 场景管理: 完整的场景图和节点管理系统
项目结构
engvis/
├── crates/
│ ├── engvis-core/ # 核心数据类型和算法
│ └── engvis-renderer/ # GPU渲染实现
└── src/
└── main.rs # 主应用程序
engvis-core
核心库,提供:
- 相机系统(OrbitCamera)
- 网格数据结构(Mesh, SubMesh, MeshVertex)
- 材质系统(PbrMaterial)
- 光照系统(AmbientLight, DirectionalLight, PointLight)
- 场景管理(Scene, SceneNode)
- 输入处理(InputState)
- 包围盒(Aabb)
engvis-renderer
渲染库,提供:
- GPU上下文管理(GpuContext, GpuResources)
- 网格渲染器(MeshRenderer)
- 材质管线(MaterialPipeline)
- 网格渲染(GridRenderer)
- 覆盖层渲染(OverlayRenderer)
- 光照缓冲(LightingBuffer)
- 纹理缓存(TextureCache)
- glTF加载器
- egui集成
快速开始
环境要求
- Rust 1.70或更高版本
- 支持Vulkan、Metal或DirectX 12的GPU
运行示例
# 克隆仓库
# 运行程序
使用方法
程序启动后会显示一个默认的立方体场景。你可以:
-
加载glTF模型:
- 点击菜单栏
File-> 输入模型路径 -> 点击Load glTF
- 点击菜单栏
-
相机控制:
- 鼠标左键拖动:旋转视图
- 鼠标右键拖动:平移视图
- 鼠标滚轮:缩放
- 底部面板提供预设视图按钮:Front、Top、Right、Iso、Fit
-
调整渲染参数:
- 左侧面板:场景信息
- 右侧面板:材质、光照、渲染选项
- 可以调整表面透明度、边线颜色和宽度、顶点大小等
-
光照调整:
- 在右侧面板调整环境光和方向光的颜色和强度
作为库使用
添加依赖
在你的 Cargo.toml 中添加:
[]
= "0.1.0"
= "0.1.0"
示例代码
use ;
use ;
use ;
// 创建场景
let mut scene = default;
// 添加网格和材质
scene.meshes.push;
scene.materials.push;
// 添加场景节点
scene.nodes.push;
// 创建相机
let camera = new;
// 渲染
// ... 参考examples目录中的完整示例
技术栈
- wgpu: 跨平台GPU抽象层
- winit: 窗口管理和事件处理
- egui: 即时模式GUI库
- glam: 数学库
- bytemuck: 零拷贝类型转换
许可证
本项目采用 MIT 许可证。详见 LICENSE 文件。
贡献
欢迎提交Issue和Pull Request!
作者
nil (nil_lilin@163.com)