SkinRender 是一个基于 SwiftUI + Metal 的 macOS 应用,用于 3D 模型的皮肤渲染和预览。你可以通过界面选择不同皮肤,实时查看模型贴图效果,并支持缩放、旋转等交互操作。
- 支持 OBJ 格式 3D 模型加载(默认
model.obj)。 - 支持多皮肤贴图切换(通过 Segmented Picker)。
- Metal 实时渲染,支持缩放、旋转(鼠标拖拽/滚轮/触控板)。
- 皮肤贴图资源管理简单,直接放入
Assets.xcassets。
SkinRender/
├── ContentView.swift // SwiftUI 主界面,皮肤选择与渲染视图
├── MetalView.swift // Metal 渲染视图与交互
├── MetalRenderer.swift // Metal 渲染核心逻辑
├── SimpleOBJLoader.swift // 简单 OBJ 文件解析
├── Shaders.metal // Metal 着色器
├── model.obj // 默认 3D 模型
├── Assets.xcassets/ // 皮肤贴图与资源
│ ├── skin1.imageset/
│ ├── skin2.imageset/
│ ├── skin3.imageset/
│ └── ...
└── SkinRenderApp.swift // App 入口
- macOS 13+
- Xcode 15+
- Swift 5.9+
- Metal 支持的 Mac 设备
- 使用 Xcode 打开
SkinRender.xcodeproj。 - 选择目标设备(Mac)。
- 点击运行(Run)即可。
- 皮肤贴图需放在
Assets.xcassets目录下,每个皮肤一个 imageset,命名如skin1、skin2、skin3。 - 每个 imageset 下放置对应的 PNG 图片(如
skin1.png),并在Contents.json中配置。 - 在
ContentView.swift的skins数组中添加皮肤名即可出现在界面选择中。
- 默认模型为
SkinRender/model.obj,需为标准 OBJ 格式。 - 替换此文件即可加载新模型(无需修改代码)。
- 模型需带有 UV 坐标,贴图才能正确显示。
- 拖拽鼠标:旋转模型
- 滚轮/触控板缩放:缩放模型
- 选择皮肤:切换不同贴图实时预览
MetalViewModel:负责皮肤名、缩放、旋转等状态管理MetalRenderer:负责模型加载、贴图切换、渲染流程SimpleOBJLoader:简单 OBJ 文件解析,自动居中和缩放模型Shaders.metal:顶点/片元着色器,支持透明像素剔除
本项目仅供学习和个人使用,欢迎二次开发和改进。