Rotierende 3D-Box mit RealityKit
Beschreibung
Dieses Beispiel zeigt, wie du mit SwiftUI und RealityKit eine einfache 3D-Box renderst, die sich kontinuierlich um eine benutzerdefinierte Achse dreht. Es werden SwiftUI-View und ein RealityKit-ModelEntity kombiniert, wobei die Rotation durch einen Timer gesteuert wird.
🔍 Zweck
Das Codebeispiel demonstriert:
- Die Integration von RealityKit in eine SwiftUI-View.
- Die dynamische Erzeugung und Platzierung eines 3D-Objekts (Box) im AR-Raum.
- Die wiederholte Rotation des Objekts um eine benutzerdefinierte Achse mittels Timer.
- Die Verwendung von
.move(to:duration:timingFunction:)
für sanfte Animationen.
Dies eignet sich ideal als Basis für eigene AR-Experimente oder als Einstieg in RealityKit mit SwiftUI.
📄 Codebeispiel
import SwiftUI
import RealityKit
struct ContentView: View {
var body: some View {
RealityView { content in
let model = ModelEntity(mesh: .generateBox(size: 0.5))
model.position = [0, 0, -0.5]
content.add(model)
// Repeat the rotation using a custom Timer
let rotationDuration: TimeInterval = 4.0
Timer.scheduledTimer(withTimeInterval: rotationDuration, repeats: true) { _ in
var transform = model.transform
// Rotate around a custom axis (here: [1, 0, 1])
let deltaRotation = simd_quatf(angle: .pi, axis: simd_normalize([1, 0, 1]))
transform.rotation = simd_normalize(transform.rotation * deltaRotation)
model.move(to: transform, relativeTo: nil, duration: rotationDuration, timingFunction: .easeInOut)
}
}
.edgesIgnoringSafeArea(.all)
}
}