swifty-creatives

swifty-creatives

基于Metal的Swift创意编程框架 支持多平台

SwiftyCreatives是一个基于Swift和Metal的创意编程框架,支持macOS、iOS、visionOS和tvOS平台。它提供类似Processing的语法,实现3D图形绘制、visionOS沉浸式空间等功能。框架包含丰富的几何图形、效果、变换和渲染模式,并支持动画、音频和相机控制。SwiftyCreatives适合图形编程爱好者和创意开发者使用,可快速实现各种视觉创意项目,如交互式艺术装置、数据可视化和游戏原型设计等。

SwiftyCreatives创意编码Swift框架Metal渲染visionOSGithub开源项目

SwiftyCreatives

发布 Swift 兼容性 平台兼容性 许可证

Swift创意编码框架。
直接使用Metal进行渲染。灵感来自Processing。支持visionOS。

outputFinalfinal

要求

  • Swift5.9

支持的平台

  • macOS v14
  • iOS v17
  • visionOS v1
  • tvOS v17

主要特性

类似Processing的语法

您可以使用Swift编程语言轻松创建图形,同时保留Processing的直观本质。
我喜欢push()pop()使用Swift的尾随闭包变得如此简单。

import SwiftyCreatives

final class MySketch: Sketch {
    override func draw(encoder: SCEncoder) {
        let count = 20
        for i in 0..<count {
            color(0.75, Float(i) / 40, 1, 0.5)
            push {
                rotateY(Float.pi * 2 / Float(count) * Float(i))
                translate(10, 0, 0)
                box(0, 0, 0, 1, 1, 1)
            }
        }
    }
}

struct ContentView: View {
    var body: some View {
        SketchView(MySketch())
    }
}

截图 2024-02-04 5 38 56

Apple Vision Pro - 沉浸式空间

支持visionOS!您可以通过沉浸式空间渲染深入您的草图!

ImmersiveSpace(id: "ImmersiveSpace") {
    CompositorLayer(configuration: ContentStageConfiguration()) { layerRenderer in
        let renderer = RendererBase.BlendMode.normalBlend.getRenderer(sketch: SampleSketch(), layerRenderer: layerRenderer)
        renderer.startRenderLoop()
    }
}

ddd

xib转3D空间!

使用xib创建UIView,并将其放置在3D场景中!
UIButton可以与IBAction连接,并可以在3D空间中点击。

outout

安装

使用Swift包管理器。

dependencies: [
    .package(url: "https://github.com/yukiny0811/swifty-creatives.git", branch: "main")
]
.product(name: "SwiftyCreatives", package: "swifty-creatives")

功能特性

  • 几何图形
    • 矩形
    • 圆形
    • 立方体
    • 三角形
    • 线条
    • 粗线条
    • 3D模型(obj格式)
    • 图像
    • 文本
    • 3D文本
    • UIView对象(从xib创建的3D视图,带有交互式按钮)
    • 网格
    • 顶点缓冲区
    • SVG
  • 支持碰撞检测的几何图形(可点击或悬停)
    • 可碰撞矩形
    • 可碰撞立方体
    • 可碰撞图像
  • 效果
    • 颜色
    • 雾效
    • 泛光
    • 后期处理(可自定义)
  • 变换
    • 平移
    • 旋转
    • 缩放
    • 压入和弹出
  • 渲染
    • 带深度测试的普通渲染
    • 叠加混合渲染
    • 带深度测试的透明渲染
  • 动画
    • SCAnimatable属性包装器用于动画
  • 音频
    • 音频输入
    • FFT(快速傅里叶变换)
  • 相机
    • 透视相机
    • 正交相机
    • 可自定义视场角
  • 视图
    • SwiftUI视图
    • UIKit视图
    • visionOS沉浸式空间
  • 其他
    • 创建原始几何图形类
    • 字体渲染

事件

open func setupCamera(camera: MainCamera) {}
open func preProcess(commandBuffer: MTLCommandBuffer) {}
open func update(camera: MainCamera) {}
open func draw(encoder: SCEncoder) {}
open func afterCommit(texture: MTLTexture?) {}
open func postProcess(texture: MTLTexture, commandBuffer: MTLCommandBuffer) {}

#if os(macOS)
open func mouseMoved(camera: MainCamera, location: f2) {}
open func mouseDown(camera: MainCamera, location: f2) {}
open func mouseDragged(camera: MainCamera, location: f2) {}
open func mouseUp(camera: MainCamera, location: f2) {}
open func mouseEntered(camera: MainCamera, location: f2) {}
open func mouseExited(camera: MainCamera, location: f2) {}
open func keyDown(with event: NSEvent, camera: MainCamera, viewFrame: CGRect) {}
open func keyUp(with event: NSEvent, camera: MainCamera, viewFrame: CGRect) {}
open func viewWillStartLiveResize(camera: MainCamera, viewFrame: CGRect) {}
open func resize(withOldSuperviewSize oldSize: NSSize, camera: MainCamera, viewFrame: CGRect) {}
open func viewDidEndLiveResize(camera: MainCamera, viewFrame: CGRect) {}
open func scrollWheel(with event: NSEvent, camera: MainCamera, viewFrame: CGRect) {}
#endif

#if os(iOS)
open func onScroll(delta: CGPoint, camera: MainCamera, view: UIView, gestureRecognizer: UIPanGestureRecognizer) {}
open func touchesBegan(camera: MainCamera, touchLocations: [f2]) {}
open func touchesMoved(camera: MainCamera, touchLocations: [f2]) {}
open func touchesEnded(camera: MainCamera, touchLocations: [f2]) {}
open func touchesCancelled(camera: MainCamera, touchLocations: [f2]) {}
#endif

其他示例

ExampleMacOSApp 2023年-02月-24日 17 11 06

CheckMacOS 2023年-03月-01日 6 46 57

QuickTime Player - 画面収録 2023-02-10 1 53 14 mov 2023年-02月-10日 2 55 14

stable fluids

致谢

编辑推荐精选

扣子-AI办公

扣子-AI办公

职场AI,就用扣子

AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!

堆友

堆友

多风格AI绘画神器

堆友平台由阿里巴巴设计团队创建,作为一款AI驱动的设计工具,专为设计师提供一站式增长服务。功能覆盖海量3D素材、AI绘画、实时渲染以及专业抠图,显著提升设计品质和效率。平台不仅提供工具,还是一个促进创意交流和个人发展的空间,界面友好,适合所有级别的设计师和创意工作者。

图像生成AI工具AI反应堆AI工具箱AI绘画GOAI艺术字堆友相机AI图像热门
码上飞

码上飞

零代码AI应用开发平台

零代码AI应用开发平台,用户只需一句话简单描述需求,AI能自动生成小程序、APP或H5网页应用,无需编写代码。

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

Refly.AI

Refly.AI

最适合小白的AI自动化工作流平台

无需编码,轻松生成可复用、可变现的AI自动化工作流

酷表ChatExcel

酷表ChatExcel

大模型驱动的Excel数据处理工具

基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。

AI工具酷表ChatExcelAI智能客服AI营销产品使用教程
TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
AIWritePaper论文写作

AIWritePaper论文写作

AI论文写作指导平台

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

AI辅助写作AI工具AI论文工具论文写作智能生成大纲数据安全AI助手热门
博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

AI办公办公工具AI工具博思AIPPTAI生成PPT智能排版海量精品模板AI创作热门
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

下拉加载更多