Creamy 3D 是一个库,允许将简单的 3D 对象无缝集成到您的 SwiftUI 项目中。 使用交互式图标和 3D 视觉效果来丰富您的应用程序 UI。 它的材质系统从 Spline.design 汲取灵感。
CreamyView {
Mesh(source: .stl("order")) {
MatcapMaterial(name: "matcap")
}
.resizable()
.scaledToFit()
}
要将模型注入到您的场景中,只需从 CreamyView 开始。 此视图采用其父容器的大小,并期望一个模型构建器作为输入参数。 采用与 SwiftUI 的 Image 修饰符类似的的设计原则,与您的模型交互感觉自然而直观。 例如,.resizable() 修饰符会缩放您的模型以占据整个容器空间。
材质系统受到 spline.design 的启发,因此目标是使库能够重现任何视觉外观。
| 材质 | 状态 | 备注 |
|---|---|---|
| 颜色 | ✅ 已完成 | |
| Matcap(材质捕捉) | ✅ 已完成 | |
| 菲涅尔 (Fresnel) | 🟡 部分完成 | 缺少 Factor。 结果与 spline.design 不完全匹配 |
| 纹理 | 🟡 部分完成 | 目前仅基于 UV 采样 |
| 光照 | ⚙ 进行中 | |
| 法线 | 待办 | |
| 深度 | 待办 | |
| 渐变 | 待办 | |
| 噪声 | 待办 | |
| 彩虹 | 待办 | |
| 轮廓 | 待办 | |
| 玻璃 | 待办 | |
| 图案 | 待办 |
该库提供了一些基本的原始形状,但目前没有计划使形状生成更高级。 主要重点将放在渲染来自文件的模型上。
| 网格 | 状态 |
|---|---|
| 球体 | ✅ 已完成 |
| 立方体 | ✅ 已完成 |
| 模型 | 🟡 部分完成 |
| 平面 | 待办 |
| 圆柱体 | 待办 |
| 锥体 | 待办 |
| ... | 待办 |
计划支持最常见的后期处理效果。 列表尚未完整。
| 后期处理 | 状态 |
|---|---|
| 泛光 | 待办 |
| 色差 | 待办 |
| ... | 待办 |
.background)offset, rotation。frame 和 padding。fresnel, texturemultiply, screen, overlaylight 材质CreamyView {
Scene(name: "my_scene.usdz") {
Object(name: "my object") { // Define materials for the object named "my object"
ColorMaterial(color: .white)
LightMaterial(type: .physical) {
DirectionalLight(direction: .init(x: 1.0, y: 1.0, z: 0.0))
}
}
}
}
Clonner(.grid(.init(x: 10, y: 10, z: 10)), spacing: 16.0) {
Mesh(source: .sphere)
.resizable()
.frame(width: 50.0, height: 50.0)
}
Mesh(source: .sphere) {
Transition(.fade, value: isSwitched) { value in
if value {
ColorMaterial(color: .red)
} else {
ColorMaterial(black: .black)
}
}
}