Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何使用 SwiftUI 构建 visionOS 应用

如何使用 SwiftUI 构建 visionOS 应用

原创
作者头像
Swift社区
发布于 2024-08-06 12:34:20
发布于 2024-08-06 12:34:20
3490
举报
文章被收录于专栏:Swift社区Swift社区

前言

Apple Vision Pro 即将推出,现在是看看 SwiftUI API 的完美时机,这使我们能够将我们的应用程序适应 visionOS 提供的沉浸式世界。苹果表示,构建应用程序的最佳方式是使用 Swift 和 SwiftUI。下面,我们将学习如何使用 SwiftUI 构建 visionOS 应用程序。

Windows

我喜欢 SwiftUI 的一点是它如何自动适应平台。你无需执行任何操作即可在 visionOS 上运行使用 SwiftUI 编写的应用程序。它可以即插即用。但是,你始终可以通过向前移动并适应平台功能来改进用户体验。

代码语言:swift
AI代码解释
复制
struct ContentView: View {
    var body: some View {
        NavigationSplitView {
            List {
            // 列表内容
            }
            .navigationTitle("Models")
            .toolbar {
                ToolbarItem(placement: .bottomOrnament) {
                    Button("open", systemImage: "doc.badge.plus") {
                        
                    }
                }
                
                ToolbarItem(placement: .bottomOrnament) {
                    Button("open", systemImage: "link.badge.plus") {
                        
                    }
                }
            }
        } detail: {
            Text("Choose something from the sidebar")
        }
    }
}

在上面的示例中,我们使用了称为 bottomOrnament 的新工具栏放置。 visionOS 中的装饰是位于窗口外部的位置,用于呈现与窗口连接的控件。你还可以通过使用新的 ornament 视图修改器手动创建它们。

代码语言:swift
AI代码解释
复制
struct ContentView: View {
    var body: some View {
        NavigationSplitView {
            List {
            // 列表内容
            }
            .navigationTitle("Models")
            .ornament(attachmentAnchor: .scene(.leading)) {
                // 在此处放置你的视图
            }
        } detail: {
            Text("Choose something from the sidebar")
        }
    }
}

新的 ornament 视图修改器允许我们为其连接的窗口创建一个具有特定锚点的装饰。将你的应用内容适应 visionOS 提供的沉浸式体验的另一种方法是使用 transform3DEffectrotation3DEffect 视图修改器来加入深度效果。如下图:

Volumes

你的应用程序可以在 visionOS 上的同一场景中并排显示 2D 和 3D 内容。在这种情况下,我们可以使用 RealityKit 框架来呈现 3D 内容。例如,RealityKit 为我们提供了 Model3D SwiftUI 视图,允许我们从 USDZ 或实际文件中显示 3D 模型。

代码语言:swift
AI代码解释
复制
struct ContentView: View {
    var body: some View {
        NavigationSplitView {
            List(Model.all) { model in
                NavigationLink {
                    Model3D(named: model.name)
                } label: {
                    Text(verbatim: model.name)
                }
            }
            .navigationTitle("Models")
        } detail: {
            Model3D(named: "robot")
        }
    }
}

Model3D 视图的工作方式类似于 AsyncImage 视图,并异步加载模型。你还可以使用 Model3D 初始化器的另一种变体,它允许你自定义模型配置并添加占位视图。

代码语言:swift
AI代码解释
复制
struct ContentView: View {
    var body: some View {
        NavigationSplitView {
            List(Model.all) { model in
                NavigationLink {
                    Model3D(
                        url: Bundle.main.url(
                            forResource: model.name,
                            withExtension: "usdz"
                        )!
                    ) { resolved in
                        resolved
                            .resizable()
                            .aspectRatio(contentMode: .fit)
                    } placeholder: {
                        ProgressView()
                    }
                } label: {
                    Text(verbatim: model.name)
                }
            }
            .navigationTitle("Models")
        } detail: {
            Model3D(named: "robot")
        }
    }
}

在你的应用程序中呈现 3D 内容时,你可以使用 windowStyle 修饰符来启用内容的体积显示。体积样式允许你的内容在第三维中增长,以匹配模型的大小。

对于更复杂的 3D 场景,我们可以使用 RealityView 并填充它以 3D 内容。

代码语言:swift
AI代码解释
复制
struct ContentView: View {
    var body: some View {
        NavigationSplitView {
            List(Model.all) { model in
                NavigationLink {
                    RealityView { content in
                        // load the content and add to the scene
                    }
                } label: {
                    Text(verbatim: model.name)
                }
            }
            .navigationTitle("Models")
        } detail: {
            Text("Choose something from the sidebar")
        }
    }
}

沉浸式空间

visionOS 的第三个选项是完全沉浸式体验,允许我们通过隐藏周围的所有内容来专注于你的场景。

代码语言:swift
AI代码解释
复制
@main
struct MyApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
        
        ImmersiveSpace(id: "solar-system") {
            SolarSystemView()
        }
    }
}

正如你在上面的示例中所看到的,我们通过使用 ImmersiveSpace 类型来定义场景。它允许我们通过使用 openImmersiveSpace 环境值来启用它。

代码语言:swift
AI代码解释
复制
struct MyMenuView: View {
    @Environment(\.openImmersiveSpace) private var openImmersiveSpace
    
    var body: some View {
        Button("Enjoy immersive space") {
            Task {
                await openImmersiveSpace(id: "solar-system")
            }
        }
    }
}

我们还可以使用 dismissImmersiveSpace 环境值来关闭沉浸式空间。请记住,你一次只能显示一个沉浸式空间。

代码语言:swift
AI代码解释
复制
struct SolarSystemView: View {
    @Environment(\.dismissImmersiveSpace) private var dismiss
    
    var body: some View {
        // Immersive experience
        
        Button("Dismiss") {
            Task {
                await dismiss()
            }
        }
    }
}

结论

在介绍了 SwiftUI 在 visionOS 上的应用之后,我们了解到 SwiftUI 可以帮助我们轻松构建适应 visionOS 的应用程序。不仅如此,SwiftUI 还提供了许多方便的工具和修饰符,例如 windowStyle 修饰符,可用于在应用程序中呈现 3D 内容,并使内容根据模型的大小自动适应。通过引入沉浸式空间,我们可以将用户带入全新的体验,让他们沉浸在应用程序的世界中。总的来说,SwiftUI 为构建 visionOS 应用程序提供了强大而灵活的工具,我们可以期待在这个全新的平台上开发出令人惊叹的应用体验。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Vray 6.00 for Rhino:打造更真实精细的建筑渲染效果
Vray 6.00 for Rhino是目前Rhino渲染中最为先进和成熟的渲染引擎之一。它充分利用了Rhino网格模型的强大建模能力,提供高质量的渲染图像和快速的渲染速度。用户可以通过Vray 6.00 for Rhino轻松创建出具有高度真实感和艺术感的图像和动画。
用户10480228
2023/04/08
6450
Vray 6.00 for Rhino:打造更真实精细的建筑渲染效果
Rhino之光—Vray 6.00为你的建模注入无限可能+全版本安装包
Vray 6.00 for Rhino是一款专为Rhino用户打造的高级渲染器。随着建模技术的不断进步,Rhino已经成为了多个领域中不可或缺的建模软件之一,而Vray 6.00给了Rhino用户更多的创作自由和无限可能性。
用户10480228
2023/04/18
5790
Rhino之光—Vray 6.00为你的建模注入无限可能+全版本安装包
维度升华—Vray 6.0 for SketchUp带你走入真实建模世界+全版本安装包
Vray 6.0 for SketchUp是一款高级渲染器,由世界著名CG制作公司ChaosGroup开发,旨在为SketchUp用户提供快速且高质量的渲染效果,实现真实的光照和材质细节效果。
用户10480228
2023/04/18
8050
维度升华—Vray 6.0 for SketchUp带你走入真实建模世界+全版本安装包
VRay5.1 for 3ds Max:打造逼真的3D建筑视觉效果的完美解决方案
VRay5.1 for 3ds Max是一款专业的渲染软件,适用于3D建筑可视化领域,旨在提供高质量的渲染效果和高效的工作流程,从而帮助建筑师和其它设计人员呈现更加逼真的建筑效果图。该软件与3ds Max完美结合,提供了全面的渲染和制作解决方案,有助于用户完成复杂的建筑场景和室内设计。
用户10313071
2023/04/05
9960
VRay5.1 for 3ds Max:打造逼真的3D建筑视觉效果的完美解决方案
VRay 5.0 for 3D MAX让3D MAX更加真实高质量渲染器+全版本安装包
VRay是一款广泛应用于CG艺术、室内设计、建筑可视化等领域的渲染软件。随着VR技术的不断发展,VRay也不断引领着渲染技术的发展方向。其中,VRay 5.0 for 3D MAX可以说是这个系列软件的全新升级,它带来了更高的性能和更多新功能。
用户10480228
2023/04/13
6530
VRay 5.0 for 3D MAX让3D MAX更加真实高质量渲染器+全版本安装包
Vray 5.2 for Rhino:高品质渲染的专业建模插件+全版本安装包
Vray 5.2 for Rhino 是 Chaos Group 公司的一款专业建模插件,它支持全平台去重,并且可以在 Windows 和 macOS 等操作系统下运行。该插件具有强大的渲染和建模功能,可用于创建各种类型的建筑、室内设计和产品设计等。下面我将从不同的角度为大家介绍这款优秀的插件。
用户10521990
2023/04/21
4831
Vray 5.2 for Rhino:高品质渲染的专业建模插件+全版本安装包
3DS Max渲染器V-ray最新版6.0:Chaos V-Ray for 3ds max 2020-2023版安装教程
3DS Max渲染器V-ray最新版6.0:Chaos V-Ray for 3ds max 2020-2023版安装教程
学习牛牛
2023/04/19
6070
3DS Max渲染器V-ray最新版6.0:Chaos V-Ray for 3ds max 2020-2023版安装教程
3DS Max渲染器V-ray最新版6.0:Chaos V-Ray for 3ds max 2020-2023版安装教程
3ds Max是一款功能强大的三维制作软件,它还支持与其他Autodesk产品进行协作,如Revit、AutoCAD和Maya等,可以通过导入和导出数据进行互操作。这意味着用户可以在不同的Autodesk产品之间无缝切换,方便快捷地进行三维制作和设计。同时,3ds Max还支持各种脚本和插件,用户可以通过编写脚本和使用插件来扩展软件的功能和性能。用户可以根据自己的需要来选择合适的脚本和插件,例如用于自动化建模的脚本、用于增强渲染质量的插件等。这些脚本和插件可以帮助用户提高工作效率,缩短制作周期,从而更好地满足用户的需求。总的来说,3ds Max是一款非常强大的三维制作软件,它不仅自身功能丰富,而且与其他Autodesk产品协作无缝,支持各种脚本和插件,为用户提供了更多的选择和可能性。
用户10507785
2023/04/18
9490
3DS Max渲染器V-ray最新版6.0:Chaos V-Ray for 3ds max 2020-2023版安装教程
VRay3.0-6.2 for 3dmax2014-2024软件下载及安装教程
1.安装VRay 3.0【vr 3.0】 for 3dsmax2014 (64位) 英文官方破版,双击打开VRay 3.0的安装程序。
知识兔下载
2023/03/11
2.7K0
Rhino7.27:专业三维建模软件,轻松打造复杂设计!+全版本安装包
Rhino7.27 是一款专业三维建模软件,它支持全平台去重,并且可以在 Windows 和 macOS 等操作系统下运行。该软件具有强大的三维建模和设计能力,可以帮助用户轻松打造各种复杂的设计。下面我将从不同的角度为大家介绍这款优秀的软件。
用户10521990
2023/04/21
3300
Rhino7.27:专业三维建模软件,轻松打造复杂设计!+全版本安装包
高效实用的三维设计软件——Rhino 7.27+全版本安装包
Rhino 7.27是一款旨在为建筑师、设计师、工程师和制造商提供高效三维建模的软件。该软件是由McNeel Inc.推出的最新版本,具有许多卓越的功能和工具,可用于创建高精度的建筑模型、产品原型、艺术品和佣金作品。
用户10480228
2023/04/18
5570
高效实用的三维设计软件——Rhino 7.27+全版本安装包
VRay 5.2 for 3dsmax:打造逼真渲染的顶级建模插件+全版本安装包
VRay 5.2 for 3dsmax 是 Chaos Group 公司的一款专业建模插件,它支持全平台去重,并且可以在 Windows 和 macOS 等操作系统下运行。该插件具有强大的渲染和建模功能,可用于创建各种类型的建筑、室内设计和产品设计等。下面我将从不同的角度为大家介绍这款优秀的插件。
用户10521990
2023/04/21
9620
VRay 5.2 for 3dsmax:打造逼真渲染的顶级建模插件+全版本安装包
三维渲染Vray for 3dsmax 4.2 软件安装下载教程+全版本安装包
Vray for 3dsmax 4.2是一款功能强大的三维渲染软件,具有多种特性和工具帮助用户实现高质量、逼真的三维效果。该软件拥有先进的渲染引擎和算法,可以快速处理各类复杂场景和光影效果,并具备卓越的稳定性和性能表现。
用户10519331
2023/04/24
6170
三维渲染Vray for 3dsmax 4.2 软件安装下载教程+全版本安装包
高效建模、更多拓展,Rhino 7.26 助力三维设计+全版本安装包
Rhino7.26是一款图形处理软件,可在Windows、macOS和Linux操作系统上运行。该软件具有广泛的应用,涵盖了从产品设计和工业设计到建筑设计和数字娱乐的各个领域。Rhino7.26在最近的版本中进行了全面升级,带来了许多新的特性和改进,让用户的设计和创作更加强劲和高效。
用户10313071
2023/04/13
2780
高效建模、更多拓展,Rhino 7.26 助力三维设计+全版本安装包
VRay6.02 for SketchUp为用户提供更加易用和高效的渲染解决方案
VRay6.02 for SketchUp 是一款功能强大的渲染引擎软件,专门面向 SketchUp 用户提供高效、易用的渲染解决方案。该软件是由著名的渲染引擎开发公司 Chaos Group 公司开发,为数以万计的建筑、景观、室内、产品、工程设计等行业用户提供了高质量、真实感十足的 3D 渲染体验。
用户10480228
2023/04/08
7430
VRay6.02 for SketchUp为用户提供更加易用和高效的渲染解决方案
顶级3D设计Rhino6.21软件下载安装教程+Rhino全版本安装包
Rhino 6.21是一款专业的3D建模软件,其特点是功能强大、易于使用,能够帮助用户快速、高效地创建出精美的3D模型。以下是Rhino 6.21的主要特色:
用户10521990
2023/04/25
4180
顶级3D设计Rhino6.21软件下载安装教程+Rhino全版本安装包
SketchUp 2023:更智能的建模工具,打造理想中的建筑设计
SketchUp是一款专业且易用的三维建模软件,被广泛应用于建筑设计、室内设计、景观设计、工业设计等领域。SketchUp 2023是其最新版本,其独特的功能和特性可以帮助用户更加智能地建模,以及帮助用户快速实现他们的设计想法。
用户10313071
2023/04/17
5410
SketchUp 2023:更智能的建模工具,打造理想中的建筑设计
三维动画软件MAYA最新中文版,玛雅maya2023软件安装教程下载
Maya是一款非常强大的三维建模软件,使用者可以在其中创造出各种形态的三维图像和动画。在我的使用过程中,我深深感受到了这款软件的强大和便捷。
用户10413399
2023/03/18
1K0
三维动画软件MAYA最新中文版,玛雅maya2023软件安装教程下载
三维动画maya软件中文版,maya软件2023版安装教程下载
Maya是一款功能强大的三维建模和动画软件,它可以帮助用户创作出各种各样的动画、游戏、电影和视觉效果。如果你是一名设计师、游戏开发者、动画师或影视制作人,那么Maya就是你的最佳选择。
用户10413399
2023/03/20
9350
三维动画maya软件中文版,maya软件2023版安装教程下载
Maya2023:开启个性化设计新时代 安装步骤 安装包下载|含全版本
Maya 2023是一款旨在帮助用户实现无限创意、超越想象的三维动画、建模和渲染软件。它为用户提供了丰富多彩的工具和功能,可以充分满足各种不断变化的需求,从而使用户能够进一步提高其创作效率和运用 Maya 软件进行创作的体验。
用户10313071
2023/04/08
8820
Maya2023:开启个性化设计新时代 安装步骤 安装包下载|含全版本
推荐阅读
Vray 6.00 for Rhino:打造更真实精细的建筑渲染效果
6450
Rhino之光—Vray 6.00为你的建模注入无限可能+全版本安装包
5790
维度升华—Vray 6.0 for SketchUp带你走入真实建模世界+全版本安装包
8050
VRay5.1 for 3ds Max:打造逼真的3D建筑视觉效果的完美解决方案
9960
VRay 5.0 for 3D MAX让3D MAX更加真实高质量渲染器+全版本安装包
6530
Vray 5.2 for Rhino:高品质渲染的专业建模插件+全版本安装包
4831
3DS Max渲染器V-ray最新版6.0:Chaos V-Ray for 3ds max 2020-2023版安装教程
6070
3DS Max渲染器V-ray最新版6.0:Chaos V-Ray for 3ds max 2020-2023版安装教程
9490
VRay3.0-6.2 for 3dmax2014-2024软件下载及安装教程
2.7K0
Rhino7.27:专业三维建模软件,轻松打造复杂设计!+全版本安装包
3300
高效实用的三维设计软件——Rhino 7.27+全版本安装包
5570
VRay 5.2 for 3dsmax:打造逼真渲染的顶级建模插件+全版本安装包
9620
三维渲染Vray for 3dsmax 4.2 软件安装下载教程+全版本安装包
6170
高效建模、更多拓展,Rhino 7.26 助力三维设计+全版本安装包
2780
VRay6.02 for SketchUp为用户提供更加易用和高效的渲染解决方案
7430
顶级3D设计Rhino6.21软件下载安装教程+Rhino全版本安装包
4180
SketchUp 2023:更智能的建模工具,打造理想中的建筑设计
5410
三维动画软件MAYA最新中文版,玛雅maya2023软件安装教程下载
1K0
三维动画maya软件中文版,maya软件2023版安装教程下载
9350
Maya2023:开启个性化设计新时代 安装步骤 安装包下载|含全版本
8820
相关推荐
Vray 6.00 for Rhino:打造更真实精细的建筑渲染效果
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档