3D फ़ॉर्मेट समर्थन

Aspose.3D FOSS for TypeScript सात प्रमुख 3D फ़ाइल फ़ॉर्मैट पढ़ता और लिखता है। लोड करते समय फ़ॉर्मैट का पता लगाना स्वचालित है: लाइब्रेरी बाइनरी मैजिक नंबरों की जाँच करती है इसलिए आपको स्रोत फ़ॉर्मैट निर्दिष्ट करने की आवश्यकता नहीं है। फ़ॉर्मैट-विशिष्ट विकल्प क्लासेस को सब‑पाथ्स से इम्पोर्ट किया जाता है। @aspose/3d पैकेज.

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

फ़ॉर्मेटविस्तारपढ़ेंलिखेंफ़ॉर्मेट क्लासनोट्स
Wavefront OBJ.objहाँहाँObjFormatपढ़ता है .mtl सामग्री; लिखता है .mtl साथ में .obj
glTF 2.0.gltfहाँहाँGltfFormatJSON टेक्स्ट + .bin साइडकार
GLB.glbहाँहाँGltfFormatबाइनरी glTF; सेट binaryMode = true
STL.stlहाँहाँStlFormatबाइनरी और ASCII मोड
3MF.3mfहाँहाँThreeMfFormat3D Manufacturing Format
FBX.fbxनहीं*नहीं*FbxFormatइम्पोर्टर/एक्सपोर्टर मौजूद हैं लेकिन फ़ॉर्मेट ऑटो-डिटेक्शन जुड़ा नहीं है; उपयोग के लिए उपलब्ध नहीं है via scene.open()
COLLADA.daeहाँहाँColladaFormatआवश्यक है xmldom (ऑटो-इंस्टॉल्ड)

OBJ (Wavefront)

OBJ दोनों इम्पोर्ट और एक्सपोर्ट को समर्थन देता है @aspose/3d. जब OBJ के रूप में सहेजा जाता है, तो मैटेरियल लाइब्रेरी (.mtl) स्वचालित रूप से फ़ाइल के साथ लिखी जाती है .obj फ़ाइल। उपयोग करें ObjLoadOptions मैटेरियल लोडिंग और कोऑर्डिनेट सिस्टम व्यवहार को नियंत्रित करने के लिए।.

मुख्य विकल्प ObjLoadOptions:

विकल्पप्रकारडिफ़ॉल्टप्रभाव
enableMaterialsbooleantrueपार्स करें .mtl फ़ाइल जिसका संदर्भ है mtllib
flipCoordinateSystembooleanfalseदाएँ‑हाथी प्रणालियों से मेल खाने के लिए Y/Z अक्षों को उलटें
scalenumber1.0लोड पर सभी वर्टिसेज़ पर लागू समान स्केल
normalizeNormalbooleantrueवर्टेक्स नॉर्मल्स को इकाई लंबाई में सामान्यीकृत करें
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 कोऑर्डिनेट नॉर्मलाइज़ेशन।.
  • xmldom COLLADA के लिए आवश्यक है: यह स्वचालित रूप से स्थापित हो जाता है। इसे … में न जोड़ें 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

 हिन्दी