SceneKit: یہ کیا ہے، 3D مناظر اور سین گراف

مصنف: IT Sectr اشاعت: 2026-05-03 مطالعے کا وقت: 10 منٹ

SceneKit iOS، macOS اور tvOS پر 3D گرافکس کے ساتھ کام کرنے کے لیے Apple کا فریم ورک ہے، جو OpenGL یا Metal کے علم کے بغیر تین جہتی مناظر تخلیق کرنے کے لیے اعلیٰ سطحی API فراہم کرتا ہے۔ یہ فزکس، اینیمیشن، روشنی اور ARKit کے ساتھ انضمام کو سپورٹ کرتا ہے۔ Apple WWDC (2025) کے مطابق، SceneKit 50 ہزار سے زیادہ ایپلی کیشنز اور گیمز میں استعمال ہوتا ہے۔

اہم نکات

  • SceneKit — سین گراف اور GPU رینڈرنگ کے ساتھ 3D گرافکس کا فریم ورک
  • SCNScene — جڑ کا کنٹینر جس میں SCNNode نوڈس کا درخت ہوتا ہے
  • SCNMaterial شیڈرز اور ٹیکسچر کے ذریعے اشیاء کی ظاہری شکل متعین کرتا ہے
  • فزکس انجن SceneKit کشش ثقل، تصادم اور جوڑوں کی نقل کرتا ہے
  • ARKit اور Metal کے ساتھ انضمام اعلیٰ کارکردگی والی AR ایپلی کیشنز تخلیق کرنے کے قابل بناتا ہے

SceneKit کیا ہے؟

SceneKit 3D گرافکس کے لیے ایک فریم ورک ہے جو Apple SDK کا حصہ ہے اور iOS 8 (2014) میں متعارف کرایا گیا تھا۔ SceneKit انٹرایکٹو 3D مناظر تخلیق کرنے کے لیے Metal اور OpenGL کے اوپر کام کرنے والی مکمل منظر پر مبنی API فراہم کرتا ہے۔ فریم ورک Model I/O کے ذریعے Collada (DAE)، Alembic (ABC)، USD اور GLTF فارمیٹس میں ماڈل درآمد کرنے کی حمایت کرتا ہے۔

نیچی سطح کی APIs (Metal، Vulkan) کے برعکس، SceneKit رینڈرنگ، روشنی اور فزکس کے انتظام کا خیال رکھتا ہے۔ ڈیولپر اعلانیہ طور پر منظر کو بیان کرتا ہے: نوڈس شامل کرتا ہے، مواد اور اینیمیشن سیٹ کرتا ہے۔ SceneKit خود بخود جیومیٹری کو بہتر بناتا ہے، ڈرا کالز کو ضم کرتا ہے اور ضرورت پڑنے پر LOD کا انتظام کرتا ہے۔

SceneKit حقیقی دنیا میں 3D اشیاء دکھانے کے لیے ARKit کے ساتھ، اور مشین ویژن اور منظر کے تجزیہ کے لیے Core ML کے ساتھ کام کر سکتا ہے۔ Apple (2025) کے مطابق، SceneKit کا تازہ ترین ورژن Apple Silicon چپس پر Metal 3 اور GPU Family 9 کی حمایت کے ساتھ صرف Metal API استعمال کرتا ہے۔

SceneKit کی تاریخ

SceneKit 2012 میں macOS پر 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 آرکیٹیکچر: سین گراف اور نوڈس

SceneKit آرکیٹیکچر ایک سین گراف پر مبنی ہے، جہاں SCNScene جڑ کا عنصر ہے جس میں SCNNode کا درجہ بندی ہوتا ہے۔ ہر نوڈ کے ذیلی نوڈس ہوتے ہیں اور اس میں جیومیٹری، کیمرہ، روشنی یا فزکس باڈی ہو سکتی ہے۔ نوڈ کی پوزیشن بائیں ہاتھ کے کوآرڈینیٹ سسٹم میں SCNVector3 (x, y, z) کے ذریعے متعین کی جاتی ہے۔

SCNScene — جڑ کا کنٹینر

SCNScene میں 3D دنیا کی پوری حالت ہوتی ہے: rootNode، پس منظر کی ترتیبات، روشنی کے ذرائع اور فزکس کی دنیا (SCNPhysicsWorld)۔ منظر .scn فائل (SceneKit Scene Format) سے لوڈ کیا جا سکتا ہے یا پروگرام کے ذریعے بنایا جا سکتا ہے۔ .scn فارمیٹ کھلا ہے اور JSON پر مبنی ہے۔

swift
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 — منظر کے نوڈس

SCNNode جیومیٹری، تبدیلی اور فزکس باڈی کو جوڑتا ہے۔ نوڈس خالی ہو سکتے ہیں (دوسرے نوڈس کے لیے کنٹینر) یا geometry پراپرٹی کے ذریعے جیومیٹری رکھ سکتے ہیں۔ ہر نوڈ کا پروگرامی تلاش کے لیے ایک نام ہوتا ہے اور اسے CAAnimation یا پہلے سے طے شدہ SCNTransaction کے ذریعے متحرک کیا جا سکتا ہے۔

نوڈ کی تبدیلی position (SCNVector3)، rotation (SCNVector4) اور scale (SCNVector3) پراپرٹیز کے ذریعے متعین کی جاتی ہے۔ پیچیدہ تبدیلیوں کے لیے transform پراپرٹی (SCNMatrix4) استعمال ہوتی ہے۔ اس کے علاوہ pivot — تبدیلی کے مرکز کا آفسیٹ، اور worldPosition — درجہ بندی سے آزاد دنیا کی جگہ میں مطلق پوزیشن دستیاب ہے۔

SCNView — رینڈرنگ

SCNView SCNScene دکھانے کے لیے ایک UIView ہے۔ allowsCameraControl پراپرٹی اشاروں (پین، گھمائیں، زوم) کے ذریعے کیمرہ کنٹرول کو فعال کرتی ہے۔ ڈیبگنگ کے لیے showsStatistics (FPS، ڈرا کالز، پولیگون) اور debugOptions (وائر فریم، باؤنڈنگ باکس) دستیاب ہیں۔

SwiftUI میں، SceneKit SceneView کے ذریعے شامل کیا جاتا ہے، جو SCNView کو لپیٹتا ہے اور منظر کے پیرامیٹرز سے منسلک ہونے کی حمایت کرتا ہے۔ Apple (2025) کے مطابق، SceneView SwiftUI اور UIKit کے درمیان پل کے لیے اضافی اوور ہیڈ کے بغیر SCNView جیسا ہی Metal رینڈرر استعمال کرتا ہے۔

SceneKit میں مواد، روشنی اور فزکس

SCNMaterial متعین کرتا ہے کہ جیومیٹری کی سطح روشنی کے ساتھ کیسے تعامل کرتی ہے۔ SceneKit roughness، metalness، albedo اور normal پیرامیٹرز استعمال کرنے والے SCNMaterial.LightingModel.physicallyBased کے ذریعے PBR (فزیکلی بیسڈ رینڈرنگ) کو سپورٹ کرتا ہے۔ PBR مواد دستی چمک ایڈجسٹمنٹ کے بغیر کسی بھی روشنی میں حقیقت پسندانہ نظر آتا ہے۔

SCNMaterial اور ٹیکسچر

SCNMaterial میں کئی سلاٹ ہیں: diffuse (رنگ/ٹیکسچر)، specular (آئینے کی چمک)، normal (نارمل میپ)، emission (چمک)، roughness (کھردراپن) اور metalness (دھاتی پن)۔ ہر سلاٹ میں متحرک ٹیکسچر کے لیے UIColor، UIImage، CALayer یا SKScene ہو سکتا ہے۔

swift
// 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 روشنی کے مطابق ڈھل جاتا ہے۔

SceneKit میں روشنی

SCNLight کئی قسم کے روشنی کے ذرائع کو سپورٹ کرتا ہے: omni (نقطہ)، directional (سمتی)، spot (اسپاٹ لائٹ)، ambient (ماحول) اور area (رقبہ)۔ ہر منبع کی شدت (intensity)، رنگ (color) ہوتا ہے اور سایہ ڈال سکتا ہے (castsShadow)۔ SceneKit شیڈو میپس کے ذریعے خود بخود سایوں کا انتظام کرتا ہے۔

SceneKit ٹون میپنگ کے ساتھ HDR روشنی کو سپورٹ کرتا ہے۔ SCNView پر wantsHDR پراپرٹی توسیع شدہ متحرک رینج کو فعال کرتی ہے۔ کیمرہ کی خصوصیات: whitePoint، adaptativeLuminance اور exposure تصویر کو منظر کی چمک کے مطابق ڈھال کر فوٹو گرافی کی نمائش کا اثر پیدا کرتی ہیں۔

SCNPhysicsBody فزکس

SCNPhysicsBody سخت جسموں کی فزکس کو نقل کرتا ہے: کشش ثقل، تصادم اور رگڑ۔ باڈی کی اقسام: .static (ساکن)، .dynamic (قوتوں کے تحت) اور .kinematic (پروگرام کے ذریعے کنٹرول)۔ باڈی کی شکل SCNPhysicsShape کے ذریعے متعین کی جاتی ہے، جو نوڈ جیومیٹری یا آسان شکل (box، sphere، concave polyhedron) پر مبنی ہو سکتی ہے۔

SCNPhysicsWorld منظر کی عالمی فزکس کا انتظام کرتا ہے: کشش ثقل، نقل کی رفتار اور SCNPhysicsContactDelegate کے ذریعے تصادم کا پتہ لگانا۔ SceneKit میکانزم اور منسلک اشیاء بنانے کے لیے فزکس جوڑوں (SCNPhysicsHingeJoint، SCNPhysicsBallJoint، SCNPhysicsSliderJoint) کو سپورٹ کرتا ہے۔

SceneKit پر 3D مناظر کی ڈیولپمنٹ

SceneKit پر ڈیولپمنٹ عام طور پر Model I/O یا .scn فائل کے ذریعے 3D ماڈل لوڈ کرنے سے شروع ہوتی ہے۔ Xcode میں منظر ایڈیٹر (Scene Editor) کوڈ کے بغیر بصری طور پر اشیاء رکھنے، مواد اور روشنی ترتیب دینے کی اجازت دیتا ہے۔ .scn فائلیں JSON فارمیٹ میں محفوظ ہوتی ہیں اور git کے ذریعے ورژن کنٹرول کو سپورٹ کرتی ہیں۔

3D ماڈل درآمد کرنا

Model I/O (ModelIO.framework) 3D ماڈل درآمد، برآمد اور پروسیسنگ کے لیے ایک طاقتور ٹول ہے۔ SceneKit براہ راست MDLAsset اشیاء استعمال کر سکتا ہے، انہیں SCNScene میں تبدیل کر سکتا ہے۔ معاون فارمیٹس: USD، USDZ، OBJ، STL، PLY، Collada (DAE) اور Alembic (ABC)۔ متحرک ماڈل (کنکال اینیمیشن، مورفنگ) بھی درآمد کیے جاتے ہیں۔

swift
// 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 اینیمیشن کا وقت متعین کرتا ہے۔ مختلف ادوار کے ساتھ متوازی اینیمیشنز کے لیے نیسٹڈ ٹرانزیکشنز معاون ہیں۔ اینیمیشن ختم ہونے کے بعد ایک کمپلیشن بلاک عمل میں آتا ہے۔

کنکال اینیمیشن کے لیے، SceneKit بلینڈ شیپس (مورف ٹارگٹ) کے لیے SCNAnimation اور SCNMorpher کو سپورٹ کرتا ہے۔ ہر اینیمیشن کو لوپ کیا جا سکتا ہے، وقت میں پیمانہ کیا جا سکتا ہے اور اضافی ملاوٹ کے ذریعے دوسری اینیمیشنز کے ساتھ ملایا جا سکتا ہے۔ Apple (2025) کے مطابق، SceneKit فی کنکال ایک ساتھ 4 ملی ہوئی اینیمیشنز کو سپورٹ کرتا ہے۔

SCNParticleSystem پارٹیکل سسٹم

SCNParticleSystem اثرات پیدا کرنے کے لیے ایک بلٹ ان پارٹیکل سسٹم ہے: دھواں، آگ، بارش اور چنگاریاں۔ ذرات ایک نقطہ، کرہ، مکعب یا جیومیٹری سطح سے خارج ہو سکتے ہیں۔ پیرامیٹرز: birthRate، particleLifeSpan، speed، acceleration اور colorOverLife۔ پارٹیکل سسٹم زیادہ سے زیادہ کارکردگی کے لیے GPU پر چلتے ہیں۔

Apple (2025) کے مطابق، SCNParticleSystem A16+ والے آلات پر 60 FPS پر 100 ہزار ذرات تک سپورٹ کرتا ہے۔ ذرات منظر کی فزکس باڈیز کے ساتھ تصادم پر رد عمل ظاہر کر سکتے ہیں۔ پیچیدہ اثرات کے لیے، مختلف پیرامیٹرز والے متعدد پارٹیکل سسٹم کو ملا کر حرکت پذیر نوڈس سے منسلک کیا جا سکتا ہے۔

SceneKit اور ARKit: بڑھی ہوئی حقیقت

SceneKit ARKit ایپلی کیشنز کے لیے ترجیحی اعلیٰ سطحی فریم ورک ہے۔ ARSCNView SCNView کو بڑھاتا ہے اور خود بخود ورچوئل 3D دنیا کو حقیقی ماحول کے ساتھ ہم آہنگ کرتا ہے۔ تصویری تجزیہ، سطح کا پتہ لگانا اور چہرے کی ٹریکنگ ARKit کرتا ہے، جبکہ رینڈرنگ SceneKit کرتا ہے۔

ARSCNView اور ARAnchor

ARSCNView تمام SCNView خصوصیات کو سپورٹ کرتا ہے لیکن منظر کے کیمرے کو آلہ کے حقیقی کیمرے سے بدل دیتا ہے۔ ARKit کیمرے سے ویڈیو کا تجزیہ کرتا ہے اور ARAnchor بناتا ہے، جسے SceneKit SCNNode میں تبدیل کرتا ہے۔ ARKit سیشن session پراپرٹی کے ذریعے منظم کیا جاتا ہے، جو کنفیگریشن (ARWorldTrackingConfiguration، ARFaceTrackingConfiguration) کے ساتھ ترتیب دیا جاتا ہے۔

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 پراپرٹی حقیقی ماحول سے مماثل بلٹ ان روشنی شامل کرتی ہے۔ 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 کیا ہے اور یہ کس لیے استعمال ہوتا ہے؟

SceneKit Apple کا 3D گرافکس کا فریم ورک ہے جو نچلی سطح کی پروگرامنگ کے بغیر انٹرایکٹو تین جہتی مناظر تخلیق کرنے کی اجازت دیتا ہے۔ یہ iOS، macOS اور tvOS پر گیمز، AR ایپلی کیشنز، ڈیٹا ویژولائزیشن اور 3D ایڈیٹرز کے لیے استعمال ہوتا ہے۔

SceneKit اور Metal میں کیا فرق ہے؟

SceneKit بلٹ ان رینڈرر اور فزکس کے ساتھ ایک اعلیٰ سطحی API ہے، عام 3D کاموں کے لیے موزوں ہے۔ Metal مکمل GPU کنٹرول کے لیے ایک نچلی سطحی API ہے۔ SceneKit اندرونی طور پر Metal استعمال کرتا ہے، جبکہ Metal کسٹم رینڈرنگ اثرات کے لیے موزوں ہے۔

SceneKit کون سے 3D ماڈل فارمیٹس کو سپورٹ کرتا ہے؟

SceneKit Model I/O کے ذریعے USD، USDZ، OBJ، STL، Collada (DAE)، Alembic (ABC)، PLY اور GLTF کو سپورٹ کرتا ہے۔ مقامی فارمیٹ JSON پر مبنی .scn (SceneKit Scene Format) ہے۔ SCNGeometry کے ذریعے پروگرام کے ذریعے جیومیٹری بنائی جا سکتی ہے۔

SceneKit کی کارکردگی کو کیسے بہتر بنایا جائے؟

دور کی اشیاء کے لیے LOD (تفصیل کی سطح) استعمال کریں، ایک ہی مواد والی جیومیٹری کو ضم کریں، سائے اور روشنی کے ذرائع کو 3–4 تک محدود کریں۔ حقیقی وقت میں FPS اور ڈرا کالز کی نگرانی کے لیے Statistics کو فعال کریں۔

کیا AR ایپلی کیشنز کے لیے SceneKit استعمال کیا جا سکتا ہے؟

جی ہاں، ARSCNView — ARKit کے لیے SCNView کی توسیع کے ذریعے۔ SceneKit خود بخود 3D منظر کو حقیقی دنیا کے ساتھ ہم آہنگ کرتا ہے، سطح، چہرے اور تصویر کی پہچان کو سپورٹ کرتا ہے۔ AR میں 3D اشیاء شامل کرنے کا یہ سب سے آسان طریقہ ہے۔

خلاصہ

  • SceneKit — Metal کے ذریعے GPU رینڈرنگ کے ساتھ اعلیٰ سطحی 3D گرافکس کے لیے Apple کا فریم ورک
  • SCNScene اور SCNNode تبدیلی کی وراثت کے ساتھ سین گراف بناتے ہیں
  • SCNMaterial roughness، metalness اور normal میپس کے ساتھ PBR رینڈرنگ کو سپورٹ کرتا ہے
  • SCNPhysicsBody تصادم اور جوڑوں کے ساتھ فزکس سمولیشن فراہم کرتا ہے
  • Model I/O USD، OBJ، Collada اور دیگر فارمیٹس میں ماڈل درآمد کرتا ہے
  • ARSCNView ARKit کے ذریعے 3D مناظر کو بڑھی ہوئی حقیقت سے مربوط کرتا ہے
  • SCNParticleSystem حقیقی وقت میں لاکھوں ذرات کے ساتھ GPU اثرات پیدا کرتا ہے

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں