SceneKit — framework ng Apple para sa pagtatrabaho sa 3D graphics sa iOS, macOS at tvOS, na nagbibigay ng mataas na antas ng API para sa paglikha ng tatlong-dimensional na mga scene nang walang kaalaman sa OpenGL o Metal. Sinusuportahan nito ang physics, animation, pag-iilaw at integrasyon sa ARKit. Ayon sa datos ng Apple WWDC (2025), ang SceneKit ay ginagamit sa mahigit 50 libong mga application at laro.
Mga pangunahing punto
SceneKit — ay isang framework para sa 3D graphics na bahagi ng Apple SDK at ipinakilala sa iOS 8 (2014). Ang SceneKit ay nagbibigay ng ganap na scriptable na API na gumagana sa Metal at OpenGL para sa paglikha ng mga interactive na 3D scene. Sinusuportahan ng framework ang pag-import ng mga modelo sa mga format na Collada (DAE), Alembic (ABC), USD at GLTF sa pamamagitan ng Model I/O.
Hindi tulad ng mga low-level na API (Metal, Vulkan), ang SceneKit ang pumapanagot sa pamamahala ng rendering, pag-iilaw at physics. Inilalarawan ng developer ang scene nang deklaratibo: nagdaragdag ng mga node, nagtatakda ng mga material at animation. SceneKit ay awtomatikong nag-o-optimize ng geometry, pinagsasama ang draw calls at pinamamahalaan ang LOD kapag kinakailangan.
Ang SceneKit ay maaaring gumana kasama ng ARKit para sa pagpapakita ng mga 3D na bagay sa totoong mundo, pati na rin sa Core ML para sa machine vision at pagsusuri ng scene. Ayon sa Apple (2025), ang pinakabagong bersyon ng SceneKit ay gumagamit lamang ng Metal API na may suporta para sa Metal 3 at GPU Family 9 sa mga Apple Silicon chip.
Lumitaw ang SceneKit sa macOS noong 2012 bilang bahagi ng OS X Mountain Lion at sa simula ay gumamit ng OpenGL para sa rendering. Sa paglabas ng iOS 8, naging available ang framework sa mga mobile device. Ang bersyong SceneKit 2.0 (iOS 10) ay nagdagdag ng suporta para sa mga PBR material, HDR lighting at integrasyon sa Model I/O para sa pag-import ng mga modelo.
Sa iOS 12, ganap na lumipat ang SceneKit sa Metal. Ipinakilala ng iOS 15 ang suporta para sa USDZ format at AR Quick Look. Sa iOS 18 (2024), nakatanggap ang SceneKit ng hardware acceleration ng ray tracing sa mga device na may A17 Pro at M4 chip, na nagbigay-daan sa makatotohanang mga anino at reflection sa real-time sa mga mobile device.
Ang arkitektura ng SceneKit ay batay sa graph ng scene, kung saan ang SCNScene ay ang root element na naglalaman ng hierarchy ng SCNNode. Ang bawat node ay may mga child node at maaaring maglaman ng geometry, camera, ilaw o physical body. Ang posisyon ng node ay tinutukoy sa pamamagitan ng SCNVector3 (x, y, z) sa left-handed coordinate system.
SCNScene ay naglalaman ng buong estado ng 3D world: root node rootNode, mga setting ng background (background), mga pinagmumulan ng ilaw at physical world (SCNPhysicsWorld). Ang scene ay maaaring i-load mula sa isang .scn file (SceneKit Scene Format) o gawin nang programmatically. Ang .scn format ay bukas at batay sa JSON.
import SceneKit
let scene = SCNScene()
scene.background.contents = UIColor.darkGray
// Paglikha ng camera
let cameraNode = SCNNode()
cameraNode.camera = SCNCamera()
cameraNode.position = SCNVector3(0, 5, 10)
scene.rootNode.addChildNode(cameraNode)
// Paglikha ng cube na may physics
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)
Ang klase na SCNCamera ay nagko-configure ng perspective o orthographic projection. Mga parameter: fieldOfView (angle of view, default 45°), zNear/zFar (malapit/malayong clipping plane). Awtomatikong pinamamahalaan ng SceneKit ang projection matrix batay sa mga parameter na ito at aspect ratio ng screen.
SCNNode ay nag-uugnay ng geometry, transformation at physical body. Ang mga node ay maaaring walang laman (mga container para sa iba pang mga node) o maglaman ng geometry sa pamamagitan ng property na geometry. Ang bawat node ay may pangalan (name) para sa programmatic na paghahanap at maaaring i-animate sa pamamagitan ng CAAnimation o paunang natukoy na SCNTransaction.
Ang transformation ng node ay tinutukoy sa pamamagitan ng mga property na position (SCNVector3), rotation (SCNVector4) at scale (SCNVector3). Para sa mga kumplikadong transformation, ginagamit ang property na transform (SCNMatrix4). Gayundin, available ang pivot — paglipat ng center ng transformation at worldPosition — absolute na posisyon sa world space na hiwalay sa hierarchy.
SCNView — UIView para sa pagpapakita ng SCNScene. Ang property na allowsCameraControl ay nagpapagana ng kontrol ng user sa camera sa pamamagitan ng mga kilos (paggalaw, pag-ikot, pag-zoom). Para sa debugging, available ang showsStatistics (FPS, draw calls, polygons) at debugOptions (wireframe, bounding boxes).
Sa SwiftUI, ang SceneKit ay naka-embed sa pamamagitan ng SceneView, na bumabalot sa SCNView at sumusuporta sa mga binding sa mga parameter ng scene. Ayon sa Apple (2025), ang SceneView ay gumagamit ng parehong Metal renderer gaya ng SCNView, nang walang karagdagang overhead para sa tulay sa pagitan ng SwiftUI at UIKit.
SCNMaterial ay tumutukoy kung paano nakikipag-ugnayan ang ibabaw ng geometry sa liwanag. Sinusuportahan ng SceneKit ang PBR (Physically Based Rendering) sa pamamagitan ng SCNMaterial.LightingModel.physicallyBased, na gumagamit ng mga parameter na roughness, metalness, albedo at normal. Ang mga PBR material ay mukhang makatotohanan sa anumang pag-iilaw nang walang manu-manong pagsasaayos ng ningning.
SCNMaterial ay may maraming slot: diffuse (kulay/texture), specular (ningning na parang salamin), normal (normal map), emission (paglabas ng liwanag), roughness (kagaspangan) at metalness (pagka-metal). Ang bawat slot ay maaaring maglaman ng UIColor, UIImage, CALayer o SKScene para sa mga animated na texture.
// PBR material para sa 3D object
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)
Ang parameter na roughness 0.3 na may metalness 0.8 ay lumilikha ng material na kahawig ng pinakintab na metal na may matte finish. Para sa mga dielectric (kahoy, plastik) ang metalness ay nakatakda sa 0, at para sa mga metal — malapit sa 1.0. Ang mga PBR material ay awtomatikong umaangkop sa HDR lighting ng scene.
SCNLight ay sumusuporta sa maraming uri ng mga pinagmumulan ng ilaw: omni (punto), directional (nakadirekta), spot (floodlight), ambient (paligid) at area (ibabaw). Ang bawat pinagmulan ay may intensity (intensity), kulay (color) at maaaring magpalabas ng anino (castsShadow). Awtomatikong pinamamahalaan ng SceneKit ang mga anino sa pamamagitan ng shadow maps.
Sinusuportahan ng SceneKit ang HDR lighting na may tone compression (tone mapping). Ang property na wantsHDR sa SCNView ay nagpapagana ng extended dynamic range. Mga attribute ng camera: whitePoint, adaptativeLuminance at exposure ay nag-aangkop ng imahe sa liwanag ng scene, na lumilikha ng photographic exposure effect.
SCNPhysicsBody ay ginagaya ang physics ng matitigas na katawan: gravity, mga banggaan at friction. Mga uri ng katawan: .static (hindi gumagalaw), .dynamic (sa ilalim ng impluwensya ng mga puwersa) at .kinematic (kinokontrol nang programmatically). Ang hugis ng katawan ay tinutukoy sa pamamagitan ng SCNPhysicsShape, na maaaring batay sa geometry ng node o sa pinasimpleng hugis (box, sphere, concave polyhedron).
SCNPhysicsWorld ay namamahala sa global physics ng scene: gravity (gravity), bilis ng simulation (speed) at pag-detect ng banggaan sa pamamagitan ng delegate na SCNPhysicsContactDelegate. Sinusuportahan ng SceneKit ang mga physical joint (SCNPhysicsHingeJoint, SCNPhysicsBallJoint, SCNPhysicsSliderJoint) para sa paglikha ng mga mekanismo at konektadong bagay.
Pag-develop sa SceneKit ay karaniwang nagsisimula sa pag-load ng 3D model sa pamamagitan ng Model I/O o .scn file. Ang editor ng scene sa Xcode (Scene Editor) ay nagbibigay-daan sa visual na paglalagay ng mga bagay, pagsasaayos ng mga material at pag-iilaw nang walang code. Ang mga .scn file ay nai-save sa JSON format at sumusuporta sa version control sa pamamagitan ng git.
Model I/O (ModelIO.framework) — isang makapangyarihang tool para sa pag-import, pag-export at pagproseso ng mga 3D model. Ang SceneKit ay maaaring direktang gumamit ng mga MDLAsset object, na ginagawang SCNScene. Mga supported na format: USD, USDZ, OBJ, STL, PLY, Collada (DAE) at Alembic (ABC). Ang mga model na may animation (skeletal animation, morphing) ay na-import din.
// Pag-load ng 3D model sa pamamagitan ng Model I/O
import ModelIO
let url = Bundle.main.url(forResource: "robot",
withExtension: "usdz")!
let asset = MDLAsset(url: url)
let scene = SCNScene(mdlAsset: asset)
// Paghahanap ng mga node ayon sa pangalan para sa configuration
if let robot = scene.rootNode.childNode(
withName: "RobotArmature", recursively: true
) {
robot.position = SCNVector3(0, 0, -3)
}
Pagkatapos ng pag-import, ang model ay maaaring i-animate sa pamamagitan ng CAAnimation, kinopya mula sa MDLAnimation, o sa pamamagitan ng SCNTransaction para sa maayos na pagbabago ng mga property. Ang animation system ng SceneKit ay sumusuporta sa blending sa pagitan ng mga animation at synchronisation sa physics para sa paglikha ng makatotohanang mga galaw.
SCNTransaction ay nagbibigay-daan sa pagpapangkat ng mga pagbabago sa mga parameter ng scene sa isang animation block na may tinukoy na tagal. Ang mga pamamaraang begin() at commit() ay pumapalibot sa mga pagbabago, at ang duration ay nagtatakda ng tagal ng animation. Ang mga nested na transaksyon ay suportado para sa parallel na mga animation na may magkaibang tagal. Ang Completion block ay isinasagawa pagkatapos ng animation.
Para sa skeletal animation, sinusuportahan ng SceneKit ang SCNAnimation at SCNMorpher para sa mga blend-shape (morph targets). Ang bawat animation ay maaaring i-loop, i-scale sa oras at ihalo sa iba pang mga animation sa pamamagitan ng additive blending. Ayon sa Apple (2025), sinusuportahan ng SceneKit ang hanggang 4 na sabay-sabay na pinaghalong animation sa isang skeleton.
SCNParticleSystem — built-in na particle system para sa paglikha ng mga epekto: usok, apoy, ulan at spark. Ang mga particle ay maaaring ilabas mula sa isang punto, sphere, cube o ibabaw ng geometry. Mga parameter: birthRate, particleLifeSpan, speed, acceleration at colorOverLife. Ang mga particle system ay gumagana sa GPU para sa maximum na pagganap.
Ayon sa Apple (2025), SCNParticleSystem ay sumusuporta sa hanggang 100 libong particle na may 60 FPS sa mga device na may A16+. Ang mga particle ay maaaring tumugon sa mga banggaan sa mga physical body ng scene. Para sa mga kumplikadong epekto, maraming particle system na may iba't ibang parameter ay maaaring pagsamahin at itali sa mga gumagalaw na node.
SceneKit ay ang ginustong high-level na framework para sa mga ARKit application. Ang ARSCNView ay nagpapalawak ng SCNView at awtomatikong nag-synchronize ng virtual 3D world sa totoong kapaligiran. Ang pagsusuri ng imahe, pag-detect ng mga eroplano at pagsubaybay sa mukha ay ginagawa ng ARKit, at ang rendering ay ginagawa ng SceneKit.
ARSCNView ay sumusuporta sa lahat ng function ng SCNView, ngunit pinapalitan ang camera ng scene ng totoong camera ng device. Sinusuri ng ARKit ang video mula sa camera at lumilikha ng ARAnchor, na ginagawang SCNNode ng SceneKit. Ang ARKit session ay pinamamahalaan sa pamamagitan ng property na session, na naka-configure gamit ang configuration (ARWorldTrackingConfiguration, ARFaceTrackingConfiguration).
import ARKit
class ARViewController: UIViewController,
ARSessionDelegate {
let sceneView = ARSCNView()
override func viewDidLoad() {
super.viewDidLoad()
sceneView.session.run(
ARWorldTrackingConfiguration()
)
sceneView.autoenablesDefaultLighting = true
sceneView.delegate = self
}
}
Ang property na autoenablesDefaultLighting ay nagdaragdag ng built-in na pag-iilaw na tumutugma sa totoong kapaligiran. Ang ARKit 6 (iOS 18) ay sumusuporta sa Location Anchors para sa pag-angkla ng mga 3D na bagay sa mga heograpikong coordinate at Room Tracking para sa pagmamapa ng mga panloob na espasyo na may detalye hanggang sa kasangkapan.
Nakikita ng ARKit ang mga pahalang at patayong eroplano (sahig, mesa, dingding) sa pamamagitan ng delegate na didAdd/didUpdate/didRemove anchor. Ang SceneKit node na nakatali sa ARPlaneAnchor ay awtomatikong sumusubaybay sa posisyon ng eroplano sa real-time. Para sa paglalagay ng mga bagay, ginagamit ang paraang hitTest sa ARSCNView o raycastQuery.
Ayon sa Apple (2025), ang maximum na distansya ng pagsubaybay ng ARKit sa A17 Pro ay 50 metro sa pag-iilaw na 10 lux. Ang SceneKit + ARKit ay nagbibigay ng end-to-end latency (motion-to-photon) na mas mababa sa 20 ms, na kritikal para sa mga AR game at industrial na application na may overlay ng 3D na mga tagubilin sa totoong kagamitan.
Mga madalas itanong
SceneKit — framework ng Apple para sa 3D graphics, na nagbibigay-daan sa paglikha ng mga interactive na tatlong-dimensional na scene nang walang low-level programming. Ginagamit ito para sa mga laro, AR application, visualization ng data at 3D editor sa iOS, macOS at tvOS.
SceneKit — high-level na API na may ready-made na renderer at physics, angkop para sa tipikal na 3D na gawain. Metal — low-level na API para sa buong kontrol sa GPU. Ginagamit ng SceneKit ang Metal sa loob, at ang Metal ay angkop para sa custom na mga rendering effect.
Ang SceneKit sa pamamagitan ng Model I/O ay sumusuporta sa USD, USDZ, OBJ, STL, Collada (DAE), Alembic (ABC), PLY at GLTF. Ang native na format — .scn (SceneKit Scene Format) batay sa JSON. Maaaring gumawa ng geometry nang programmatically sa pamamagitan ng SCNGeometry.
Gumamit ng LOD (Level of Detail) para sa malalayong bagay, pagsamahin ang geometry na may parehong material, limitahan ang bilang ng mga anino at pinagmumulan ng ilaw sa 3–4. I-activate ang Statistics para sa real-time na pagsubaybay ng FPS at draw calls.
Oo, sa pamamagitan ng ARSCNView — extension ng SCNView para sa ARKit. Awtomatikong nag-synchronize ang SceneKit ng 3D scene sa totoong mundo, sumusuporta sa pag-detect ng mga eroplano, mukha at larawan. Ito ang pinakamadaling paraan upang magdagdag ng mga 3D na bagay sa AR.
Buod
Gagawa kami ng mobile application na turnkey
Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.
Basahin din