Python में 3D दृश्यों को कैसे बचाएं

Python में 3D दृश्यों को कैसे बचाएं

Aspose.3D FOSS for Python आपको एक फ़ॉक्स को बचाने की अनुमति देता है। Scene किसी भी समर्थन आउटपुट प्रारूप का उपयोग एकल के साथ Scene.save() फ़ॉर्मेट डिटेक्शन स्वचालित है जब आप एक फ़ाइल मार्ग पार करते हैं; उन्नत विकल्पों जैसे कि बाइनरी आउटपुट या संरचना इनबडिंग के लिए, आप फ़ैक्ट-विशिष्ट सहेजें विकल्प वस्तु प्रदान करते है।.

कदम-दर-चरण गाइड

चरण 1: पैकेज स्थापित करें

PyPI से Aspose.3D FOSS स्थापित करें. कोई मूल पुस्तकालय की आवश्यकता नहीं है.

asposefoss/3d is not yet published — build from source until it ships. See the project README for build instructions.

Python संस्करणों का समर्थन किया गया है: 3.7, 3.8, 3.9, 3.10, 3.11, 3.12.


चरण 2: आवश्यक कक्षाओं का आयात

कम से कम आपको जरूरत है। Scene. फ़ॉर्मेट-विशिष्ट निर्यातक या सहेजें विकल्प वर्ग केवल तभी आयात करें जब आपको गैर-डिफ़ॉल्ट व्यवहार की आवश्यकता होती है।.

from aspose.threed import Scene

विशिष्ट विकल्पों के लिए:

from aspose.threed.formats.gltf import GltfSaveOptions, GltfExporter
from aspose.threed.formats.stl import StlFormat, StlSaveOptions
from aspose.threed.formats.fbx import FbxExporter, FbxSaveOptions
from aspose.threed.formats.collada import ColladaExporter, ColladaSaveOptions

चरण 3: एक दृश्य लोड करें

डिस्क से मौजूदा दृश्य को लोड करें Scene.from_file(). पुस्तकालय फ़ाइल एक्सटेंशन से स्वचालित रूप से स्रोत प्रारूप का पता लगाता है. इसके बजाय, स्क्रैच से एक दृश्य बनाने के लिए, देखें Python में एक मेश कैसे बनाएं.

# Load from an existing file — format auto-detected from extension
scene = Scene.from_file("input.obj")

इसके अलावा, स्पष्ट विकल्पों के साथ एक दृश्य खोलने के लिए Scene.open():

from aspose.threed import Scene

scene = Scene()
scene.open("input.fbx")

चरण 4: STL पर बचाएं

कॉल करें Scene.save() A के साथ .stl डिफ़ॉल्ट रूप से आउटपुट ASCII STL है. एक बाइनरी STl (छोटे फ़ाइल, कोई मानव-पढ़ने योग्य शीर्षक) का उपयोग करने के लिए लिखें StlSaveOptions.

# ASCII STL — format detected from the .stl extension
scene.save("output.stl")

# Binary STL — smaller file size
from aspose.threed.formats.stl import StlFormat, StlSaveOptions

stl_format = StlFormat()
options = stl_format.create_save_options()
options.binary_mode = True
scene.save("output_binary.stl", options)

चरण 5: GLTF या GLB में बचत करें

GLTF 2.0 फ़ाइलों का उपयोग करके निर्यात किया जा सकता है GltfExporter और GltfSaveOptions.सेट binary_mode = True एक स्व-निर्मित उत्पाद बनाने के लिए .glb बाइनरी पैकेज; सेट binary_mode = False JSON-आधारित के लिए .gltf फ़ॉर्मेट।.

import io
from aspose.threed.formats.gltf import GltfExporter, GltfSaveOptions

# Text glTF
options = GltfSaveOptions()
options.binary_mode = False
options.file_name = "output.gltf"

exporter = GltfExporter()
with open("output.gltf", "wb") as f:
    stream = io.BytesIO()
    exporter.export(scene, stream, options)
    f.write(stream.getvalue())

# Binary GLB
options_glb = GltfSaveOptions()
options_glb.binary_mode = True
options_glb.file_name = "output.glb"

stream_glb = io.BytesIO()
exporter.export(scene, stream_glb, options_glb)
with open("output.glb", "wb") as f:
    f.write(stream_glb.getvalue())

चरण 6: FBX पर सहेजें

लागू नहीं किया गया: FbxExporter.save() और FbxExporter.save_to_stream() उठाए NotImplementedError FBX निर्यात Aspose.3D FOSS में उपलब्ध नहीं है Python के लिए इस समय।.

GLB, OBJ, STL या Collada (DAE) प्रारूपों का उपयोग करें. कार्य करने के लिए निर्यात विकल्पों के चरण 4, 5 और 7 देखें.

# The following code raises NotImplementedError in the current release:
# from aspose.threed.formats.fbx import FbxExporter, FbxSaveOptions
# exporter = FbxExporter()
# exporter.save(scene, "output.fbx", options)  # raises NotImplementedError

# Use a supported format instead:
scene.save("output.glb")   # binary GLB — recommended
scene.save("output.obj")   # Wavefront OBJ
scene.save("output.stl")   # STL

चरण 7: OBJ या Collada (DAE) पर सहेजें

OBJ और Collada के लिए, फ़ाइल मार्ग को सीधे पार करें Scene.save().पुस्तकालय विस्तार से प्रारूप का पता लगाता है।.

# OBJ — format auto-detected from .obj extension
scene.save("output.obj")

# Collada DAE — with material and coordinate-system options
from aspose.threed.formats.collada import ColladaExporter, ColladaSaveOptions

options = ColladaSaveOptions()
options.enable_materials = True
options.flip_coordinate_system = False
options.indented = True

exporter = ColladaExporter()
exporter.export(scene, open("output.dae", "wb"), options)

सामान्य समस्याएं और सुधार

खाली फ़ाइल के बाद scene.save() यह आमतौर पर दृश्य के जड़ कोड में कोई बच्चे का नोड नहीं होता है जिसमें भूमी होती है. सुनिश्चित करें कि प्रत्येक मश नॉड से जुड़ा हुआ है scene.root_node कॉल करने से पहले save.चेक करें len(scene.root_node.child_nodes) दृश्य के निर्माण के बाद।.

AttributeError जब मस्जिद का निर्माण किया जाता है के लिए Mesh क्लास स्टोरों को एक आंतरिक नियंत्रण बिंदु सूची के रूप में रखा जाता है. मशीन निर्माण पैटर्न के लिए, संदर्भित करें Python में एक मेश कैसे बनाएं लेख जो पॉलीगोन के निर्माण, रीढ़ की हड्डी तत्वों और यूवी डेटा को कवर करता है।.

जीपीएस की कीमत अपेक्षा से ज्यादा है। बाइनरी GLB सभी भूमेट्री और संरचना डेटा को शामिल करता है. यदि GltfSaveOptions.flip_tex_coord_v सेट किया गया है True, एक अतिरिक्त कोड-फ्लैप पास शामिल है. इसे सेट करें False यदि आपको V-एक्सिट टेक्स्टिंग फ्लिप करने की आवश्यकता नहीं है।.

FBX निर्यात वर्तमान रिलीज में उपलब्ध नहीं है FbxExporter.save() उठाए NotImplementedError. FBX आयात (खाली) .fbx फ़ाइल) सामान्य रूप से काम करता है, लेकिन FBX में निर्यात नहीं किया जाता है. इसके बजाय GLB, OBJ, STL या Collada में परिवर्तित करें.

Collada DAE सामग्री शामिल नहीं है सेट ColladaSaveOptions.enable_materials = True (यह है False (ख) निर्यात से पहले।.

अक्सर पूछे जाने वाले प्रश्न

क्या प्रारूपों के लिए Aspose.3D FOSS Python निर्यात कर सकते हैं?

पुस्तकालय के लिए निर्यात का समर्थन करता है: STL, glTF 2.0 (टेक्स्ट और बाइनरी GLB), OBJ, और Collada (DAE). फ़ॉर्मेट डिटेक्शन स्वचालित होता है जब आप एक फ़ाइल-पथ श्रृंखला पार कर रहे हैं Scene.save();पुस्तकालय सही निर्यातक का चयन करने के लिए विस्तार को पढ़ता है।.

नोट्स: FBX निर्यात है लागू नहीं किया गया वर्तमान में रिलीज के दौरान - FbxExporter.save() उठाए NotImplementedError.इसके बजाय GLB, OBJ, STL या Collada का उपयोग करें।.

क्या कोई स्ट्रीमिंग निर्यात एपीआई है जो डिस्क पर लिखने से बचता है?

हाँ।. GltfExporter.export(scene, stream, options) किसी को लिखें io.BytesIO आप फ़ाइल सिस्टम को छूने के बिना एक वेब प्रतिक्रिया या आगे प्रसंस्करण में सीधे स्मृति बफर को स्थानांतरित कर सकते हैं।.

मैं एक दृश्य को एक प्रारूप से दूसरे में कैसे परिवर्तित करता हूं?

दृश्य के साथ लोड करें Scene.from_file("input.fbx") बचाए जाने के साथ scene.save("output.gltf").पुस्तकालय स्मृति में रूपांतरण का प्रबंधन करता है; कोई मध्यवर्ती फ़ाइलों की आवश्यकता नहीं है।.

क्या मैं अलग फ़ाइलों में कई उप-स्केन को सहेज सकता हूं?

पहुंच scene.sub_scenes प्रत्येक उप-स्केन के ऊपर इटेरेट करने के लिए, एक नया बनाएं Scene वस्तु, संबंधित नोड्स जोड़ें और कॉल करें save() हर पर।.

क्या है Scene.save() मौजूदा फ़ाइलों को चुपचाप लिखें।?

हाँ. पुस्तकालय एक त्रुटि नहीं उठाता है यदि लक्ष्य फ़ाइल पहले से ही मौजूद है; यह इसे अतिरिक्त लिखता हैं. अपने कोड में फ़ील्ड-अस्तित्व की जांच जोड़ें अगर आपको दुर्घटनाग्रस्त अतिरंजित के खिलाफ सुरक्षा करने की आवश्यकता है.

देखें भी

 हिन्दी