Skip to main content

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)
    }
}