फ़ॉर्मेट समर्थन
Aspose.3D FOSS for Python सात 3D फ़ॉर्मेट्स को एक ही इन‑मेमोरी सीन प्रतिनिधित्व का उपयोग करके पढ़ और लिख सकता है। लाइब्रेरी प्रत्येक फ़ॉर्मेट को एक सामान्य Scene ऑब्जेक्ट में लोड करता है और सहेजते समय उस ऑब्जेक्ट को लक्ष्य फ़ॉर्मेट में सीरियलाइज़ करता है। इसका मतलब है कि OBJ से लोड किया गया सीन सीधे glTF में सहेजा जा सकता है बिना किसी मध्यवर्ती रूपांतरण चरणों के।.
समर्थित फ़ॉर्मेट्स
| फ़ॉर्मेट | एक्सटेंशन | पढ़ें | लिखें | विकल्प वर्ग | नोट्स |
|---|---|---|---|---|---|
| Wavefront OBJ | .obj | हाँ | हाँ | ObjLoadOptions | .mtl मैटेरियल लोडिंग समर्थित |
| STL (binary) | .stl | हाँ | हाँ | StlSaveOptions | Binary और ASCII पढ़ना; सहेजना डिफ़ॉल्ट रूप से binary |
| STL (ASCII) | .stl | हाँ | हाँ | StlSaveOptions | राउंड-ट्रिप सत्यापित |
| glTF 2.0 | .gltf | हाँ | हाँ | GltfSaveOptions | पूर्ण सीन ग्राफ, सामग्री, और एनीमेशन संरक्षित |
| GLB (binary glTF) | .glb | हाँ | हाँ | GltfSaveOptions | एकल-फ़ाइल बाइनरी कंटेनर |
| COLLADA | .dae | हाँ | हाँ | ColladaLoadOptions / ColladaSaveOptions | सीन पदानुक्रम और सामग्री |
| 3MF | .3mf | हाँ | हाँ | ThreeMfSaveOptions | ऐडिटिव मैन्युफैक्चरिंग फ़ॉर्मेट |
| FBX | .fbx | आंशिक | नहीं | N/A | टोकनाइज़र काम कर रहा है; पूर्ण पार्सर प्रगति में हैउत्पादन-तैयार नहीं) |
OBJ फ़ॉर्मेट
Wavefront OBJ स्थैतिक मेषों के लिए सबसे अधिक समर्थित इंटरचेंज फ़ॉर्मेट है। Aspose.3D FOSS ज्यामिति (वर्टिसेज़, नॉर्मल्स, यूवी कॉर्डिनेट्स, और बहुभुज फेस) को लोड करता है और वैकल्पिक रूप से साथ वाली .mtl सामग्री फ़ाइल।.
ObjLoadOptions
| प्रॉपर्टी | प्रकार | डिफ़ॉल्ट | विवरण |
|---|---|---|---|
enable_materials | bool | True | पार्स करें .mtl OBJ हेडर द्वारा संदर्भित फ़ाइल |
flip_coordinate_system | bool | False | Y‑up राइट‑हैंडेड से Z‑up राइट‑हैंडेड में बदलें |
normalize_normal | bool | True | सभी आयातित सतह सामान्यों को इकाई लंबाई में सामान्यीकृत करें |
scale | float | 1.0 | सभी वर्टेक्स स्थितियों पर लागू समान स्केल फ़ैक्टर |
OBJ फ़ाइल लोड करना
from aspose.threed import Scene
from aspose.threed.formats import ObjLoadOptions
options = ObjLoadOptions()
options.enable_materials = True
options.flip_coordinate_system = False
options.scale = 1.0
scene = Scene()
scene.open("model.obj", options)
print(f"Top-level nodes: {len(scene.root_node.child_nodes)}")OBJ में सहेजना
scene.save("output.obj")OBJ निर्यात वर्टेक्स स्थितियों और बहुभुज चेहरों को लिखता है। यदि दृश्य में LambertMaterial या PhongMaterial ऑब्जेक्ट्स, लाइब्रेरी एक सहायक .mtl फ़ाइल स्वचालित रूप से।.
STL फ़ॉर्मेट
STL (STereoLithography) त्रिकोणीय मेष को फ़ैसेट्स की एक अनइंडेक्स्ड सूची के रूप में संग्रहीत करता है। पढ़ने के लिए बाइनरी और ASCII दोनों रूपों का समर्थन किया जाता है; सहेजते समय लाइब्रेरी डिफ़ॉल्ट रूप से बाइनरी का उपयोग करती है।.
StlSaveOptions
StlSaveOptions कोई अनिवार्य फ़ील्ड नहीं हैं। इसे इंस्टैंसिएट करके पास करें scene.save():
from aspose.threed.formats import StlSaveOptions
opts = StlSaveOptions()
scene.save("output.stl", opts)राउंड-ट्रिप उदाहरण
from aspose.threed import Scene
##Load
scene = Scene.from_file("model.stl")
##Inspect
for node in scene.root_node.child_nodes:
if node.entity:
print(f"{node.name}: {len(node.entity.control_points)} vertices")
##Save
scene.save("roundtrip.stl")STL केवल त्रिकोणीय ज्यामिति संग्रहीत करता है, जिसमें फ़ैसेट नॉर्मल के अलावा कोई नॉर्मल नहीं, कोई UV निर्देशांक नहीं, कोई सामग्री नहीं, और कोई पदानुक्रम नहीं होता। यदि आपके दृश्य में क्वाड्स या उच्च-क्रम के बहुभुज हैं, तो उन्हें सहेजते समय स्वचालित रूप से त्रिकोणीकृत किया जाता है।.
glTF / GLB फ़ॉर्मेट
glTF 2.0 आधुनिक 3D एक्सचेंज के लिए अनुशंसित फ़ॉर्मेट है। यह पूर्ण सीन ग्राफ (नोड हायरार्की, नामित नोड्स, ट्रांसफ़ॉर्म्स), मैटेरियल्स (LambertMaterial, PhongMaterial → PBR रूपांतरण), और एनीमेशन क्लिप्स। GLB एकल-फ़ाइल बाइनरी कंटेनर वैरिएंट है।.
GltfSaveOptions
from aspose.threed.formats import GltfSaveOptions
opts = GltfSaveOptions()
scene.save("output.gltf", opts) # JSON + external .bin
scene.save("output.glb", opts) # Self-contained binaryमैटेरियल समर्थन
Aspose.3D FOSS सामग्री को glTF में मैप किया जाता है pbrMetallicRoughness निर्यात पर:
from aspose.threed import Scene
from aspose.threed.shading import PhongMaterial
from aspose.threed.utilities import Vector3
scene = Scene()
node = scene.root_node.create_child_node("object")
mat = PhongMaterial()
mat.diffuse_color = Vector3(0.8, 0.2, 0.2) # red
mat.specular_color = Vector3(1.0, 1.0, 1.0)
mat.shininess = 50.0
node.material = mat
scene.save("colored.gltf")glTF आउटपुट को सत्यापित करना
import json
with open("output.gltf") as f:
data = json.load(f)
print(f"Asset version : {data['asset']['version']}")
print(f"Nodes : {len(data.get('nodes', []))}")
print(f"Meshes : {len(data.get('meshes', []))}")COLLADA फ़ॉर्मेट
COLLADA (.dae) एक XML-आधारित फ़ॉर्मेट है जो सीन पदानुक्रम, सामग्री, कई UV चैनल, और कंकाल एनीमेशन का समर्थन करता है। Aspose.3D FOSS पूर्ण नोड ट्री और सामग्री परिभाषाओं को पढ़ता और लिखता है।.
from aspose.threed import Scene
##Load a COLLADA file
scene = Scene.from_file("model.dae")
##Inspect top-level nodes
for node in scene.root_node.child_nodes:
print(f" {node.name}")
##Save back to COLLADA
scene.save("output.dae")जब आपको नामित नोड्स और सामग्री के साथ पदानुक्रमों को बिना किसी डेटा हानि के राउंड‑ट्रिप करना हो, तो COLLADA एक अच्छा विकल्प है।.
3MF Format
3MF (3D Manufacturing Format) targets additive manufacturing (3D printing) workflows. It stores triangle geometry, colour, and print-specific metadata in a ZIP-based container.
from aspose.threed import Scene
from aspose.threed.formats import ThreeMfSaveOptions
scene = Scene.from_file("part.stl") # Load from STL
opts = ThreeMfSaveOptions()
scene.save("part.3mf", opts) # Write as 3MF3MF is the recommended export format when targeting slicer software (Cura, PrusaSlicer, Bambu Studio, etc.).
FBX फ़ॉर्मेट
स्थिति: प्रगति में (उत्पादन‑तैयार नहीं)।.
FBX (.fbx) समर्थन Aspose.3D FOSS में वर्तमान में टोकनाइज़र चरण पर है। बाइनरी FBX टोकनाइज़र फ़ाइल संरचना को पार्स कर सकता है, लेकिन पूर्ण नोड, मेष, और सामग्री पार्सर में ज्ञात बग हैं और यह पूर्ण नहीं है। FBX पढ़ने के परिणामों को प्रयोगात्मक माना जाना चाहिए।.
इस रिलीज़ के साथ उत्पादन पाइपलाइन में FBX का उपयोग न करें।. यदि आपका स्रोत डेटा FBX में है, तो इसे पहले Blender या FBX Review का उपयोग करके glTF या OBJ में परिवर्तित करें, फिर Aspose.3D FOSS के साथ लोड करें।.
FBX लिखना समर्थित नहीं है।.
फ़ॉर्मेट स्वचालित पहचान
Scene.from_file() और scene.open() फ़ाइल एक्सटेंशन और जहाँ उपलब्ध हो, फ़ाइल हेडर में मैजिक बाइट्स का उपयोग करके फ़ॉर्मेट को स्वचालित रूप से पहचानें:
from aspose.threed import Scene
##The library detects each format without being told explicitly
scene_obj = Scene.from_file("model.obj")
scene_glb = Scene.from_file("model.glb")
scene_stl = Scene.from_file("model.stl")
scene_dae = Scene.from_file("model.dae")
scene_3mf = Scene.from_file("model.3mf")यदि एक्सटेंशन अनुपलब्ध या अस्पष्ट है, तो लाइब्रेरी हेडर निरीक्षण (magic bytes) पर वापस आती है। असमर्थित या अपरिचित फ़ाइलें एक IOError विवरणात्मक संदेश के साथ।.
टिप्स और सर्वोत्तम प्रथाएँ
- आधुनिक पाइपलाइन के लिए glTF या GLB का उपयोग करें।. glTF पूर्ण सीन ग्राफ, मैटेरियल्स और एनीमेशन डेटा को संरक्षित रखता है। यह गेम इंजन और वेब व्यूअर्स के साथ इंटरचेंज के लिए सबसे पूर्ण फ़ॉर्मेट है।.
- अधिकतम संगतता के लिए OBJ का उपयोग करें।. OBJ लगभग हर 3D टूल द्वारा समर्थित है। यह स्थिर मेष तक सीमित है लेकिन अत्यंत पोर्टेबल है।.
- प्रिंटिंग के लिए 3MF का उपयोग करें।. 3MF carries colour, orientation hints, and print settings that STL cannot express.
- जब तक FBX प्रोडक्शन‑रेडी न हो, इसका उपयोग न करें।. रिलीज़ नोट्स देखें कि किस संस्करण में पूर्ण FBX पार्सिंग पूरी हो गई है।.
- सेव एक्सटेंशन को फ़ॉर्मेट से मिलाएँ।. को पास न करें
.gltfएक्सटेंशन जब आप बाइनरी GLB चाहते हैं; उपयोग करें.glbस्पष्ट रूप से। एक्सटेंशन निर्धारित करता है कि कौन सा सीरियलाइज़र उपयोग किया जाता है।. - बहुभुज संगतता जाँचें।. STL और 3MF को त्रिभुजों की आवश्यकता होती है। क्वाड्स और N-गॉन को सहेजने पर स्वचालित रूप से त्रिकोणित किया जाता है, लेकिन वर्टेक्स गिनती बढ़ जाएगी। यदि आपको त्रिकोणन को नियंत्रित करने की आवश्यकता है, तो कॉल करें
mesh.triangulate()सहेजने से पहले।.