3D सामग्री के साथ काम करने वाले Node.js डेवलपर्स को अक्सर फ़ॉर्मैट्स के बीच रूपांतरण की आवश्यकता होती है: एक डिज़ाइन टूल OBJ निर्यात करता है, एक वेब रेंडरर GLB की अपेक्षा करता है, एक 3D प्रिंटर को STL चाहिए, और एक निर्माण पाइपलाइन 3MF का उपयोग करती है। इन रूपांतरणों को एक ही, सुसंगत API के साथ संभालने से पाइपलाइन में बाहरी टूल्स की संख्या कम होती है और रूपांतरण लॉजिक को एप्लिकेशन कोड के भीतर रखा जा सकता है जहाँ इसे परीक्षण और संस्करणित किया जा सकता है।.

यह @aspose/3d पैकेज (v24.12.0, MIT लाइसेंस) Node.js में सभी प्रमुख 3D फ़ॉर्मेट को पढ़ने और लिखने के लिए TypeScript‑first API प्रदान करता है। यह गाइड सबसे सामान्य रूपांतरण कार्यप्रवाहों को चरण‑दर‑चरण दर्शाता है।.

स्थापना

npm install @aspose/3d

आवश्यकताएँ: Node.js 18, 20, या 22; TypeScript 5.0 या बाद का संस्करण। एकमात्र रनटाइम निर्भरता है xmldom.

समर्थित फ़ॉर्मेट्स

नीचे दी गई तालिका इस गाइड में कवर किए गए फ़ॉर्मैट्स और उनके पढ़ने/लिखने समर्थन को सूचीबद्ध करती है।.

फ़ॉर्मेटएक्सटेंशनपढ़ेंलिखेंनोट्स
Wavefront OBJ.objहाँहाँपढ़ता/लिखता .mtl सामग्री फ़ाइलें
glTF 2.0 (JSON).gltfहाँहाँमानक वेब डिलीवरी फ़ॉर्मेट
glTF 2.0 (Binary).glbहाँहाँस्वयं-समाहित, वेब के लिए पसंदीदा
STL (ASCII/बाइनरी).stlहाँहाँमानक 3D प्रिंटिंग फ़ॉर्मेट
3MF.3mfहाँहाँसमृद्ध मेटाडेटा वाला निर्माण फ़ॉर्मेट
FBX.fbxनहीं*नहीं*Importer/exporter मौजूद हैं लेकिन फ़ॉर्मेट ऑटो-डिटेक्शन जुड़ा नहीं है; उपयोग के लिए उपलब्ध नहीं है scene.open()
COLLADA.daeहाँहाँXML-आधारित एक्सचेंज फ़ॉर्मेट

OBJ आयात और निर्यात दोनों का समर्थन करता है। Load with scene.open() and save with scene.save('output.obj'), या किसी अन्य समर्थित फ़ॉर्मेट में बदलें जैसे glTF, STL, या 3MF।.

OBJ से GLB (वेब डिलीवरी)

OBJ को बाइनरी glTF (GLB) में बदलना सबसे सामान्य वेब वर्कफ़्लो है। GLB एक स्व-निहित बाइनरी बंडल है: टेक्सचर, ज्योमेट्री, और मेटाडेटा एक ही फ़ाइल में होते हैं, जिससे यह HTTP डिलीवरी और Three.js, Babylon.js, तथा model‑viewer द्वारा सीधे लोड करने के लिए कुशल बनता है।.

import { Scene } from '@aspose/3d';

function convertObjToGlb(inputPath: string, outputPath: string): void {
  const scene = new Scene();
  scene.open(inputPath);
  scene.save(outputPath);  // extension '.glb' selects binary GLB format
  console.log(`Converted ${inputPath} -> ${outputPath}`);
}

convertObjToGlb('model.obj', 'model.glb');

आउटपुट फ़ॉर्मेट फ़ाइल एक्सटेंशन से अनुमानित किया जाता है। Use .glb बाइनरी GLB के लिए या .gltf अलग JSON + के लिए .bin लेआउट।.

OBJ से STL (3D प्रिंटिंग तैयारी)

STL FDM और SLA 3D प्रिंटिंग की lingua franca है। PrusaSlicer, Bambu Studio, और Chitubox जैसे स्लाइसर सभी STL को स्वीकार करते हैं। OBJ से STL में रूपांतरण सरल है क्योंकि दोनों फ़ॉर्मैट त्रिकोणीय मेष संग्रहीत करते हैं।.

import { Scene } from '@aspose/3d';

function convertObjToStl(inputPath: string, outputPath: string): void {
  const scene = new Scene();
  scene.open(inputPath);
  scene.save(outputPath);  // extension '.stl' selects STL format
  console.log(`STL written to ${outputPath}`);
}

convertObjToStl('part.obj', 'part.stl');

STL रंग, सामग्री, या UV डेटा संग्रहीत नहीं करता। यदि आपकी OBJ फ़ाइल में सामग्री समूह हैं, तो वह जानकारी निर्यात के दौरान हटा दी जाती है। रंग‑संरक्षण वाले प्रिंट फ़ॉर्मैट्स के लिए, इसके बजाय 3MF पर विचार करें (नीचे देखें)।.

STL से glTF (स्कैनर और CAD से वेब)

स्ट्रक्चर्ड-लाइट स्कैनर और पैरामीट्रिक CAD एक्सपोर्टर आमतौर पर STL आउटपुट करते हैं। glTF में रूपांतरण करने से ज्योमेट्री वेब‑आधारित व्यूअर्स और AR प्लेटफ़ॉर्म पर सर्वर‑साइड रेंडरिंग चरण के बिना उपलब्ध हो जाती है।.

import { Scene } from '@aspose/3d';

function convertStlToGltf(inputPath: string, outputPath: string): void {
  const scene = new Scene();
  scene.open(inputPath);
  // extension '.gltf' saves as JSON + .bin sidecar
  scene.save(outputPath);
  console.log(`glTF written to ${outputPath}`);
}

convertStlToGltf('scan_output.stl', 'scan_output.gltf');

क्योंकि STL में कोई सामग्री या टेक्सचर जानकारी नहीं होती, परिणामी glTF फ़ाइल में केवल ज्योमेट्री होगी। यदि आवश्यक हो तो लोड करने के बाद आप प्रोग्रामेटिक रूप से सीन नोड्स में सामग्री संलग्न कर सकते हैं।.

3MF to glTF (Manufacturing to Visualization)

3D मैन्युफैक्चरिंग फ़ॉर्मेट (3MF) का उपयोग एडिटिव मैन्युफैक्चरिंग वर्कफ़्लो में बढ़ता जा रहा है क्योंकि यह रंग, सामग्री, कंपोनेंट ट्रीज़, और प्रिंट मेटाडेटा को ज्योमेट्री के साथ संग्रहीत करता है। 3MF को glTF में बदलने से वेब टूल्स में डाउनस्ट्रीम विज़ुअलाइज़ेशन संभव होता है जबकि सीन संरचना बनी रहती है।.

import { Scene } from '@aspose/3d';

function convert3mfToGlb(inputPath: string, outputPath: string): void {
  const scene = new Scene();
  scene.open(inputPath);
  scene.save(outputPath);  // extension '.glb' selects binary GLB format
  console.log(`3MF -> GLB: ${outputPath}`);
}

convert3mfToGlb('assembly.3mf', 'assembly.glb');

3MF files often contain multi-component assemblies. The scene graph produced by scene.open() घटक पदानुक्रम को संरक्षित करता है scene.rootNode.childNodes, इसलिए आप सहेजने से पहले व्यक्तिगत भागों की जाँच या हेरफेर कर सकते हैं।.

बैच रूपांतरण पैटर्न

फ़ाइलों की डायरेक्टरी को प्रोसेस करते समय, प्रत्येक रूपांतरण को एक try/catch ताकि एक ही खराब फ़ाइल पूरी बैच को रोक न दे।.

import { Scene } from '@aspose/3d';
import { readdirSync } from 'fs';
import { join, basename, extname } from 'path';

interface ConversionResult {
  input: string;
  output: string;
  success: boolean;
  error?: string;
}

function batchConvertToGlb(
  inputDir: string,
  outputDir: string,
  extensions: string[] = ['.obj', '.stl', '.3mf', '.dae']  // .fbx excluded: format auto-detection not wired
): ConversionResult[] {
  const results: ConversionResult[] = [];

  const files = readdirSync(inputDir).filter((f) =>
    extensions.includes(extname(f).toLowerCase())
  );

  for (const file of files) {
    const inputPath = join(inputDir, file);
    const outputPath = join(outputDir, basename(file, extname(file)) + '.glb');

    try {
      const scene = new Scene();
      scene.open(inputPath);
      scene.save(outputPath);  // extension '.glb' infers GLB format
      results.push({ input: inputPath, output: outputPath, success: true });
    } catch (err) {
      const message = err instanceof Error ? err.message : String(err);
      results.push({ input: inputPath, output: outputPath, success: false, error: message });
      console.error(`Failed to convert ${file}: ${message}`);
    }
  }

  const succeeded = results.filter((r) => r.success).length;
  console.log(`Batch complete: ${succeeded}/${results.length} files converted.`);
  return results;
}

// Usage
batchConvertToGlb('./input', './output');

ऊपर दिया गया पैटर्न इनपुट डायरेक्टरी से प्रत्येक समर्थित फ़ाइल एक्सटेंशन पढ़ता है, GLB में परिवर्तित करता है, और लूप को रोके बिना किसी भी विफलता को लॉग करता है। लौटाई गई एरे में ConversionResult ऑब्जेक्ट्स को रिपोर्टिंग या रीट्राई लॉजिक के लिए उपयोग किया जा सकता है।.

निष्कर्ष

@aspose/3d Node.js TypeScript एप्लिकेशन में फ़ॉर्मेट रूपांतरण की पूरी श्रृंखला को एक सुसंगत दो-चरणीय API के साथ कवर करता है: scene.open() लोड करने के लिए, scene.save() लिखने के लिए। याद रखने वाली मुख्य बाधा यह है कि FBX इम्पोर्टर और एक्सपोर्टर क्लासेज मौजूद हैं लेकिन फ़ॉर्मेट ऑटो-डिटेक्शन अभी तक जुड़ा नहीं है, इसलिए FBX फ़ाइलें via लोड नहीं की जा सकतीं। scene.open().

अधिक विवरण के लिए Scene, Node, और Mesh इन उदाहरणों में उपयोग की गई क्लासेज के लिए, इस दस्तावेज़ में क्लास रेफ़रेंस पेज देखें।.