SceneKit: bu nədir, 3D səhnələr və səhnə qrafiki

Müəllif: IT Sectr Dərc olunub: 2026-05-03 Oxuma vaxtı: 10 dəq

SceneKit — Apple-ın iOS, macOS və tvOS-da 3D qrafika ilə iş üçün çərçivəsi olub, OpenGL və ya Metal bilmədən üölçülü səhnələr yaratmaq üçün yüksək səviyyəli API təmin edir. Fizika, animasiya, işıqlandırma və ARKit ilə inteqrasiyanı dəstəkləyir. Apple WWDC (2025) məlumatlarına görə, SceneKit 50 mindən çox tətbiq və oyunda istifadə olunur.

Əsas məqamlar

  • SceneKit — səhnə qrafiki və GPU renderinqi ilə 3D qrafika çərçivəsi
  • SCNScene — SCNNode düyünlərindən ibarət kök konteyner
  • SCNMaterial obyektlərin görünüşünü şeyderlər və teksturlar vasitəsilə müəyyən edir
  • Fizika mühərriki SceneKit cazibə, toqquşma və birləşmələri simulyasiya edir
  • ARKit və Metal ilə inteqrasiya yüksək performanslı AR tətbiqləri yaratmağa imkan verir

SceneKit nədir?

SceneKit — Apple SDK-sının tərkibinə daxil olan və iOS 8-də (2014) təqdim edilmiş 3D qrafika çərçivəsidir. SceneKit interaktiv 3D səhnələri yaratmaq üçün Metal və OpenGL üzərində işləyən tam skriptli API təmin edir. Çərçivə Model I/O vasitəsilə Collada (DAE), Alembic (ABC), USD və GLTF formatlarında modellərin idxalını dəstəkləyir.

Aşağı səviyyəli API-lərdən (Metal, Vulkan) fərqli olaraq, SceneKit renderinq, işıqlandırma və fizikanın idarə edilməsini üzərinə götürür. Tərtibatçı səhnəni deklarativ şəkildə təsvir edir: düyünlər əlavə edir, materiallar və animasiyalar təyin edir. SceneKit avtomatik olaraq həndəsəni optimallaşdırır, draw calls-ları birləşdirir və zəruri olduqda LOD-ə nəzarət edir.

SceneKit real dünyada 3D obyektləri göstərmək üçün ARKit ilə, habelə maşın görmü və səhnə təhlili üçün Core ML ilə birlikdə işləyə bilər. Apple-a görə (2025), ən son versiyasında SceneKit yalnız Metal API-dən istifadə edir və Apple Silicon çiplərində Metal 3 və GPU Family 9-u dəstəkləyir.

SceneKit-in tarixi

SceneKit macOS-də 2012-ci ildə OS X Mountain Lion tərkibində ortaya çıxdı və ilkin olaraq renderinq üçün OpenGL-dən istifadə edirdi. iOS 8-in buraxılması ilə çərçivə mobil cihazlarda əlçatan oldu. SceneKit 2.0 (iOS 10) PBR materialları, HDR işıqlandırmanı və modellərin idxalı üçün Model I/O ilə inteqrasiyanı əlavə etdi.

iOS 12-də SceneKit tamamilə Metal-a keçdi. iOS 15 USDZ formatı və AR Quick Look dəstəyini təqdim etdi. iOS 18 (2024) ilə SceneKit A17 Pro və M4 çipli cihazlarda aparot şüalərin izlənməsinin sürətləndirilməsini əldə etdi və mobil cihazlarda real vaxtda realist kölgələr və əkslərdənmələrə imkan verdi.

SceneKit arxitekturası: səhnə qrafiki və düyünlər

SceneKit arxitekturası səhnə qrafikinə əsaslanır, burada SCNScene SCNNode iyerarxiyasını ehtiva edən kök elementdir. Hər bir düyünün uşaq düyünləri var və həndəsə, kamera, işıq və ya fiziki cisim ehtiva edə bilər. Düyünün mövqeyi sol tərəfli koordinat sistemində SCNVector3 (x, y, z) vasitəsilə təyin edilir.

SCNScene — kök konteyner

SCNScene 3D dünyasının bütün vəziyyətini ehtiva edir: kök düyün rootNode, fon parametrləri (background), işıq mənbələri və fiziki dünya (SCNPhysicsWorld). Səhnə .scn faylından (SceneKit Scene Format) yüklənə və ya proqram vasitəsilə yaradıla bilər. .scn formatı açıqdır və JSON-a əsaslanır.

swift
import SceneKit
 
let scene = SCNScene()
scene.background.contents = UIColor.darkGray
 
// Kameranın yaradılması
let cameraNode = SCNNode()
cameraNode.camera = SCNCamera()
cameraNode.position = SCNVector3(0, 5, 10)
scene.rootNode.addChildNode(cameraNode)
 
// Fizika ilə kubun yaradılması
let box = SCNBox(width: 2, height: 2, length: 2, chamferRadius: 0)
let boxNode = SCNNode(geometry: box)
boxNode.physicsBody = SCNPhysicsBody(type: SCNPhysicsBodyType.dynamic,
    shape: SCNPhysicsShape(geometry: box))
scene.rootNode.addChildNode(boxNode)

SCNCamera sinfi perspektiv və ya ortoqrafik proyeksiyanı konfiqurasiya edir. Parametrlər: fieldOfView (baxış bucağı, standart 45°), zNear/zFar (yaxın/uzaq kəsmə müstəvisi). SceneKit bu parametrlərə və ekran nisbətinə əsaslanaraq proyeksiya matrisini avtomatik idarə edir.

SCNNode — səhnə düyünləri

SCNNode həndəsə, transformasiya və fiziki cismi birləşdirir. Düyünlər boş (digər düyünlər üçün konteynerlər) ola və ya geometry xassəsi vasitəsilə həndəsə ehtiva edə bilər. Hər bir düyünün proqram axtarışı üçün adı (name) var və CAAnimation və ya əvvəlcədən təyin edilmiş SCNTransaction vasitəsilə animasiya edilə bilər.

Düyünün transformasiyası position (SCNVector3), rotation (SCNVector4) və scale (SCNVector3) xassələri vasitəsilə təyin edilir. Mürəkkəb transformasiyalar üçün transform (SCNMatrix4) xassəsi istifadə olunur. Həmçinin pivot — transformasiya mərkəzinin yerdəyişməsi və worldPosition — iyerarxiyadan asılı olmayaraq dünya məkanında mütləq mövqe mövcuddur.

SCNView — renderinq

SCNView — SCNScene-i göstərmək üçün UIView. allowsCameraControl xassəsi jestlərlə (hərəkət etdirmə, döndərmə, miqyaslama) istifadəçi kamera idarəsini aktivləşdirir. Debug üçün showsStatistics (FPS, draw calls, poliqonlar) və debugOptions (wireframe, bounding boxes) mövcuddur.

SwiftUI-də SceneKit SceneView vasitəsilə daxil edilir, bu da SCNView-i bükür və səhnə parametrlərinə bağlantıları dəstəkləyir. Apple-a görə (2025), SceneView SCNView ilə eyni Metal rendererindən istifadə edir və SwiftUI ilə UIKit arasındakı körpüdə əlavə yük yaratmır.

SceneKit-də materiallar, işıqlandırma və fizika

SCNMaterial həndəsə səthinin işıqla necə qarşılıqlı əlaqədə olduğunu müəyyən edir. SceneKit roughness, metalness, albedo və normal parametrlərindən istifadə edən SCNMaterial.LightingModel.physicallyBased vasitəsilə PBR (Physically Based Rendering) dəstəkləyir. PBR materialları parıltının əl ilə konfiqurasiyası olmadan istənilən işıqlandırmada realist görünür.

SCNMaterial və teksturlar

SCNMaterial bir neçə kanala malikdir: diffuse (rəng/tekstur), specular (güzgü parıltısı), normal (normal xəritə), emission (işıq saçma), roughness (kötürlük) və metalness (metalılıq). Hər bir kanal animasiyalı teksturlar üçün UIColor, UIImage, CALayer və ya SKScene ehtiva edə bilər.

swift
// 3D obyekt üçön PBR materialı
let sphere = SCNSphere(radius: 1.5)
let material = SCNMaterial()
material.lightingModel = SCNMaterial.LightingModel.physicallyBased
material.diffuse.contents = UIColor.orange
material.roughness.contents = 0.3
material.metalness.contents = 0.8
sphere.materials = [material]
 
let sphereNode = SCNNode(geometry: sphere)
sphereNode.position = SCNVector3(0, 2, -5)

roughness 0.3metalness 0.8 parametrləri tutqun örtüklü cilalanmış metalı xatırladan material yaradır. Dielektriklər (taxta, plastik) üçün metalness 0-a, metallar üçün isə 1.0-a yaxın təyin edilir. PBR materialları avtomatik olaraq səhnənin HDR işıqlandırmasına uyğunlaşır.

SceneKit-də işıqlandırma

SCNLight bir neçə növ işıq mənbəyini dəstəkləyir: omni (nöqtəvi), directional (istiqamətli), spot (projektor), ambient (ətraf) və area (səth). Hər bir mənbə intensivliyə (intensity), rəngə (color) malikdir və kölgə sala bilər (castsShadow). SceneKit shadow maps vasitƏřsilə kölgələri avtomatik idarə edir.

SceneKit tonal kompressiya (tone mapping) ilə HDR işıqlandırmanı dəstəkləyir. SCNView-də wantsHDR xassəsi genişləndirilmiş dinamik diapazonu aktivləşdirir. Kamera atributları: whitePoint, adaptativeLuminance və exposure şəkli səhnənin parlaqlığına uyğunlaşdıraraq fotoqrafik ekspozisiya effekti yaradır.

SCNPhysicsBody fizikası

SCNPhysicsBody bərk cisimlərin fizikasını simulyasiya edir: cazibə, toqquşmalar və sürtünmə. Bədən növləri: .static (hərəkətsiz), .dynamic (qüvvələrin təsiri altında) və .kinematic (proqram vasitəsilə idarə olunan). Bədənin forması düyünün həndəsəsinə və ya sadələşdirilmiş formaya (box, sphere, concave polyhedron) əsaslana bilən SCNPhysicsShape vasitəsilə təyin edilir.

SCNPhysicsWorld səhnənin qlobal fizikasını idarə edir: cazibə (gravity), simulyasiya sürəti (speed) və SCNPhysicsContactDelegate vasitəsilə toqquşmaların aşkarlanması. SceneKit mexanizmlər və birləşdirilmiş obyektlər yaratmaq üçün fiziki birləşmələri (SCNPhysicsHingeJoint, SCNPhysicsBallJoint, SCNPhysicsSliderJoint) dəstəkləyir.

SceneKit-də 3D səhnələrin hazırlanması

SceneKit-də tərtibat adətən Model I/O və ya .scn faylı vasitəsilə 3D modelinin yüklənməsi ilə başlayır. Xcode-dakı səhnə redaktoru (Scene Editor) kod yazmadan obyektləri vizual yerləşdirməyə, materialları və işıqlandırmanı konfiqurasiya etməyə imkan verir. .scn faylları JSON formatında saxlanılır və git vasitəsilə versiya nəzarətini dəstəkləyir.

3D modellərin idxalı

Model I/O (ModelIO.framework) — 3D modellərin idxalı, ixracı və emalı üçün güclü alət. SceneKit MDLAsset obyektlərindən birbaşa istifadə edərək onları SCNScene-ə çevirə bilər. Dəstəklənən formatlar: USD, USDZ, OBJ, STL, PLY, Collada (DAE) və Alembic (ABC). Animasiyalı modellər (skelet animasiyası, morfing) də idxal olunur.

swift
// 3D modelinin Model I/O vasitəsilə yüklənməsi
import ModelIO
 
let url = Bundle.main.url(forResource: "robot",
    withExtension: "usdz")!
let asset = MDLAsset(url: url)
let scene = SCNScene(mdlAsset: asset)
 
// Konfiqurasiya üçön düyünlərin adla axtarılması
if let robot = scene.rootNode.childNode(
    withName: "RobotArmature", recursively: true
) {
    robot.position = SCNVector3(0, 0, -3)
}

İdxaldan sonra model MDLAnimation-dan köçürülmüş CAAnimation vasitəsilə və ya xassələrin hamar dəyişməsi üçün SCNTransaction ilə animasiya edilə bilər. SceneKit animasiya sistemi animasiyalar arasında blending və realist hərəkətlər yaratmaq üçün fizika ilə sinxronizasiyanı dəstəkləyir.

Animasiya və transaksiyalar

SCNTransaction səhnə parametrlərindəki dəyişiklikləri müəyyən müddətlə animasiya blokunda qruplaşdırmağa imkan verir. begin() və commit() metodları dəyişiklikləri əhatə edir, duration isə animasiya müddətini təyin edir. İç-içə transaksiyalar müxtəlif müddətlə paralel animasiyalar üçün dəstəklənir. Completion bloku animasiya bitdikdən sonra icra olunur.

Skelet animasiyası üçün SceneKit SCNAnimation və blend-şeyplər (morph targets) üçün SCNMorpher dəstəkləyir. Hər bir animasiya təkrarlana, zamana görə miqyaslana və additive blending vasitəsilə digər animasiyalarla qarışdırıla bilər. Apple-a görə (2025), SceneKit bir skeletdə eyni anda 4-ə qədər qarışdırılan animasiyanı dəstəkləyir.

SCNParticleSystem hissəcik sistemləri

SCNParticleSystem — tüstü, od, yağış və qığılcım kimi effektlər yaratmaq üçön daxili hissəcik sistemi. Hissəciklər nöqtədən, sferadan, kubdan və ya həndəsə səthindən emit edilə bilər. Parametrlər: birthRate, particleLifeSpan, speed, acceleration və colorOverLife. Hissəcik sistemləri maksimum performans üçön GPU-da işləyir.

Apple-a görə (2025), SCNParticleSystem A16+ cihazlarında 60 FPS tezliyi ilə 100 minə qədər hissəcik dəstəkləyir. Hissəciklər səhnənin fiziki cisimləri ilə toqquşmalara reaksiya verə bilər. Mürəkkəb effektlər üçön müxtəlif parametrləri olan bir neçə hissəcik sistemi birləşdirilə bilər və hərəkətli düyünlərə bağlana bilər.

SceneKit və ARKit: artırılmış reallıq

SceneKit ARKit tətbiqləri üçön üstünlük verilən yüksək səviyyəli çərçivədir. ARSCNView SCNView-i genişləndirir və virtual 3D dünyasını real mühitlə avtomatik sinxronlaşdırır. Şəkil təhlili, müstəvilərin aşkarlanması və üz izləməsi ARKit tərəfindən, renderinq isə SceneKit tərəfindən həyata keçirilir.

ARSCNView və ARAnchor

ARSCNView SCNView-in bütün funksiyalarını dəstəkləyir, lakin səhnə kamerasını cihazın real kamerası ilə əvəz edir. ARKit kameradan videonu təhlil edir və ARAnchor yaradır, SceneKit isə onları SCNNode-ə çevirir. ARKit sessiyası session xassəsi vasitəsilə idarə olunur və konfiqurasiya ilə (ARWorldTrackingConfiguration, ARFaceTrackingConfiguration) qurulur.

swift
import ARKit
 
class ARViewController: UIViewController,
    ARSessionDelegate {
    let sceneView = ARSCNView()
     
    override func viewDidLoad() {
        super.viewDidLoad()
        sceneView.session.run(
            ARWorldTrackingConfiguration()
        )
        sceneView.autoenablesDefaultLighting = true
        sceneView.delegate = self
    }
}

autoenablesDefaultLighting xassəsi real mühitə uyğun daxili işıqlandırma əlavə edir. ARKit 6 (iOS 18) 3D obyektləri coğrafi koordinatlara bağlamaq üçön Location Anchors və mebel dəqiqliyi ilə daxili məkanların xəritələnməsi üçön Room Tracking dəstəkləyir.

Müstəvilərin aşkarlanması və obyektlərin yerləşdirilməsi

ARKit didAdd/didUpdate/didRemove anchor delegatı vasitəsilə üçföqi və şaquli müstəviləri (döşəmələr, masalar, divarlar) aşkar edir. ARPlaneAnchor-a bağlı SceneKit düyünü müstəvinin mövqeyini real vaxtda avtomatik izləyir. Obyektlərin yerləşdirilməsi üçön ARSCNView-də hitTest metodu və ya raycastQuery istifadə olunur.

Apple-a görə (2025), A17 Pro-da ARKit izləməsinin maksimum məsafəsi 10 lüks işıqlandırmada 50 metr təşkil edir. SceneKit + ARKit 20 ms-dən aşağı motion-to-photon gecikməsi təmin edir ki, bu da AR oyunları və real avadanlıq üzərində 3D təlimatların yerləşdirildiyi sənaye tətbiqləri üçön kritik əhəmiyyət kəsb edir.

Tez-tez verilən suallar

SceneKit nədir və nə üçön istifadə olunur?

SceneKit — Apple-ın 3D qrafika çərçivəsi olub, aşağı səviyyəli proqramlaşdırma olmadan interaktiv üölçülü səhnələr yaratmağa imkan verir. iOS, macOS və tvOS-da oyunlar, AR tətbiqləri, məlumat vizuallaşdırma və 3D redaktorlar üçön istifadə olunur.

SceneKit və Metal arasındakı fərq nədir?

SceneKit — hazır renderer və fizika ilə yüksək səviyyəli API, tipik 3D tapşırıqları üçön uyğundur. Metal — GPU üzərində tam nəzarət üçön aşağı səviyyəli API. SceneKit daxildə Metal-dan istifadə edir, Metal isə fərdi renderinq effektləri üçön uyğundur.

SceneKit hansı 3D model formatlarını dəstəkləyir?

SceneKit Model I/O vasitəsilə USD, USDZ, OBJ, STL, Collada (DAE), Alembic (ABC), PLY və GLTF formatlarını dəstəkləyir. Yerli format — JSON əsaslı .scn (SceneKit Scene Format). SCNGeometry vasitəsilə proqramla həndəsə yaratmaq mümkündür.

SceneKit performansını necə optimallaşdırmaq olar?

Uzaq obyektlər üçön LOD (Level of Detail) istifadə edin, eyni materiallı həndəsəni birləşdirin, kölgələrin və işıq mənbələrinin sayını 3-4 ilə məhdudlaşdırın. Real vaxtda FPS və draw calls izləmək üçön Statistics-i aktivləşdirin.

SceneKit AR tətbiqləri üçön istifadə edilə bilərmi?

Bəli, ARKit üçön SCNView-in genişləndirilməsi olan ARSCNView vasitəsilə. SceneKit 3D səhnəni real dünya ilə avtomatik sinxronlaşdırır, müstəvilərin, üzlərin və şəkillərin aşkarlanmasını dəstəkləyir. Bu, AR-də 3D obyektləri əlavə etməyin ən asan yoludur.

Nəticə

  • SceneKit — Metal vasitəsilə GPU renderinqi ilə yüksək səviyyəli 3D qrafika üzrə Apple çərçivəsi
  • SCNSceneSCNNode transformasiya vərasəliyi ilə səhnə qrafikini formalaşdırır
  • SCNMaterial roughness, metalness və normal xəritələri ilə PBR renderinqini dəstəkləyir
  • SCNPhysicsBody toqquşmalar və birləşmələrlə fizika simulyasiyasını təmin edir
  • Model I/O USD, OBJ, Collada və digər formatlarda modelləri idxal edir
  • ARSCNView 3D səhnələri ARKit vasitəsilə artırılmış reallıqla inteqrasiya edir
  • SCNParticleSystem real vaxtda milyonlarla hissəciklə GPU effektləri yaradır

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun