3D मॉडल को टाइपस्क्रिप्ट में कैसे परिवर्तित करें
Aspose.3D FOSS for TypeScript 3D प्रारूपों के बीच परिवर्तित करता है, एक साइड में लोड करके Scene प्रतिनिधित्व और लक्ष्य प्रारूप में बचत. यह गाइड सबसे आम रूपांतरण दिखाता है.
कदम-दर-चरण गाइड
चरण 1: @aspose / 3d स्थापित करें
asposefoss/3d is not yet published — build from source until it ships. See the project README for build instructions.
चरण 2: फ़ाइल को लोड करें
बनाए A 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: सामान्य रूपांतरण उदाहरण
GLTF / GLB के लिए OBJ
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()एपीआई. एक FBX विकल्प के रूप में COLLADA, OBJ या glTF का उपयोग करें।.
STL के लिए GTTF
import { Scene } from '@aspose/3d';
const scene = new Scene();
scene.open('model.glb');
scene.save('model.stl');
console.log('Converted GLB → STL');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}`);
}रूपांतरण मैट्रिक्स का समर्थन करें
| से लेकर | ग्लोबल / GLB | OBJ | STL | FBX | 3MF | COLLADA |
|---|---|---|---|---|---|---|
| OBJ | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ |
| ग्लोबल / GLB | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ |
| FBX | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ |
| STL | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ |
| 3MF | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ |
| COLLADA | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ |
FBX उच्च स्तर के माध्यम से समर्थन नहीं किया जाता है open()/save() एपीआई - प्रारूप स्वचालित पहचान में नहीं है. ऊपर दिए गए सभी FBX कोशिकाएं हैं.
सामान्य समस्याएं और सुधार
परिवर्तित होने के बाद सामग्री खो जाती है
एलईडी सामग्री (usemtl, .mtl फ़ाइल लोड हो जाती है जब ObjLoadOptions.enableMaterials = true. जब glTF में बचत करते हैं, तो PBR सामग्री की विशेषताओं को स्वचालित रूप से मैप किया जाता है. जटिल सामग्री (प्रक्रियात्मक, बहु-स्तरीय) कम वफादारी के साथ परिवर्तित हो सकती है।.
मशीन गलत तरीके से स्केल की तरह दिखती है
अलग-अलग प्रारूपों में विभिन्न डिफ़ॉल्ट इकाइयों का उपयोग किया जाता है (STL के लिए मिलीमीटर, glTF के لئے मीटर)। ObjLoadOptions.scale जब आप लोड या StlSaveOptions.scale इकाइयों को सामान्य करने के लिए बचत करते समय।.
सिस्टम कोरनाट गलत मिश्रण (प्रकार फ्लिप या घूर्णन)
कुछ प्रारूप दाहिने हाथ Y-up का उपयोग करते हैं, अन्य Z-Up. ObjLoadOptions.flipCoordinateSystem = true या लोड करने के बाद रूट नोड पर एक घूर्णन लागू करें।.
अक्सर पूछे जाने वाले प्रश्न
क्या रूपांतरण एनीमेशन को बचाता है?
एनीमेशन डेटा को उन प्रारूपों के बीच परिवर्तित करते समय संरक्षित किया जाता है जो इसे समर्थन देते हैं (उदाहरण के लिए, COLLADA → glTF). STL और OBJ एनिमेटेड डेटे नहीं लेते हैं. FBX का समर्थन नहीं किया जा रहा है scene.open()/scene.save(), इसलिए FBX एनीमेशन रूट-ट्रिप उच्च स्तर के API के माध्यम से उपलब्ध नहीं हैं।.
क्या पाठ्यक्रम डेटा बनाए रखा गया है?
वस्तुओं के आधार पर या ग्लोबल एडमिनिस्ट्रेशन में संलग्न बनाया गया है, जो दृश्य चार्ट के माध्यम से ले जाया जाता है।binaryMode = true) बाइनरी बफर एक ही फ़ाइल में शामिल है. OBJ आउटपुट के लिए, संरचनाओं को अलग-अलग फ़ील्ड के रूप में संग्रहीत किया जाता है। .obj.
क्या मैं कई फ़ाइलों को समानांतर में परिवर्तित कर सकता हूं?
scene.open() और scene.save() Node.js का उपयोग करें worker_threads एक साथ प्रसंस्करण के लिए।.