कैसे Python में 3D मॉडल को अनुकूलित करें

कैसे Python में 3D मॉडल को अनुकूलित करें

समस्या

बड़े 3D मॉडल फ़ाइलें लोड होने और ट्रांसफ़र होने में धीमी हो सकती हैं। जब आप Aspose.3D को Python में उपयोग कर रहे हों, तो फ़ाइल आकार को कम करने और अनावश्यक सीन डेटा को हटाने के लिए व्यावहारिक कदम उठाए जा सकते हैं; मुख्यतः एक कॉम्पैक्ट बाइनरी फ़ॉर्मेट में निर्यात करके और सीन ग्राफ़ से अप्रयुक्त नोड्स को हटाकर।.

पूर्वापेक्षाएँ

  • Python 3.7 या बाद का संस्करण
  • aspose-3d-foss पैकेज स्थापित किया गया via pip install aspose-3d-foss
  • एक 3D इनपुट फ़ाइल (OBJ, STL, FBX, glTF, या 3MF)

ऑप्टिमाइज़ेशन तकनीकें

कॉम्पैक्ट बाइनरी फ़ॉर्मेट में परिवर्तित करें

फ़ाइल आकार कम करने के सबसे प्रभावी तरीकों में से एक है सीन को glTF बाइनरी में निर्यात करना (.glb). GLB फ़ॉर्मेट जियोमेट्री और मैटेरियल को एकल बाइनरी फ़ाइल में पैक करता है, जो टेक्स्ट-आधारित फ़ॉर्मेट जैसे OBJ या ASCII FBX की तुलना में काफी छोटा और लोड होने में तेज़ होता है।.

from aspose.threed import Scene, FileFormat

scene = Scene.from_file("model.obj")
scene.save("model.glb", FileFormat.GLTF2_BINARY)

मेशेज़ की जाँच और गिनती करें

प्रोसेसिंग से पहले, यह समझना उपयोगी होता है कि सीन में कितने मेश नोड्स हैं। यह अप्रत्याशित रूप से बड़े या जटिल सीन की पहचान करने में मदद करता है।.

from aspose.threed import Scene
from aspose.threed.entities import Mesh

scene = Scene.from_file("model.obj")

mesh_count = 0
for node in scene.root_node.child_nodes:
    if isinstance(node.entity, Mesh):
        mesh_count += 1
        print(f"  Mesh '{node.name}': {len(node.entity.control_points)} vertices, "
              f"{node.entity.polygon_count} polygons")

print(f"Total meshes: {mesh_count}")

अप्रयुक्त (बहिष्कृत) नोड्स हटाएँ

बहिष्कृत के रूप में चिह्नित नोड्स रेंडर नहीं होते हैं। निर्यात के दौरान इन नोड्स की पहचान करके उन्हें छोड़ने से सीन का फुटप्रिंट कम हो जाता है। The excluded attribute एक प्रॉपर्टी है on Entity, मेथड कॉल नहीं है।.

from aspose.threed import Scene
from aspose.threed.entities import Mesh

scene = Scene.from_file("model.obj")

active_nodes = []
for node in scene.root_node.child_nodes:
    entity = node.entity
    if entity is not None and not entity.excluded:
        active_nodes.append(node.name)

print(f"Active (non-excluded) nodes: {active_nodes}")

कोड उदाहरण

यह उदाहरण एक सीन लोड करता है, मेष आँकड़े रिपोर्ट करता है, और कॉम्पैक्ट GLB फ़ॉर्मेट में सहेजता है: Aspose.3D के माध्यम से उपलब्ध मुख्य व्यावहारिक अनुकूलन।.

from aspose.threed import Scene, FileFormat
from aspose.threed.entities import Mesh

# Load the input model
scene = Scene.from_file("input.obj")

# Inspect mesh count and vertex totals
total_vertices = 0
for node in scene.root_node.child_nodes:
    if isinstance(node.entity, Mesh):
        mesh = node.entity
        total_vertices += len(mesh.control_points)

print(f"Total vertices before export: {total_vertices}")

# Save to compact binary GLB: smaller and faster to load than OBJ
scene.save("output.glb", FileFormat.GLTF2_BINARY)
print("Saved as GLB (binary glTF)")

ऑप्टिमाइज़ेशन स्कोप पर नोट्स

Aspose.3D मेष डीसिमेशन या पॉलीगॉन रिडक्शन एल्गोरिदम प्रदान नहीं करता है। फ़ाइल आकार में कमी मुख्यतः निम्नलिखित के माध्यम से प्राप्त होती है:

  • बाइनरी फ़ॉर्मेट में निर्यात (OBJ या ASCII FBX के बजाय GLB)
  • अपने प्रोसेसिंग लॉजिक के दौरान बाहर रखे गए या खाली नोड्स को छोड़ना

विशिष्ट प्रतिशत गति वृद्धि या मेमोरी कमी के दावे आपके इनपुट डेटा पर निर्भर करते हैं और सामान्यतः गारंटी नहीं दी जा सकती।.

संबंधित देखें

 हिन्दी