3D फ़ॉर्मेट समर्थन
Aspose.3D FOSS for TypeScript सात प्रमुख 3D फ़ाइल फ़ॉर्मैट पढ़ता और लिखता है। लोड करते समय फ़ॉर्मैट का पता लगाना स्वचालित है: लाइब्रेरी बाइनरी मैजिक नंबरों की जाँच करती है इसलिए आपको स्रोत फ़ॉर्मैट निर्दिष्ट करने की आवश्यकता नहीं है। फ़ॉर्मैट-विशिष्ट विकल्प क्लासेस को सब‑पाथ्स से इम्पोर्ट किया जाता है। @aspose/3d पैकेज.
समर्थित फ़ॉर्मेट्स
| फ़ॉर्मेट | विस्तार | पढ़ें | लिखें | फ़ॉर्मेट क्लास | नोट्स |
|---|---|---|---|---|---|
| Wavefront OBJ | .obj | हाँ | हाँ | ObjFormat | पढ़ता है .mtl सामग्री; लिखता है .mtl साथ में .obj |
| glTF 2.0 | .gltf | हाँ | हाँ | GltfFormat | JSON टेक्स्ट + .bin साइडकार |
| GLB | .glb | हाँ | हाँ | GltfFormat | बाइनरी glTF; सेट binaryMode = true |
| STL | .stl | हाँ | हाँ | StlFormat | बाइनरी और ASCII मोड |
| 3MF | .3mf | हाँ | हाँ | ThreeMfFormat | 3D Manufacturing Format |
| FBX | .fbx | नहीं* | नहीं* | FbxFormat | इम्पोर्टर/एक्सपोर्टर मौजूद हैं लेकिन फ़ॉर्मेट ऑटो-डिटेक्शन जुड़ा नहीं है; उपयोग के लिए उपलब्ध नहीं है via scene.open() |
| COLLADA | .dae | हाँ | हाँ | ColladaFormat | आवश्यक है xmldom (ऑटो-इंस्टॉल्ड) |
OBJ (Wavefront)
OBJ दोनों इम्पोर्ट और एक्सपोर्ट को समर्थन देता है @aspose/3d. जब OBJ के रूप में सहेजा जाता है, तो मैटेरियल लाइब्रेरी (.mtl) स्वचालित रूप से फ़ाइल के साथ लिखी जाती है .obj फ़ाइल। उपयोग करें ObjLoadOptions मैटेरियल लोडिंग और कोऑर्डिनेट सिस्टम व्यवहार को नियंत्रित करने के लिए।.
मुख्य विकल्प ObjLoadOptions:
| विकल्प | प्रकार | डिफ़ॉल्ट | प्रभाव |
|---|---|---|---|
enableMaterials | boolean | true | पार्स करें .mtl फ़ाइल जिसका संदर्भ है mtllib |
flipCoordinateSystem | boolean | false | दाएँ‑हाथी प्रणालियों से मेल खाने के लिए Y/Z अक्षों को उलटें |
scale | number | 1.0 | लोड पर सभी वर्टिसेज़ पर लागू समान स्केल |
normalizeNormal | boolean | true | वर्टेक्स नॉर्मल्स को इकाई लंबाई में सामान्यीकृत करें |
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
const scene = new Scene();
const opts = new ObjLoadOptions();
opts.enableMaterials = true;
opts.normalizeNormal = true;
scene.open('model.obj', opts);
console.log(`Loaded ${scene.rootNode.childNodes.length} top-level node(s)`);OBJ को किसी भी लिखने योग्य फ़ॉर्मेट में बदलने के लिए, इसे लोड करें और कॉल करें scene.save() लक्ष्य फ़ॉर्मेट क्लास के साथ।.
glTF and GLB
glTF 2.0 वेब और गेम इंजन उपयोग के लिए अनुशंसित इंटरचेंज फ़ॉर्मेट है। लाइब्रेरी वही उपयोग करती है GltfFormat दोनों के लिए class .gltf (JSON + sidecar) और .glb (binary, self-contained) आउटपुट। इनके बीच टॉगल करें GltfSaveOptions.binaryMode.
glTF या GLB लोड करें:
import { Scene } from '@aspose/3d';
import { GltfLoadOptions } from '@aspose/3d/formats/gltf';
const scene = new Scene();
scene.open('model.gltf', new GltfLoadOptions());
// or
scene.open('model.glb'); // format detected from magic bytes
JSON glTF के रूप में निर्यात करें (.gltf + .bin):
import { Scene } from '@aspose/3d';
import { GltfSaveOptions, GltfFormat } from '@aspose/3d/formats/gltf';
const scene = new Scene();
scene.open('input.fbx');
const opts = new GltfSaveOptions();
opts.binaryMode = false; // produces output.gltf + output.bin
scene.save('output.gltf', GltfFormat.getInstance(), opts);बाइनरी GLB के रूप में निर्यात करें (.glb):
import { Scene } from '@aspose/3d';
import { GltfSaveOptions, GltfFormat } from '@aspose/3d/formats/gltf';
const scene = new Scene();
scene.open('input.obj');
const opts = new GltfSaveOptions();
opts.binaryMode = true; // single self-contained file
scene.save('output.glb', GltfFormat.getInstance(), opts);उपयोग करें binaryMode = true प्रोडक्शन एसेट डिलीवरी के लिए। एकल .glb ब्राउज़रों और इंजन में विभाजित टेक्स्ट + बाइनरी जोड़े की तुलना में तेज़ लोड होता है।.
STL
STL एक त्रिकोणीय मेष फ़ॉर्मेट है जो CAD और 3D प्रिंटिंग में उपयोग होता है। इनपुट और आउटपुट दोनों के लिए बाइनरी और ASCII STL समर्थित हैं।. StlSaveOptions.binaryMode नियंत्रित करता है कि आउटपुट बाइनरी (संक्षिप्त) है या ASCII (मानव-पठनीय)।.
import { Scene } from '@aspose/3d';
import { StlLoadOptions, StlSaveOptions } from '@aspose/3d/formats/stl';
const scene = new Scene();
scene.open('model.stl', new StlLoadOptions());
// Export as binary STL (default, compact)
const binaryOpts = new StlSaveOptions();
binaryOpts.binaryMode = true;
scene.save('output_binary.stl', binaryOpts);
// Export as ASCII STL (human-readable)
const asciiOpts = new StlSaveOptions();
asciiOpts.binaryMode = false;
scene.save('output_ascii.stl', asciiOpts);STL केवल त्रिकोणीय ज्यामिति और वर्टेक्स नॉर्मल्स को संग्रहीत करता है। सामग्री और UV डेटा STL में संरक्षित नहीं रहते।.
3MF (3D Manufacturing Format)
3MF is an XML-based format designed for additive manufacturing. It supports color and material metadata alongside geometry. Use it when exchanging files with 3D printing slicers or manufacturing workflows.
import { Scene } from '@aspose/3d';
import { ThreeMfSaveOptions } from '@aspose/3d/formats/3mf';
const scene = new Scene();
scene.open('model.3mf');
// Re-export as 3MF
scene.save('output.3mf', new ThreeMfSaveOptions());3MF files are ZIP archives internally. The library handles archive creation and extraction automatically.
FBX
चेतावनी: FBX इम्पोर्टर और एक्सपोर्टर क्लासेज़ (FbxImporter, FbxExporter) लाइब्रेरी में मौजूद हैं, लेकिन FBX फ़ॉर्मेट ऑटो-डिटेक्शन है वायर नहीं किया गया में scene.open() या scene.save(). कॉल करना scene.open('file.fbx') FBX इम्पोर्टर को नहीं बुलाएगा — फ़ाइल STL फ़ॉलबैक पर चली जाएगी। कॉल करना scene.save('output.fbx', opts) FBX एक्सपोर्टर को नहीं बुलाएगा। ऊपर की फ़ॉर्मेट सपोर्ट टेबल FBX को के रूप में No* इस कारण से। पूर्ण कार्यात्मक आयात और निर्यात के लिए GLB या COLLADA का उपयोग करें via scene.open() / scene.save().
COLLADA (DAE)
COLLADA एक XML-आधारित इंटरचेंज फ़ॉर्मेट है जो कई DCC टूल्स (Blender, Maya, Cinema 4D) द्वारा समर्थित है। लाइब्रेरी उपयोग करती है xmldom निर्भरता XML पार्सिंग के लिए; यह स्वचालित रूप से स्थापित हो जाता है with npm install @aspose/3d.
import { Scene } from '@aspose/3d';
import { ColladaSaveOptions } from '@aspose/3d/formats/collada';
const scene = new Scene();
scene.open('model.dae');
// Re-export as COLLADA
const saveOpts = new ColladaSaveOptions();
scene.save('output.dae', saveOpts);COLLADA फ़ाइलों में यूनिट-स्केलिंग मेटाडेटा हो सकता है (<unit> तत्व)। लाइब्रेरी लोड करते समय यूनिट रूपांतरण स्वचालित रूप से लागू करती है।.
फ़ॉर्मेट ऑटो‑डिटेक्शन
जब फ़ाइल पथ से लोड किया जाता है, लाइब्रेरी बाइनरी मैजिक नंबरों से फ़ॉर्मेट का पता लगाने की कोशिश करती है, फिर फ़ाइल एक्सटेंशन पर fallback करती है। इसका मतलब है कि आप एक GLB फ़ाइल जिसका नाम .bin या एक STL फ़ाइल जिसका नाम .model फ़ॉर्मेट को स्पष्ट रूप से निर्दिष्ट किए बिना।.
जब किसी से लोड किया जाता है Buffer के साथ scene.openFromBuffer(), मैजिक-नंबर डिटेक्शन मुख्य तंत्र है:
import { Scene } from '@aspose/3d';
import * as fs from 'fs';
const buffer = fs.readFileSync('model.glb');
const scene = new Scene();
scene.openFromBuffer(buffer); // format detected from magic bytes: 'glTF'
console.log(`Root has ${scene.rootNode.childNodes.length} child node(s)`);विश्वसनीय मैजिक नंबर वाले फ़ॉर्मेट: GLB (glTF), STL बाइनरी (80-बाइट हेडर + त्रिभुज गिनती), 3MF (ZIP मैजिक PK). OBJ और COLLADA टेक्स्ट-आधारित हैं और फ़ाइल एक्सटेंशन या आप द्वारा पास किए गए विकल्प क्लास से पहचाने जाते हैं।.
टिप्स
- OBJ आयात और निर्यात दोनों का समर्थन करता है: जब OBJ के रूप में सहेजा जाता है, तो
.mtlमैटेरियल फ़ाइल स्वचालित रूप से साथ में लिखी जाती है.objफ़ाइल।. - वेब डिलीवरी के लिए GLB का उपयोग करें: स्व-निहित बाइनरी फ़ॉर्मेट CORS समस्याओं से बचाता है
.binसाइडकार और WebGL रेंडरर्स में तेज़ लोड होते हैं।. - फ़ॉर्मेट-विशिष्ट विकल्प पास करें: सामान्य
scene.open(path)अधिकांश फ़ॉर्मेट्स के लिए काम करता है, लेकिन लोडर विकल्प क्लास पास करने से फ़ॉर्मेट-विशिष्ट व्यवहार सक्षम होता है जैसे OBJ मैटेरियल लोडिंग या STL कोऑर्डिनेट नॉर्मलाइज़ेशन।. xmldomCOLLADA के लिए आवश्यक है: यह स्वचालित रूप से स्थापित हो जाता है। इसे … में न जोड़ेंpeerDependenciesया इसे हटाने की कोशिश न करें; COLLADA रीडर इसे सीधे कॉल करता है।.
सामान्य समस्याएँ
| लक्षण | संभावित कारण | समाधान |
|---|---|---|
| लोड के बाद OBJ मैटेरियल खाली होते हैं | enableMaterials सेट नहीं है | पास करें ObjLoadOptions के साथ enableMaterials = true |
GLB एक .bin साइडकार | binaryMode डिफ़ॉल्ट रूप से false | सेट opts.binaryMode = true में GltfSaveOptions |
scene.open() “unsupported format” त्रुटि फेंकता है | फ़ाइल एक्सटेंशन पहचाना नहीं गया | मिलते हुए को पास करें *LoadOptions क्लास या उपयोग करें openFromBuffer() |
| COLLADA लोड XML त्रुटि के साथ विफल होता है | xmldom गायब या असंगत | चलाएँ npm install @aspose/3d फिर; xmldom एक प्रत्यक्ष निर्भरता है |
| ASCII निर्यात में STL नॉर्मल्स खो गए | ASCII STL प्रति-फ़ेस नॉर्मल्स को छोड़ देता है | उपयोग करें binaryMode = true नॉर्मल-रक्षित आउटपुट के लिए |
See Also
- विशेषताएँ और कार्यात्मकताएँ: सीन ग्राफ, मेष, सामग्री, एनीमेशन, और गणित API.
- सीन ग्राफ: नोड ट्री का निर्माण और पारगमन.
- प्रोग्रामेटिक रूप से 3D Mesh कैसे बनाएं