3D عنصر

ایک 3D عنصر آپ کے پروجیکٹ میں تین جہتی اشیاء کی نمائندگی کرتا ہے، بشمول درآمد کردہ 3D ماڈلز، بنیادی جیومیٹری پرائمٹیوز، 2D شکلوں سے نکالی گئی شکلیں، 3D متن، اور بولین آپریشن کے نتائج۔

3D عناصر بنیادی عنصر اور نظریہ عنصر سے مشترکہ فیلڈز کا اشتراک کرتے ہیں، جبکہ اضافی 3D مخصوص خصوصیات بھی متعارف کراتے ہیں۔

بنیادی فیلڈز

پراپقسمضروریمثالقدر کی حدتفصیل
typestringtrue-3Dعنصر کی قسم۔ 3D عناصر کے لیے، یہ ہمیشہ "3D" ہوتا ہے۔
sourceIdstringfalse--3D ماڈل یا جیومیٹری وسائل کے لیے اندرونی شناخت کنندہ۔
extstringfalse-glb | gltf | fbx | obj | geometry | primitive | text3d | parametric | curve3D عنصر کی فائل کی توسیع یا نوڈ کی قسم۔
externalUrlstringfalse--بیرونی glTF/glb ماڈلز کو لوڈ کرنے کے لیے اختیاری URL۔ انجن ماڈل کو حاصل اور کیش کرے گا۔
nodeTypestringfalse-primitive | geometry | text3d | import | model | parametric | curve3D نوڈ کی قسم۔ اضافی خصوصیات کی ساخت کا تعین کرتا ہے۔
categorystringfalse-For primitive/geometry: basic | polyhedron. For parametric: extrusion | lathe | sweep. For curve: helix | torusKnot | custom3D نوڈ کی ذیلی قسم۔ دستیاب قیمتیں nodeType پر منحصر ہیں۔
geometryTypestringfalse--بنیادی جیومیٹری کی قسم۔ نیچے "جیومیٹری کی اقسام" کے سیکشن کو دیکھیں۔
originalWidthnumberfalse--دنیا کی اکائیوں میں 3D ماڈل کی اصل چوڑائی۔
originalHeightnumberfalse--دنیا کی اکائیوں میں 3D ماڈل کی اصل اونچائی۔
originalDepthnumberfalse--دنیا کی اکائیوں میں 3D ماڈل کی اصل گہرائی۔
animationobjectfalse--انیمیشن کے ساتھ glTF ماڈلز کے لیے انیمیشن کی ترتیبات۔ currentIndex، speed، اور loop کی خصوصیات پر مشتمل ہے۔

3D تبدیلی کے فیلڈز

معیاری 2D تبدیلی کی خصوصیات (x، y، گردش، scaleX، scaleY) کے علاوہ، 3D عناصر تین جہتی پوزیشننگ اور گردش کے لیے اضافی تبدیلی کی خصوصیات کی حمایت کرتے ہیں:

پراپقسمضروریمثالقدر کی حدتفصیل
znumberfalse--3D جگہ میں عنصر کی گہرائی کی پوزیشن۔ اکائیوں کو پکسلز کے ساتھ ہم آہنگ کیا جاتا ہے، جہاں z=0 کینوس کے طیارے کے مطابق ہوتا ہے۔
rotationXnumberfalse--X-axis کے گرد گردش، ڈگری میں۔
rotationYnumberfalse--Y-axis کے گرد گردش، ڈگری میں۔
scaleZnumberfalse-> 0Z-axis کے ساتھ ساتھ اسکیلنگ کا عنصر۔ 1 سے زیادہ کی قیمتیں بڑھاتی ہیں، 0 اور 1 کے درمیان کی قیمتیں سکڑتی ہیں۔

جیومیٹری کی اقسام

geometryType فیلڈ بنیادی 3D جیومیٹری کی قسم کی وضاحت کرتی ہے۔ دستیاب اقسام زمرے کے لحاظ سے منظم کی گئی ہیں (جب nodeType "geometry" یا "primitive" ہو تو category فیلڈ کے ذریعے مخصوص):

نوٹ: nodeType: "primitive" "geometry" کا ایک متبادل ہے۔ دونوں کی حمایت کی جاتی ہے اور ایک جیسا برتاؤ کرتی ہیں۔

بنیادی شکلیں (category: "basic"):

  • cube - چھہ رخا خانہ
  • sphere - گول جیومیٹری
  • cylinder - سلنڈریک جیومیٹری
  • cone - مخروطی جیومیٹری
  • torus - ڈونٹ کی شکل کی جیومیٹری
  • capsule - گولی کی شکل کی جیومیٹری
  • disc - چپٹا گول ڈسک

پالی ہیڈران (category: "polyhedron"):

  • pyramid - چار رخا ہرم
  • octahedron - آٹھ چہرے والا پالی ہیڈران
  • icosahedron - بیس چہرے والا پالی ہیڈران
  • dodecahedron - بارہ چہرے والا پالی ہیڈران
  • hexPrism - چھہ رخا پرسم
  • triangle - مثلثی پرسم

پیرا میٹرک نوڈ کی اقسام

پیرا میٹرک نوڈز (nodeType: "parametric") جیومیٹری کو پروسیجرلی پیدا کرتے ہیں:

ایکسٹروژن (category: "extrusion"):

  • Z-axis کے ساتھ گہرائی اور بیولنگ کے ساتھ 2D شکلوں کو نکالتا ہے

لیتھ (category: "lathe"):

  • ایک 2D پروفائل کو ایک محور کے گرد گھما کر سلنڈریک اشیاء بناتا ہے

سویپ (category: "sweep"):

  • ایک 2D پروفائل کو 3D راستے کے ساتھ ساتھ گھما کر ٹیوبی یا ریل پر مبنی شکلیں بناتا ہے

کرو نوڈ کی اقسام

کرو نوڈز (nodeType: "curve") 3D کرو اور راستے بناتے ہیں:

ہیلیکس (category: "helix"):

  • کنفیگور ایبل ریڈیئس اور پچ کے ساتھ ہیلیکلی اسپائرل کرو

ٹوروس نوٹ (category: "torusKnot"):

  • ٹوروس کی سطح پر ریاضیاتی نوٹ کرو

حسب ضرورت (category: "custom"):

  • صارف کی تعریف کردہ کرو راستے

ٹوپولوجی نوڈ کی اقسام

ٹوپولوجی کی کارروائیاں (بولین، ارے، آئینہ، مرکب) ایڈیٹر کے اندر کی جاتی ہیں اور معیاری جیومیٹری آؤٹ پٹ پیدا کرتی ہیں۔ یہ کارروائیاں ایڈٹ کے وقت لاگو کی جاتی ہیں اور رینڈر API میں خصوصی ہینڈلنگ کی ضرورت نہیں ہوتی۔

شکل کی ایکسٹروژن

3D عناصر 2D شکلوں کو نکال کر بنائے جا سکتے ہیں۔ جب آپ ایڈیٹر میں 2D شکل کے عنصر کو 3D میں تبدیل کرتے ہیں، تو یہ نئے type: "3D" عنصر کے ساتھ اضافی فیلڈز پیدا کرتا ہے:

پراپقسمضروریمثالقدر کی حدتفصیل
extrusionSourceobjectfalse--3D ایکسٹروژن بنانے کے لیے استعمال ہونے والے اصل 2D شکل کے ڈیٹا۔ مکمل ShapeNodeData پر مشتمل ہے۔
shapeSizeXnumberfalse--نکالی گئی شکل کی چوڑائی، پکسلز میں۔
shapeSizeYnumberfalse--نکالی گئی شکل کی اونچائی، پکسلز میں۔
shapeExtrusionnumberfalse--Z-axis کے ساتھ نکالنے کی گہرائی، پکسلز میں۔
shapeCornerstringfalse-round | chamfer | straightنکالی گئی شکلوں کے لیے کونے کی قسم۔
shapeRoundnessSmoothnumberfalse-0 - 1گول کونے کی ہمواری (0-1)۔
shapeRoundnessArcnumberfalse--گول کونے کے لیے قوس کی شعاع۔
shapeBevelnumberfalse--کناروں کے لیے بیول کی گہرائی۔
shapeBevelSidesnumberfalse--بیول کے کناروں کے لیے حصوں کی تعداد۔

3D متن

3D عناصر بھی گہرائی اور بیولنگ کے ساتھ تین جہتی متن کی نمائندگی کر سکتے ہیں:

پراپقسمضروریمثالقدر کی حدتفصیل
textContentstringfalse--3D میں رینڈر کرنے کے لیے متن کا مواد۔
textStyle3Dobjectfalse--متن کی اسٹائلنگ کی خصوصیات (فونٹ، سائز، وزن، وغیرہ)۔ کچھ 2D متن کے طرز کے فیلڈز کو دوبارہ استعمال کرتا ہے۔
textDepthnumberfalse--3D متن کی ایکسٹروژن کی گہرائی۔
textBevelSizenumberfalse--متن کے کناروں پر بیول کا سائز۔
textBevelSegmentsnumberfalse--متن کی بیولنگ کے لیے حصوں کی تعداد۔
textCurveSegmentsnumberfalse--متن کی کرو کے لیے حصوں کی تعداد۔

مواد اور ٹیکسچر

3D عناصر ایک PBR (فزیکلی بیسڈ رینڈرنگ) مواد کے نظام کا استعمال کرتے ہیں جس میں جامع ٹیکسچر کی حمایت ہوتی ہے:

پراپقسمضروریمثالقدر کی حدتفصیل
materialobjectfalse--مکمل مواد کی تشکیل بشمول PBR خصوصیات اور ٹیکسچر میپس۔

material آبجیکٹ میں شامل ہے:

physicalMaterialData - PBR مواد کی خصوصیات:

  • color (string) - بنیادی رنگ ہیکس فارمیٹ میں، ڈیفالٹ: '#818cf8'
  • roughness (number) - سطح کی کھردری، 0-1، ڈیفالٹ: 0.4
  • metalness (number) - دھاتی خصوصیت، 0-1، ڈیفالٹ: 0.0
  • opacity (number) - مواد کی شفافیت، 0-1، ڈیفالٹ: 1.0
  • transmission (number) - شیشے جیسی مواد کے لیے روشنی کی ترسیل، 0-1، ڈیفالٹ: 0.0
  • ior (number) - انڈیکس آف ریفریکشن، عام طور پر 1.0-2.5، ڈیفالٹ: 1.5
  • clearcoat (number) - کلیر کوٹنگ کی شدت، 0-1، ڈیفالٹ: 0.0
  • clearcoatRoughness (number) - کلیر کوٹ کی کھردری، 0-1، ڈیفالٹ: 0.0
  • sheen (number) - کپڑے جیسا چمکدار اثر، 0-1، ڈیفالٹ: 0.0
  • sheenRoughness (number) - چمکدار کھردری، 0-1، ڈیفالٹ: 0.0
  • sheenColor (string) - چمکدار رنگ
  • thickness (number) - ترسیل کے لیے مواد کی موٹائی

materialXPath (string) - اختیاری MaterialX پری سیٹ راستہ:

  • مثالیں: 'StandardSurface/standard_surface_gold.mtlx', 'StandardSurface/standard_surface_brass_tiled.mtlx'
  • جب لوڈ کیا جائے تو، یہ physicalMaterialData کو پری سیٹ اقدار کے ساتھ اوور رائیڈ کرتا ہے

Texture Maps - مواد کا آبجیکٹ ٹیکسچر میپ URLs پر مشتمل ہو سکتا ہے:

  • colorMap - بنیادی رنگ/ڈفیوز ٹیکسچر
  • normalMap - سطح کی تفصیل کے لیے نارمل میپ
  • roughnessMap - کھردری ٹیکسچر
  • metalnessMap - دھاتی ٹیکسچر
  • aoMap - امبیئنٹ اوکلوژن میپ
  • emissiveMap - ایمیسیو/چمکدار ٹیکسچر

ٹیکسچر میپس کو بہترین کارکردگی کے لیے TSL (Three.js Shading Language) کی فعالیتوں کا استعمال کرتے ہوئے لاگو کیا جاتا ہے۔

glTF ماڈلز اور انیمیشنز

3D عناصر جن میں nodeType: "model" یا nodeType: "import" شامل ہیں، درآمد کردہ 3D ماڈلز کی نمائندگی کرتے ہیں:

نوٹ: nodeType: "import" "model" کا ایک متبادل ہے۔ دونوں کی حمایت کی جاتی ہے اور ایک جیسا برتاؤ کرتی ہیں۔

  • source.url کا استعمال کرتے ہوئے دور دراز glTF/glb/FBX فائل کا URL مخصوص کریں
  • انجن ماڈل کو sourceId کا استعمال کرتے ہوئے حاصل اور کیش کرے گا
  • اگر ماڈل میں انیمیشنز شامل ہیں، تو animation.currentIndex کا استعمال کرتے ہوئے منتخب کریں کہ کون سی انیمیشن چلانی ہے
  • انیمیشن کی خصوصیات: currentIndex (number)، speed (number، ڈیفالٹ 1.0)، loop (boolean، ڈیفالٹ true)
  • ماڈلز DRACO کمپریشن کی حمایت کرتے ہیں تاکہ فائل کے سائز کو کم کیا جا سکے
  • sizeParams میں ماڈل کے ابعاد کے لیے width، height، depth شامل ہیں

مثالیں

بنیادی کیوب

cubeElement.json
 
{
  "id": "3d-cube-001",
  "type": "3D",
  "start": 0,
  "duration": 5,
  "trackIndex": 0,
  "x": 540,
  "y": 540,
  "z": 0,
  "width": 200,
  "height": 200,
  "anchorX": 100,
  "anchorY": 100,
  "rotation": 0,
  "rotationX": 30,
  "rotationY": 45,
  "scaleX": 1,
  "scaleY": 1,
  "scaleZ": 1,
  "alpha": 1,
  "ext": "geometry",
  "nodeType": "geometry",
  "category": "basic",
  "geometryType": "cube",
  "material": {
    "physicalMaterialData": {
      "color": "#4A90E2",
      "roughness": 0.4,
      "metalness": 0.0
    }
  }
}

ایکسٹروڈ شکل

extrudedShapeElement.json
 
{
  "id": "3d-extrusion-001",
  "type": "3D",
  "start": 0,
  "duration": 5,
  "trackIndex": 0,
  "x": 540,
  "y": 540,
  "z": 0,
  "width": 300,
  "height": 300,
  "anchorX": 150,
  "anchorY": 150,
  "rotation": 0,
  "rotationX": 0,
  "rotationY": 0,
  "scaleX": 1,
  "scaleY": 1,
  "scaleZ": 1,
  "alpha": 1,
  "ext": "parametric",
  "nodeType": "parametric",
  "category": "extrusion",
  "shapeSizeX": 300,
  "shapeSizeY": 300,
  "shapeExtrusion": 100,
  "material": {
    "physicalMaterialData": {
      "color": "#FF6B6B",
      "roughness": 0.3,
      "metalness": 0.1
    }
  },
  "extrusionSource": {
    "shapeType": "SHAPE_STAR",
    "starPoints": 5,
    "starInnerRadius": 0.4
  }
}

انیمیشن کے ساتھ glTF ماڈل

gltfModelElement.json
 
{
  "id": "3d-model-001",
  "type": "3D",
  "start": 0,
  "duration": 10,
  "trackIndex": 0,
  "x": 540,
  "y": 540,
  "z": -200,
  "width": 400,
  "height": 400,
  "anchorX": 200,
  "anchorY": 200,
  "rotation": 0,
  "rotationX": 0,
  "rotationY": 0,
  "scaleX": 1,
  "scaleY": 1,
  "scaleZ": 1,
  "alpha": 1,
  "ext": "glb",
  "nodeType": "model",
  "sourceId": "cached-model-123",
  "source": {
    "url": "https://example.com/models/animated_character.glb"
  },
  "animation": {
    "currentIndex": 0,
    "speed": 1.0,
    "loop": true
  },
  "sizeParams": {
    "width": 2,
    "height": 2,
    "depth": 2
  },
  "originalWidth": 2,
  "originalHeight": 2,
  "originalDepth": 2
}

نوٹس

  • 3D عناصر موجودہ 2D رینڈرنگ پائپ لائن کے ساتھ مکمل طور پر ضم ہوتے ہیں۔ آپ ایک ہی پروجیکٹ میں 2D اور 3D عناصر کو ملا سکتے ہیں۔
  • کیمرہ پکسل-پرفیکٹ پرسپیکٹو پروجیکشن کا استعمال کرتا ہے، یہ یقینی بناتا ہے کہ z=0 پر، ایک عالمی یونٹ ایک پکسل کے برابر ہے۔
  • 3D تبدیلیوں کے لیے، کوآرڈینیٹ سسٹم معیاری 3D روایات کی پیروی کرتا ہے: X (دائیں)، Y (اوپر)، Z (ناظر کی طرف)۔
  • مواد اور ٹیکسچر کی خصوصیات عام طور پر ایڈیٹر کے ذریعہ سیٹ کی جاتی ہیں۔ اگر آپ JSON کو ہاتھ سے لکھ رہے ہیں تو دستیاب مواد کے لیے MaterialX پری سیٹ دستاویزات کا حوالہ دیں۔
  • ایڈیٹر 3D مناظر میں Light3D اور Particle3D عناصر بھی پیدا کر سکتا ہے۔ یہ ایڈیٹر کے ذریعہ پیدا کردہ ہیں اور انہیں دستی طور پر تعمیر کرنے کی ضرورت نہیں ہے۔