在上一篇文章中,我们已经实现了场景布置、添加基座材质以及添加定位点。我们在之前的操作的基础上来完成更多的场景效果。

使用粒子发射器添加云彩效果

Particle emitters可以帮助我们快速实现很多的场景效果,例如烟火、下雪❄️、烟花🎇等。Patrticle emittersParticleEmitter两部分组成,每个部分又包含多个元素。

接下来,我们就是使用Particle emitters给场景中添加一些云。

阅读全文 »

下载安装Reality Composer Pro

在今年的WWDC23上,为了帮助开发者更好的开发Version Pro的应用,Apple 推出Reality Composer Pro

Apple 的官方介绍:

Discover the all-new Reality Composer Pro, designed to make it easy to preview and prepare 3D content for your visionOS apps. Available with Xcode, Reality Composer Pro can help you import and organize assets, such as 3D models, materials, and sounds. Best of all, it integrates tightly with the Xcode build process to preview and optimize your visionOS assets.

截止目前,Reality Composer Pro已经可以通过最新的Xcode 15.1 beta 3中获取使用。我们只需要下载对应的Xcode 版本。

然后,在Xcode 的顶部菜单栏中点击Xcode -> Open Developer Tools -> Reality Composer Pro即可。

阅读全文 »

在 SwiftUI之前,我们管理 app 的生命周期使用AppDelegate,这在使用 UIKit 开发时是非常常见的。在 iOS 13.0 之后,对于 SwifUI 的 app 可以使用AppDelegateSceneDelegate来管理 app 的生命周期。

1
2
3
4
5
6
7
8
9
10
@main
struct AppLifeycleApp: App {
@UIApplicationDelegateAdaptor(AppDelegate.self) var delegate

var body: some Scene {
WindowGroup {
ContentView()
}
}
}
阅读全文 »

使用模板创建 AR 项目

使用 Xcode创建一个 AR 项目时,直接选择Augmented Reality App模板:

接着,项目的配置选择SwiftUIRealityKit

项目创建好后,运行项目。注意RealityKit构建的项目无法直接在预览或者模拟器中查看效果,需要将项目运行在 iPad 或者 iPhone的真实设备上。

阅读全文 »

在上一篇文章中,我们已经通过Scene Editor实现了场景的布局。接下来我们将通过代码的方式来给节点添加图片材质、场景背景以及切换相机的视角。

定义模型和实现切换

定义一个名为Planet的枚举用来管理节点数据:

1
2
3
4
5
6
7
8
9
10
11
12
enum Planet: String, CaseIterable {
case mercury
case venus
case earth
case mars
case saturn

var name:String {
// 名字为首字母大写
rawValue.prefix(1).capitalized + rawValue.dropFirst()
}
}
阅读全文 »

在这篇博文中,我们将实现下面这样的一个效果:

在上面的效果中,使用SceneKit创建了一个 3D 的太阳系场景。在这个场景中,有我们常见的行星,然后我们还给场景设置了一个全场景的背景。最后就是通过下面的左右切换按钮可以切换视角查看不同的行星。

阅读全文 »

SceneKit is a high-level 3D graphics framework that helps you create 3D animated scenes and effects in your apps. It incorporates a physics engine, a particle generator, and easy ways to script the actions of 3D objects so you can describe your scene in terms of its content — geometry, materials, lights, and cameras — then animate it by describing changes to those objects.

SceneKit - Apple Developer

来自 Apple 的官方文档的说法,SceneKit 是一个面向高层级 3D 图形框架,它可以帮助我们在app中创建一个3D 可变的场景和效果。它包括了物理引擎、粒子生成器以及更简单的给 3D 对象添加动作。

阅读全文 »

在 SwiftUI 中,响应式是区别于 UIKit 的一大特点。SwiftUI 中的响应式主要依赖与数据的状态来进行视图的更新和重绘。

@State

假设我们想要实现一个简单的计数功能,即点击➕按钮实现次数的加一。如下的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
struct ContentView: View {
var count: Int = 0
var body: some View {
VStack(spacing: 10) {
Text("当前次数\(count)")
Button(action: {

}, label: {
Image(systemName: "plus")
.font(.title)
})

}
}
}

在上面的代码中,我们简单地在Buttonaction部分添加count += 1,如果我们这样做了,程序会报以下错误:

Left side of mutating operator isn’t mutable: ‘self’ is immutable

阅读全文 »
0%