सीन रेंडरिंग और निर्यात
@aspose/3d एक प्रोसेसिंग और कन्वर्ज़न लाइब्रेरी है, और यह GPU रेंडरिंग नहीं करती है या इमेज फ़ाइलें उत्पन्न नहीं करती। इस लाइब्रेरी के संदर्भ में “Rendering” का अर्थ है एक सीन को ऐसे फ़ॉर्मेट में एक्सपोर्ट करना जो डाउनस्ट्रीम रेंडरर, गेम इंजन, या व्यूअर उपयोग कर सके.
यह पृष्ठ सभी एक्सपोर्ट पाथ को कवर करता है: फ़ाइल‑आधारित सहेजना, इन‑मेमोरी बफ़र आउटपुट, फ़ॉर्मेट‑विशिष्ट विकल्प, और सामान्य डाउनस्ट्रीम टार्गेट्स (Three.js, Babylon.js, मॉडल व्यूअर्स, और गेम इंजन) के लिए सीन तैयार करने के तरीके।.
बेसिक एक्सपोर्ट
कॉल scene.save() फ़ाइल पाथ के साथ। लाइब्रेरी फ़ाइल एक्सटेंशन से आउटपुट फ़ॉर्मेट का अनुमान लगाती है:
import { Scene } from '@aspose/3d';
const scene = new Scene();
scene.open('input.obj'); // use a supported format (OBJ, glTF, GLB, STL, 3MF, COLLADA)
scene.save('output.glb'); // GLB (binary glTF)
scene.save('output.stl'); // STL
scene.save('output.dae'); // COLLADA
scene.save('output.3mf'); // 3MF
GLB में एक्सपोर्ट करना (वेब और गेम्स के लिए अनुशंसित)
GLB (बाइनरी glTF 2.0) एक एकल स्व‑समाहित फ़ाइल है जिसमें सभी मेष डेटा, मैटेरियल्स और टेक्सचर एम्बेड होते हैं। यह वेब व्यूअर्स (Three.js, Babylon.js, model‑viewer) और गेम इंजनों (Godot, Unity इम्पोर्टर के माध्यम से) के लिए अनुशंसित आउटपुट फ़ॉर्मेट है:
import { Scene } from '@aspose/3d';
import { GltfSaveOptions } from '@aspose/3d/formats/gltf';
const scene = new Scene();
scene.open('source.obj');
const opts = new GltfSaveOptions();
opts.binaryMode = true; // produce .glb instead of .gltf + .bin
scene.save('output.glb', opts);
console.log('GLB export complete');सेट binaryMode = true एक स्व-निहित GLB फ़ाइल उत्पन्न करने के लिए। जब false, आउटपुट है एक .gltf एक अलग .bin बफ़र साइडकार।.
glTF में एक्सपोर्ट करना (निरीक्षण के लिए JSON फ़ॉर्मेट)
JSON वैरिएंट (.gltf + .bin) विकास के दौरान उपयोगी है क्योंकि JSON मानव-पठनीय है:
import { Scene } from '@aspose/3d';
import { GltfSaveOptions } from '@aspose/3d/formats/gltf';
const scene = new Scene();
scene.open('input.dae'); // COLLADA is fully supported; FBX is not wired into scene.open()
const opts = new GltfSaveOptions();
opts.binaryMode = false; // JSON + .bin sidecar
scene.save('output.gltf', opts);STL में एक्सपोर्ट करना (3D प्रिंटिंग वर्कफ़्लो)
STL केवल ज्योमेट्री (कोई मैटेरियल नहीं, कोई एनीमेशन नहीं) है। यह 3D प्रिंटिंग स्लाइसरों के लिए मानक एक्सचेंज फ़ॉर्मेट है:
import { Scene } from '@aspose/3d';
import { StlSaveOptions } from '@aspose/3d/formats/stl';
const scene = new Scene();
scene.open('model.obj');
const opts = new StlSaveOptions();
opts.binaryMode = true; // binary STL is more compact than ASCII
scene.save('output.stl', opts);सेट binaryMode = false ASCII STL उत्पन्न करने के लिए, जो टेक्स्ट-पठनीय है लेकिन बड़ा होता है।.
FBX में एक्सपोर्ट करना (DCC टूल वर्कफ़्लो)
नोट: लाइब्रेरी में FBX इम्पोर्टर और एक्सपोर्टर क्लासेज मौजूद हैं, लेकिन FBX फ़ॉर्मेट ऑटो-डिटेक्शन में नहीं जोड़ा गया है scene.open() या scene.save(). कॉलिंग scene.save('output.fbx', opts) FBX एक्सपोर्टर को नहीं बुलाएगा — .fbx एक्सटेंशन को सहेजने वाले डिस्पैचर द्वारा पहचाना नहीं जाता और कॉल OBJ आउटपुट पर वापस आ जाएगा। उपयोग करें FbxExporter क्लास को सीधे उपयोग करें यदि आपको FBX I/O चाहिए। फ़ॉर्मेट सपोर्ट टेबल FBX को इस रूप में चिह्नित करती है No* इस कारण से।.
यदि आपको Blender, Maya, या Unreal Engine द्वारा स्वीकार किए गए फ़ॉर्मेट में निर्यात करना है, तो इसके बजाय GLB या COLLADA का उपयोग करें — दोनों पूरी तरह से जुड़े हुए हैं scene.save():
import { Scene } from '@aspose/3d';
import { GltfSaveOptions } from '@aspose/3d/formats/gltf';
const scene = new Scene();
scene.open('input.dae');
// GLB is fully supported and widely accepted by DCC tools
const opts = new GltfSaveOptions();
opts.binaryMode = true;
scene.save('output.glb', opts);इन‑मेमोरी एक्सपोर्ट के साथ saveToBuffer()
सर्वरलेस फ़ंक्शन्स, HTTP प्रतिक्रियाओं, और स्ट्रीमिंग पाइपलाइनों के लिए, सीधे एक Buffer डिस्क पर लिखे बिना:
import { Scene } from '@aspose/3d';
import { GltfSaveOptions } from '@aspose/3d/formats/gltf';
function convertToGlbBuffer(inputPath: string): Buffer {
const scene = new Scene();
scene.open(inputPath);
const opts = new GltfSaveOptions();
opts.binaryMode = true;
return scene.saveToBuffer('glb', opts);
}
// Express.js / HTTP response example
// const glbBuffer = convertToGlbBuffer('model.obj');
// res.setHeader('Content-Type', 'model/gltf-binary');
// res.send(glbBuffer);
saveToBuffer() पहले आर्ग्युमेंट के रूप में फ़ॉर्मेट स्ट्रिंग लेता है (उदाहरण के लिए. 'glb', 'stl', 'obj') और वही विकल्प ऑब्जेक्ट्स जैसा save().
संयोजन openFromBuffer() और saveToBuffer()
किसी भी चरण में डिस्क I/O के बिना पूरी तरह मेमोरी में रूपांतरण पाइपलाइन:
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
import { GltfSaveOptions } from '@aspose/3d/formats/gltf';
function objBufferToGlbBuffer(objData: Buffer): Buffer {
const scene = new Scene();
const loadOpts = new ObjLoadOptions();
loadOpts.enableMaterials = true;
scene.openFromBuffer(objData, loadOpts);
const saveOpts = new GltfSaveOptions();
saveOpts.binaryMode = true;
return scene.saveToBuffer('glb', saveOpts);
}विशिष्ट रेंडरर्स के लिए सीन तैयार करना
Three.js / Babylon.js (वेब)
ये रेंडरर मूल रूप से GLB फ़ाइलें लोड करते हैं। के साथ निर्यात करें binaryMode = true. यदि टेक्सचर स्रोत OBJ से संदर्भित हैं, तो सुनिश्चित करें कि .mtl और इमेज फ़ाइलें लोड करते समय एक ही स्थान पर हों।.
model-viewer (वेब कॉम्पोनेन्ट)
स्वीकार करता है .glb सीधे। Three.js के समान निर्यात सेटिंग्स।.
Godot Engine
Godot के इम्पोर्टर (Project → Import) के माध्यम से GLB आयात करें। उपयोग करें binaryMode = true. Godot स्वाभाविक रूप से glTF 2.0 से PBR मैटेरियल्स का समर्थन करता है।.
Blender
सर्वोत्तम आयात सटीकता के लिए glTF (output.gltf + output.bin) या GLB (output.glb). Blender का glTF 2.0 इम्पोर्टर PBR मैटेरियल्स और एनीमेशन को संभालता है। नोट: FBX आउटपुट के माध्यम से scene.save() समर्थित नहीं है — FBX फ़ॉर्मेट ऑटो-डिटेक्शन को सेव डिस्पैचर में जोड़ा नहीं गया है।.
3D Printing (Slicers: Cura, PrusaSlicer, Bambu Studio)
STL या 3MF में निर्यात करें। जब आपको रंग या सामग्री मेटाडेटा संरक्षित चाहिए तो 3MF का उपयोग करें। अधिकतम संगतता के लिए STL का उपयोग करें।.
निर्यात फ़ॉर्मेट तुलना
| फ़ॉर्मेट | एक्सटेंशन | मैटेरियल्स | एनीमेशन | एकल फ़ाइल | सबसे उपयुक्त |
|---|---|---|---|---|---|
| GLB | .glb | PBR (glTF 2.0) | हाँ | हाँ | वेब, गेम्स, सामान्य डिलीवरी |
| glTF | .gltf | PBR (glTF 2.0) | हाँ | नहीं (+ .bin) | विकास, निरीक्षण |
| STL | .stl | नहीं | नहीं | हाँ | 3D printing, geometry-only |
| FBX | .fbx | Phong/PBR | नहीं* | नहीं* | इम्पोर्टर/एक्सपोर्टर मौजूद हैं लेकिन ऑटो-डिटेक्शन में जोड़े नहीं गए |
| COLLADA | .dae | हाँ | हाँ | हाँ | क्रॉस-DCC एक्सचेंज |
| 3MF | .3mf | रंग/सामग्री | नहीं | हाँ | आधुनिक 3D प्रिंटिंग |
सामान्य निर्यात समस्याएँ
| लक्षण | कारण | समाधान |
|---|---|---|
| आउटपुट GLB व्यूअर में JSON के रूप में खुलता है | binaryMode जैसा है false | सेट opts.binaryMode = true |
| आउटपुट GLB में टेक्सचर गायब हैं | binaryMode सेट नहीं है | सेट opts.binaryMode = true स्वयं-समाहित GLB के लिए |
| STL फ़ाइल में स्लाइसर में कोई रंग नहीं है | STL फ़ॉर्मेट रंग को सपोर्ट नहीं करता | रंग डेटा के लिए 3MF का उपयोग करें |
saveToBuffer खाली बफ़र लौटाता है | फ़ॉर्मेट स्ट्रिंग तर्क गायब या गलत है | फ़ॉर्मेट स्ट्रिंग पास करें, उदाहरण के लिए।. 'glb', 'stl', या 'obj' |
| FBX ब्लेंडर में बिना एनीमेशन के खुलता है | स्रोत फ़ाइल (OBJ/STL) में कोई एनीमेशन नहीं है | एनीमेशन केवल तभी आगे ले जाया जाता है जब वह स्रोत में मौजूद हो |
| आउटपुट फ़ाइल बहुत बड़ी है | स्रोत OBJ में कई डुप्लिकेट वर्टिसेज़ हैं | GLB बाइनरी आउटपुट पहले से ही डिडुप्लिकेट करता है; स्रोत एसेट की गुणवत्ता जाँचें |
See Also
- मॉडल लोडिंग: डिस्क और बफ़र्स से 3D फ़ाइलें लोड करना
- सीन ग्राफ: निर्यात से पहले सीन का निर्माण और संशोधन
- फ़ॉर्मेट समर्थन: पूर्ण रीड/राइट मैट्रिक्स
- API अवलोकन: सभी क्लासेस और एनेमरेशन्स