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
, texture
multiply
, screen
, overlay
light
材质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)
}
}
}