SceneKit für Swift: Das komplette 3D-Tutorial

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

SceneKit für Swift: Das komplette Handbuch für 3D-Grafiken

SceneKit ist ein leistungsstarkes Framework für 3D-Grafiken, das von Apple entwickelt wurde. Es bietet Entwicklern eine hochwertige API zum Erstellen, Rendern und Animieren von dreidimensionalen Szenen auf allen Apple-Plattformen: iOS, macOS, tvOS und watchOS. Im Gegensatz zu Low-Level-Grafik-APIs wie Metal oder OpenGL abstrahiert SceneKit komplexe mathematische Berechnungen und die GPU-Arbeit, sodass du dich auf die Logik deiner App konzentrieren kannst.

Wofür wird SceneKit verwendet? Dieses Framework ist ideal für die Entwicklung von Spielen, interaktiven 3D-Präsentationen, Datenvisualisierungen, Architekturmodellen und Bildungs-Apps. Es unterstützt eine Physik-Engine (Simulation von Schwerkraft und Kollisionen), ein Partikelsystem, Skelettanimationen, Schatten- und Lichteffekte sowie die Integration mit Augmented Reality (ARKit). SceneKit kann Modelle in den Formaten .dae (Collada), .scn (Apple-eigenes Format) und .usdz laden, was es zu einem hervorragenden Werkzeug für den Import von Assets aus Blender, Maya oder 3ds Max macht.

Der größte Vorteil von SceneKit gegenüber Konkurrenten wie Unity ist die native Integration in das Apple-Ökosystem. Du kannst SwiftUI, UIKit oder AppKit für die Benutzeroberfläche verwenden und SceneKit für die 3D-Darstellung – und das alles in einer einzigen Sprache (Swift). Das Framework verwaltet den Speicher automatisch und optimiert das Rendering für jedes Gerät, was besonders für mobile Apps wichtig ist.

Installation und Einrichtung

SceneKit ist Teil des standardmäßigen Apple SDKs, daher ist keine separate Installation über Paketmanager wie CocoaPods oder Swift Package Manager erforderlich. Um zu starten, musst du das Framework lediglich in dein Projekt importieren.

Es gibt keinen Installationsbefehl, da das Framework vorinstalliert ist. Wenn du jedoch den Swift Package Manager für Abhängigkeiten verwendest, stelle sicher, dass dein Projekt auf iOS 8.0+ / macOS 10.10+ / tvOS 9.0+ / watchOS 3.0+ ausgelegt ist.

Für den Import in deinen Code verwendest du:

import SceneKit
import SceneKit.ModelIO // Zum Laden von Modellen über Model I/O

Wenn du mit Xcode arbeitest, füge einfach SceneKit.framework im Bereich "Frameworks, Libraries, and Embedded Content" deines Targets hinzu.

Schnellstart: Ein minimales Arbeitsbeispiel

Erstellen wir eine einfache 3D-Szene mit einem rotierenden Würfel. Dieses Beispiel kannst du in einem Playground oder in einer iOS/macOS-App ausführen.

import SceneKit
import PlaygroundSupport

// 1. Szene erstellen
let scene = SCNScene()

// 2. Kamera erstellen
let cameraNode = SCNNode()
cameraNode.camera = SCNCamera()
cameraNode.position = SCNVector3(x: 0, y: 0, z: 5)
scene.rootNode.addChildNode(cameraNode)

// 3. Würfel erstellen
let boxGeometry = SCNBox(width: 1.0, height: 1.0, length: 1.0, chamferRadius: 0.0)
let boxNode = SCNNode(geometry: boxGeometry)
boxNode.position = SCNVector3(x: 0, y: 0, z: 0)
scene.rootNode.addChildNode(boxNode)

// 4. Rotationsanimation hinzufügen
let rotateAction = SCNAction.rotateBy(x: 0, y: CGFloat.pi * 2, z: 0, duration: 5.0)
let repeatAction = SCNAction.repeatForever(rotateAction)
boxNode.runAction(repeatAction)

// 5. Anzeige im Playground einrichten
let scnView = SCNView(frame: CGRect(x: 0, y: 0, width: 400, height: 400))
scnView.scene = scene
scnView.backgroundColor = UIColor.darkGray
scnView.autoenablesDefaultLighting = true

PlaygroundPage.current.liveView = scnView

Wichtige Klassen und Methoden von SceneKit

Im Folgenden findest du die wichtigsten Komponenten des Frameworks mit Anwendungsbeispielen.

1. SCNScene – Der Container für die gesamte 3D-Szene

Signatur: class SCNScene : NSObject

Funktion: Dies ist das Wurzelobjekt, das alle Knoten (SCNNode), Geometrien, Lichtquellen, Kameras und physikalischen Körper enthält. Die Szene ist ein Knotengraph.

let scene = SCNScene()
scene.background.contents = UIC

Empfehlungen