SceneKit iOS, macOS और tvOS पर 3D ग्राफिक्स के साथ काम करने के लिए Apple का फ्रेमवर्क है, जो OpenGL या Metal के ज्ञान के बिना त्रि-आयामी दृश्य बनाने के लिए एक उच्च-स्तरीय API प्रदान करता है। यह भौतिकी, एनिमेशन, प्रकाश व्यवस्था और ARKit के साथ एकीकरण का समर्थन करता है। Apple WWDC (2025) के अनुसार, SceneKit का उपयोग 50 हज़ार से अधिक एप्लिकेशन और गेम में किया जाता है।
मुख्य बिंदु
SceneKit 3D ग्राफिक्स के लिए एक फ्रेमवर्क है जो Apple SDK का हिस्सा है और इसे iOS 8 (2014) में पेश किया गया था। SceneKit इंटरैक्टिव 3D दृश्य बनाने के लिए Metal और OpenGL के ऊपर काम करने वाला पूरी तरह से सीन-आधारित API प्रदान करता है। फ्रेमवर्क Model I/O के माध्यम से Collada (DAE), Alembic (ABC), USD और GLTF फॉर्मेट में मॉडल आयात का समर्थन करता है।
निम्न-स्तरीय API (Metal, Vulkan) के विपरीत, SceneKit रेंडरिंग, प्रकाश व्यवस्था और भौतिकी के प्रबंधन का ध्यान रखता है। डेवलपर घोषणात्मक रूप से दृश्य का वर्णन करता है: नोड्स जोड़ता है, मटेरियल और एनिमेशन सेट करता है। SceneKit स्वचालित रूप से ज्योमेट्री को ऑप्टिमाइज़ करता है, ड्रॉ कॉल्स को मर्ज करता है और आवश्यकता होने पर LOD का प्रबंधन करता है।
SceneKit वास्तविक दुनिया में 3D ऑब्जेक्ट्स प्रदर्शित करने के लिए ARKit के साथ-साथ मशीन विज़न और सीन विश्लेषण के लिए Core ML के साथ काम कर सकता है। Apple (2025) के अनुसार, SceneKit का नवीनतम संस्करण Apple Silicon चिप्स पर Metal 3 और GPU Family 9 के समर्थन के साथ केवल Metal API का उपयोग करता है।
SceneKit macOS पर 2012 में OS X Mountain Lion के भाग के रूप में दिखाई दिया और शुरू में रेंडरिंग के लिए OpenGL का उपयोग करता था। iOS 8 के रिलीज़ के साथ, फ्रेमवर्क मोबाइल उपकरणों पर उपलब्ध हो गया। SceneKit 2.0 (iOS 10) ने PBR मटेरियल, HDR प्रकाश व्यवस्था और मॉडल आयात के लिए Model I/O के साथ एकीकरण का समर्थन जोड़ा।
iOS 12 में, SceneKit पूरी तरह से Metal में स्थानांतरित हो गया। iOS 15 ने USDZ फॉर्मेट और AR Quick Look का समर्थन पेश किया। iOS 18 (2024) के साथ, SceneKit को A17 Pro और M4 चिप वाले उपकरणों पर हार्डवेयर-त्वरित रे ट्रेसिंग प्राप्त हुई, जिसने मोबाइल उपकरणों पर रीयल टाइम में यथार्थवादी छाया और प्रतिबिंब सक्षम किए।
SceneKit आर्किटेक्चर सीन ग्राफ पर आधारित है, जहाँ SCNScene मूल तत्व है जिसमें SCNNode का पदानुक्रम होता है। प्रत्येक नोड के चाइल्ड नोड्स होते हैं और इसमें ज्योमेट्री, कैमरा, प्रकाश या भौतिकी बॉडी हो सकती है। नोड की स्थिति बाएँ हाथ के समन्वय प्रणाली में SCNVector3 (x, y, z) के माध्यम से निर्धारित की जाती है।
SCNScene में 3D दुनिया की पूरी स्थिति होती है: रूट नोड rootNode, बैकग्राउंड सेटिंग्स, प्रकाश स्रोत और भौतिकी दुनिया (SCNPhysicsWorld)। दृश्य को .scn फ़ाइल (SceneKit सीन फॉर्मेट) से लोड किया जा सकता है या प्रोग्रामेटिक रूप से बनाया जा सकता है। .scn फॉर्मेट ओपन है और JSON पर आधारित है।
import SceneKit
let scene = SCNScene()
scene.background.contents = UIColor.darkGray
// कैमरा बनाना
let cameraNode = SCNNode()
cameraNode.camera = SCNCamera()
cameraNode.position = SCNVector3(0, 5, 10)
scene.rootNode.addChildNode(cameraNode)
// भौतिकी के साथ घन बनाना
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 क्लास परिप्रेक्ष्य या ऑर्थोग्राफिक प्रोजेक्शन कॉन्फ़िगर करता है। पैरामीटर: fieldOfView (देखने का कोण, डिफ़ॉल्ट 45°), zNear/zFar (निकट/दूर क्लिपिंग प्लेन)। SceneKit इन पैरामीटर्स और स्क्रीन आस्पेक्ट रेशियो के आधार पर स्वचालित रूप से प्रोजेक्शन मैट्रिक्स का प्रबंधन करता है।
SCNNode ज्योमेट्री, ट्रांसफॉर्मेशन और भौतिकी बॉडी को जोड़ता है। नोड्स खाली हो सकते हैं (अन्य नोड्स के लिए कंटेनर) या ज्योमेट्री प्रॉपर्टी के माध्यम से ज्योमेट्री रख सकते हैं। प्रत्येक नोड का प्रोग्रामेटिक खोज के लिए एक नाम (name) होता है और इसे CAAnimation या पूर्वनिर्धारित SCNTransaction के माध्यम से एनिमेट किया जा सकता है।
नोड का ट्रांसफॉर्मेशन position (SCNVector3), rotation (SCNVector4) और scale (SCNVector3) प्रॉपर्टीज के माध्यम से निर्धारित किया जाता है। जटिल ट्रांसफॉर्मेशन के लिए transform प्रॉपर्टी (SCNMatrix4) का उपयोग किया जाता है। इसके अलावा pivot — ट्रांसफॉर्मेशन सेंटर ऑफसेट, और worldPosition — पदानुक्रम से स्वतंत्र विश्व स्थान में पूर्ण स्थिति उपलब्ध है।
SCNView SCNScene प्रदर्शित करने के लिए एक UIView है। allowsCameraControl प्रॉपर्टी इशारों (पैन, रोटेट, ज़ूम) द्वारा कैमरा नियंत्रण सक्षम करती है। डिबगिंग के लिए showsStatistics (FPS, ड्रॉ कॉल्स, पॉलीगॉन) और debugOptions (वायरफ्रेम, बाउंडिंग बॉक्स) उपलब्ध हैं।
SwiftUI में, SceneKit SceneView के माध्यम से एम्बेड किया जाता है, जो SCNView को रैप करता है और सीन पैरामीटर्स के लिए बाइंडिंग का समर्थन करता है। Apple (2025) के अनुसार, SceneView SwiftUI और UIKit के बीच ब्रिज के लिए अतिरिक्त ओवरहेड के बिना, SCNView के समान Metal रेंडरर का उपयोग करता है।
SCNMaterial परिभाषित करता है कि ज्योमेट्री की सतह प्रकाश के साथ कैसे इंटरैक्ट करती है। SceneKit roughness, metalness, albedo और normal पैरामीटर्स का उपयोग करने वाले SCNMaterial.LightingModel.physicallyBased के माध्यम से PBR (फिजिकली बेस्ड रेंडरिंग) का समर्थन करता है। PBR मटेरियल मैनुअल स्पेक्युलर समायोजन के बिना किसी भी प्रकाश व्यवस्था में यथार्थवादी दिखते हैं।
SCNMaterial में कई स्लॉट होते हैं: diffuse (रंग/टेक्सचर), specular (स्पेक्युलर चमक), normal (नॉर्मल मैप), emission (चमक), roughness (खुरदरापन) और metalness (धात्विकता)। प्रत्येक स्लॉट में एनिमेटेड टेक्सचर के लिए UIColor, UIImage, CALayer या SKScene हो सकता है।
// 3D ऑब्जेक्ट के लिए PBR मटेरियल
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.3 पैरामीटर metalness 0.8 के साथ मैट फ़िनिश के साथ पॉलिश धातु जैसा मटेरियल बनाता है। डाइइलेक्ट्रिक्स (लकड़ी, प्लास्टिक) के लिए, metalness को 0 पर सेट किया जाता है, और धातुओं के लिए 1.0 के करीब। PBR मटेरियल स्वचालित रूप से सीन की HDR प्रकाश व्यवस्था के अनुकूल हो जाते हैं।
SCNLight कई प्रकार के प्रकाश स्रोतों का समर्थन करता है: omni (बिंदु), directional (दिशात्मक), spot (स्पॉटलाइट), ambient (परिवेश) और area (क्षेत्र)। प्रत्येक स्रोत में तीव्रता (intensity), रंग (color) होता है और यह छाया डाल सकता है (castsShadow)। SceneKit शैडो मैप्स के माध्यम से स्वचालित रूप से छाया का प्रबंधन करता है।
SceneKit टोन मैपिंग के साथ HDR प्रकाश व्यवस्था का समर्थन करता है। SCNView पर wantsHDR प्रॉपर्टी विस्तारित डायनामिक रेंज को सक्षम करती है। कैमरा विशेषताएँ: whitePoint, adaptativeLuminance और exposure छवि को सीन की चमक के अनुकूल बनाती हैं, जिससे फोटोग्राफिक एक्सपोज़र प्रभाव बनता है।
SCNPhysicsBody कठोर निकायों की भौतिकी का अनुकरण करता है: गुरुत्वाकर्षण, टकराव और घर्षण। बॉडी प्रकार: .static (स्थिर), .dynamic (बलों के अधीन) और .kinematic (प्रोग्रामेटिक रूप से नियंत्रित)। बॉडी आकार SCNPhysicsShape के माध्यम से परिभाषित किया जाता है, जो नोड ज्योमेट्री या सरलीकृत रूप (box, sphere, concave polyhedron) पर आधारित हो सकता है।
SCNPhysicsWorld सीन की वैश्विक भौतिकी का प्रबंधन करता है: गुरुत्वाकर्षण, अनुकरण गति और SCNPhysicsContactDelegate के माध्यम से टकराव का पता लगाना। SceneKit तंत्र और जुड़े ऑब्जेक्ट बनाने के लिए भौतिकी जोड़ों (SCNPhysicsHingeJoint, SCNPhysicsBallJoint, SCNPhysicsSliderJoint) का समर्थन करता है।
SceneKit पर विकास आमतौर पर Model I/O या .scn फ़ाइल के माध्यम से 3D मॉडल लोड करने से शुरू होता है। Xcode में सीन एडिटर (Scene Editor) बिना कोड के ऑब्जेक्ट्स को दृश्य रूप से रखने, मटेरियल और प्रकाश व्यवस्था कॉन्फ़िगर करने की अनुमति देता है। .scn फ़ाइलें JSON फॉर्मेट में सहेजी जाती हैं और git के माध्यम से संस्करण नियंत्रण का समर्थन करती हैं।
Model I/O (ModelIO.framework) 3D मॉडल आयात, निर्यात और प्रसंस्करण के लिए एक शक्तिशाली उपकरण है। SceneKit सीधे MDLAsset ऑब्जेक्ट का उपयोग कर सकता है, उन्हें SCNScene में परिवर्तित कर सकता है। समर्थित फॉर्मेट: USD, USDZ, OBJ, STL, PLY, Collada (DAE) और Alembic (ABC)। एनिमेटेड मॉडल (कंकाल एनिमेशन, मॉर्फिंग) भी आयात किए जाते हैं।
// Model I/O के माध्यम से 3D मॉडल लोड करना
import ModelIO
let url = Bundle.main.url(forResource: "robot",
withExtension: "usdz")!
let asset = MDLAsset(url: url)
let scene = SCNScene(mdlAsset: asset)
// कॉन्फ़िगरेशन के लिए नाम से नोड्स खोजना
if let robot = scene.rootNode.childNode(
withName: "RobotArmature", recursively: true
) {
robot.position = SCNVector3(0, 0, -3)
}
आयात के बाद, मॉडल को MDLAnimation से कॉपी किए गए CAAnimation के माध्यम से, या सुचारू प्रॉपर्टी परिवर्तनों के लिए SCNTransaction के माध्यम से एनिमेट किया जा सकता है। SceneKit की एनिमेशन प्रणाली एनिमेशन के बीच ब्लेंडिंग और यथार्थवादी गतिविधियाँ बनाने के लिए भौतिकी के साथ सिंक्रोनाइज़ेशन का समर्थन करती है।
SCNTransaction एक निर्दिष्ट अवधि के साथ एनिमेशन ब्लॉक में सीन पैरामीटर परिवर्तनों को समूहित करने की अनुमति देता है। begin() और commit() विधियाँ परिवर्तनों को घेरती हैं, और duration एनिमेशन समय निर्धारित करती है। विभिन्न अवधियों के साथ समानांतर एनिमेशन के लिए नेस्टेड ट्रांज़ैक्शन समर्थित हैं। एनिमेशन समाप्त होने के बाद एक completion ब्लॉक निष्पादित होता है।
कंकाल एनिमेशन के लिए, SceneKit ब्लेंड शेप्स (मॉर्फ टार्गेट) के लिए SCNAnimation और SCNMorpher का समर्थन करता है। प्रत्येक एनिमेशन को लूप किया जा सकता है, समय-स्केल किया जा सकता है और एडिटिव ब्लेंडिंग के माध्यम से अन्य एनिमेशन के साथ ब्लेंड किया जा सकता है। Apple (2025) के अनुसार, SceneKit प्रति कंकाल एक साथ 4 ब्लेंडेड एनिमेशन का समर्थन करता है।
SCNParticleSystem प्रभाव बनाने के लिए एक अंतर्निर्मित पार्टिकल सिस्टम है: धुआँ, आग, बारिश और चिंगारी। कण एक बिंदु, गोले, घन या ज्योमेट्री सतह से उत्सर्जित किए जा सकते हैं। पैरामीटर: birthRate, particleLifeSpan, speed, acceleration और colorOverLife। पार्टिकल सिस्टम अधिकतम प्रदर्शन के लिए GPU पर चलते हैं।
Apple (2025) के अनुसार, SCNParticleSystem A16+ वाले उपकरणों पर 60 FPS पर 100 हज़ार कणों तक का समर्थन करता है। कण सीन की भौतिकी बॉडीज के साथ टकराव पर प्रतिक्रिया कर सकते हैं। जटिल प्रभावों के लिए, विभिन्न पैरामीटर्स वाले कई पार्टिकल सिस्टम को जोड़ा जा सकता है और गतिशील नोड्स से जोड़ा जा सकता है।
SceneKit ARKit एप्लिकेशन के लिए पसंदीदा उच्च-स्तरीय फ्रेमवर्क है। ARSCNView SCNView का विस्तार करता है और स्वचालित रूप से वर्चुअल 3D दुनिया को वास्तविक वातावरण के साथ सिंक्रोनाइज़ करता है। छवि विश्लेषण, प्लेन डिटेक्शन और फेस ट्रैकिंग ARKit द्वारा की जाती है, जबकि रेंडरिंग SceneKit द्वारा की जाती है।
ARSCNView सभी SCNView सुविधाओं का समर्थन करता है लेकिन सीन कैमरे को डिवाइस के वास्तविक कैमरे से बदल देता है। ARKit कैमरे से वीडियो का विश्लेषण करता है और ARAnchor बनाता है, जिसे SceneKit SCNNode में परिवर्तित करता है। ARKit सत्र को session प्रॉपर्टी के माध्यम से प्रबंधित किया जाता है, जिसे कॉन्फ़िगरेशन (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
}
}
autoenablesDefaultLighting प्रॉपर्टी वास्तविक वातावरण से मेल खाने वाली अंतर्निर्मित प्रकाश व्यवस्था जोड़ती है। ARKit 6 (iOS 18) 3D ऑब्जेक्ट्स को भौगोलिक निर्देशांक से बांधने के लिए Location Anchors और फ़र्नीचर-स्तर के विवरण के साथ इनडोर स्पेस मैप करने के लिए Room Tracking का समर्थन करता है।
ARKit didAdd/didUpdate/didRemove एंकर डेलिगेट के माध्यम से क्षैतिज और ऊर्ध्वाधर प्लेन (फर्श, टेबल, दीवारें) का पता लगाता है। ARPlaneAnchor से जुड़ा SceneKit नोड स्वचालित रूप से रीयल टाइम में प्लेन की स्थिति को ट्रैक करता है। ऑब्जेक्ट प्लेसमेंट के लिए, ARSCNView पर hitTest विधि या raycastQuery का उपयोग किया जाता है।
Apple (2025) के अनुसार, A17 Pro पर ARKit की अधिकतम ट्रैकिंग दूरी 10 लक्स से रोशनी पर 50 मीटर है। SceneKit + ARKit 20 ms से कम की एंड-टू-एंड लेटेंसी (motion-to-photon) प्रदान करते हैं, जो AR गेम और वास्तविक उपकरणों पर 3D निर्देश ओवरले वाले औद्योगिक एप्लिकेशन के लिए महत्वपूर्ण है।
अक्सर पूछे जाने वाले प्रश्न
SceneKit Apple का 3D ग्राफिक्स के लिए फ्रेमवर्क है जो निम्न-स्तरीय प्रोग्रामिंग के बिना इंटरैक्टिव त्रि-आयामी दृश्य बनाने की अनुमति देता है। इसका उपयोग iOS, macOS और tvOS पर गेम, AR एप्लिकेशन, डेटा विज़ुअलाइज़ेशन और 3D एडिटर के लिए किया जाता है।
SceneKit अंतर्निर्मित रेंडरर और भौतिकी के साथ एक उच्च-स्तरीय API है, जो सामान्य 3D कार्यों के लिए उपयुक्त है। Metal पूर्ण GPU नियंत्रण के लिए निम्न-स्तरीय API है। SceneKit आंतरिक रूप से Metal का उपयोग करता है, जबकि Metal कस्टम रेंडरिंग प्रभावों के लिए उपयुक्त है।
SceneKit Model I/O के माध्यम से USD, USDZ, OBJ, STL, Collada (DAE), Alembic (ABC), PLY और GLTF का समर्थन करता है। मूल फॉर्मेट JSON पर आधारित .scn (SceneKit सीन फॉर्मेट) है। SCNGeometry के माध्यम से प्रोग्रामेटिक रूप से ज्योमेट्री बनाई जा सकती है।
दूर की वस्तुओं के लिए LOD (लेवल ऑफ डिटेल) का उपयोग करें, समान मटेरियल वाली ज्योमेट्री मर्ज करें, छाया और प्रकाश स्रोतों को 3–4 तक सीमित करें। रीयल टाइम में FPS और ड्रॉ कॉल्स की निगरानी के लिए Statistics सक्षम करें।
हाँ, ARSCNView के माध्यम से — ARKit के लिए SCNView का विस्तार। SceneKit स्वचालित रूप से 3D दृश्य को वास्तविक दुनिया के साथ सिंक्रोनाइज़ करता है, प्लेन, फेस और इमेज डिटेक्शन का समर्थन करता है। AR में 3D ऑब्जेक्ट जोड़ने का यह सबसे आसान तरीका है।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें