TypeScript में 3D मॉडल कैसे बदलें

TypeScript में 3D मॉडल कैसे बदलें

Aspose.3D FOSS for TypeScript 3D फ़ॉर्मैट्स के बीच रूपांतरण करता है, एक तटस्थ Scene प्रतिनिधित्व में लोड करके और लक्ष्य फ़ॉर्मेट में सहेजकर। यह गाइड सबसे सामान्य रूपांतरणों को दिखाता है।

चरण-दर-चरण गाइड

चरण 1: @aspose/3d स्थापित करें

npm install @aspose/3d

चरण 2: स्रोत फ़ाइल लोड करें

एक Scene बनाएं और scene.open() को कॉल करें। सर्वोत्तम परिणामों के लिए फ़ॉर्मेट-विशिष्ट *LoadOptions क्लास का उपयोग करें।

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

const scene = new Scene();
const opts = new ObjLoadOptions();
opts.enableMaterials = true;
scene.open('model.obj', opts);

चरण 3: लक्ष्य स्वरूप में सहेजें

आउटपुट पथ के साथ scene.save() को कॉल करें। आउटपुट फ़ॉर्मेट फ़ाइल एक्सटेंशन से पता लगाया जाता है।

// OBJ → glTF binary (GLB)
scene.save('output.glb');

// OBJ → STL
scene.save('output.stl');

// OBJ → COLLADA
scene.save('output.dae');

नोट: FBX समर्थित नहीं है scene.save() ऑटो‑डिटेक्शन द्वारा। .fbx एक्सटेंशन किसी भी एक्सपोर्टर से जुड़ा नहीं है — .fbx में सहेजने पर चुपचाप OBJ‑फ़ॉर्मेट सामग्री लिखी जाती है। विश्वसनीय आउटपुट के लिए OBJ, glTF, STL, 3MF, या COLLADA का उपयोग करें।


चरण 4: सामान्य रूपांतरण उदाहरण

OBJ से glTF / GLB

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

const scene = new Scene();
scene.open('model.obj', new ObjLoadOptions());
scene.save('model.glb');
console.log('Converted OBJ → GLB');

FBX — समर्थित नहीं

FBX ऑटो-डिटेक्शन scene.open() में नहीं जोड़ा गया है। एक .fbx फ़ाइल जिसे scene.open() को पास किया जाता है, किसी भी फ़ॉर्मेट डिटेक्टर द्वारा पहचानी नहीं जाती और STL पार्सर पर गिर जाती है, जो विफल हो जाएगा या बकवास उत्पन्न करेगा। लाइब्रेरी में FBX इम्पोर्टर/एक्सपोर्टर क्लासेज़ मौजूद हैं लेकिन उन्हें उच्च-स्तरीय open()/save() API के बजाय सीधे बुलाना पड़ता है। FBX के विकल्प के रूप में COLLADA, OBJ, या glTF का उपयोग करें।

glTF से STL

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

const scene = new Scene();
scene.open('model.glb');
scene.save('model.stl');
console.log('Converted GLB → STL');

COLLADA से 3MF

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

const scene = new Scene();
scene.open('model.dae');
scene.save('model.3mf');
console.log('Converted COLLADA → 3MF');

चरण 5: कई फ़ाइलों को बैच रूप में परिवर्तित करें

import * as fs from 'fs';
import * as path from 'path';
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';

const inputDir = './input';
const outputDir = './output';

fs.mkdirSync(outputDir, { recursive: true });

const objFiles = fs.readdirSync(inputDir).filter(f => f.endsWith('.obj'));

for (const file of objFiles) {
    const inputPath = path.join(inputDir, file);
    const outputFile = file.replace('.obj', '.glb');
    const outputPath = path.join(outputDir, outputFile);

    const scene = new Scene();
    scene.open(inputPath, new ObjLoadOptions());
    scene.save(outputPath);

    console.log(`Converted ${file}${outputFile}`);
}

समर्थित रूपांतरण मैट्रिक्स

से \ तकglTF/GLBOBJSTLFBX3MFCOLLADA
OBJ
glTF/GLB
FBX
STL
3MF
COLLADA

FBX उच्च-स्तरीय open()/save() API के माध्यम से समर्थित नहीं है — फ़ॉर्मेट ऑटो‑डिटेक्शन में जुड़ा नहीं है। ऊपर सभी FBX सेल ✗ हैं।


सामान्य समस्याएँ और समाधान

रूपांतरण के बाद सामग्री खो जाती है

OBJ सामग्री (usemtl, .mtl फ़ाइल) तब लोड होती है जब ObjLoadOptions.enableMaterials = true। glTF में सहेजते समय, PBR सामग्री गुण स्वचालित रूप से मैप किए जाते हैं। जटिल सामग्री (प्रक्रियात्मक, बहु‑परत) कम सटीकता के साथ परिवर्तित हो सकती है।

मेश का स्केलिंग गलत दिख रहा है

विभिन्न फ़ॉर्मेट विभिन्न डिफ़ॉल्ट इकाइयों का उपयोग करते हैं (STL के लिए मिलीमीटर, glTF के लिए मीटर)। इकाइयों को सामान्य करने के लिए लोड करते समय ObjLoadOptions.scale और सहेजते समय StlSaveOptions.scaleFactor का उपयोग करें।

निर्देशांक प्रणाली में असंगति (मॉडल उलटा या घुमाया गया)

कुछ फ़ॉर्मेट दाएँ‑हाथ Y‑up का उपयोग करते हैं, अन्य Z‑up। ObjLoadOptions.flipCoordinateSystem = true का उपयोग करें या लोड करने के बाद रूट नोड पर एक घूर्णन लागू करें।


अक्सर पूछे जाने वाले प्रश्न

क्या रूपांतरण एनीमेशन को संरक्षित करता है?

एनीमेशन डेटा उन फ़ॉर्मैट्स के बीच रूपांतरण करते समय संरक्षित रहता है जो इसे समर्थन करते हैं (उदा., COLLADA → glTF). STL और OBJ एनीमेशन डेटा नहीं ले जाते हैं। FBX को scene.open()/scene.save() के माध्यम से समर्थन नहीं किया जाता है, इसलिए FBX एनीमेशन राउंड‑ट्रिप्स हाई‑लेवल API के माध्यम से उपलब्ध नहीं हैं।

क्या टेक्सचर डेटा संरक्षित है?

OBJ सामग्री द्वारा संदर्भित या glTF में एम्बेडेड टेक्सचर को सीन ग्राफ़ में ले जाया जाता है। GLB में सहेजते समय (binaryMode = true), बाइनरी बफ़र एक ही फ़ाइल में एम्बेड किया जाता है। OBJ आउटपुट के लिए, टेक्सचर को .obj के साथ अलग फ़ाइलों के रूप में सहेजा जाता है।

क्या मैं कई फ़ाइलों को समानांतर में परिवर्तित कर सकता हूँ?

scene.open() और scene.save() सिंक्रोनस हैं। समानांतर प्रोसेसिंग के लिए Node.js worker_threads का उपयोग करें।


संबंधित देखें

 हिन्दी