Renderirajte 3D modele s Aspose.3D
Pregled
Aspose.3D omogućuje renderiranje i manipulaciju 3D modelima u Python aplikacijama. Pruža osnovne klase poput Scene, Node, Mesh, Geometry, Camera, i Light za izgradnju i modificiranje 3D sadržaja za python 3d vizualizaciju, python 3d igru i 3d python library primjere upotrebe.
API podržava scene konstruiranje grafa putem Node i Entity hijerarhija, definicija geometrije kroz Mesh i Geometry, i postavljanje kamere/svjetla za renderiranje. AnimationClip, AnimationNode, AnimationChannel,Mogućnosti animacije uključuju KeyframeSequence , i AssetInfo,za pokretanje temeljeno na ključnim okvirima (pristup samo za čitanje; izvoz animacije još nije implementiran). Metapodaci sredstava dostupni su putem scene , dok A3DObject objekti nasljeđuju od INamedObject i property upravljanje.
Ključne značajke
Aspose.3D pruža Python API za rad s 3D modelima, podržavajući osnovne operacije kroz klase poput Scene, Mesh, Node, Geometry, i AnimationClip. Omogućuje programerima učitavanje, manipulaciju i izvoz 3D sadržaja za python 3d vizualizaciju, python 3d igru i 3d python engine radne tokove.
- Podrška za više 3D formata datoteka, uključujući GLTF2 i WAVEFRONT_OBJ putem
FileFormatklase omogućuje neometan uvoz i izvoz u 3d python igri i 3d python vizualizacijskim projektima. FBX podrška je eksperimentalna (samo tokenizator; potpuni parser je u razvoju). - Izravna manipulacija geometrijom mreže putem
MeshiGeometryklase omogućuju preciznu kontrolu nad vrhovima, poligonima i svojstvima renderiranja poput sjena i vidljivosti. - Strukture animacije kroz
AnimationClip,AnimationNode, iKeyframeSequenceklase se mogu pregledavati i izgraditi; napomena da izvoz animacije još nije implementiran u ovoj verziji. - Upravljanje hijerarhijom scene pomoću
Node,Entity, iA3DObjectpruža strukturiranu organizaciju 3D objekata, kamera i svjetala za složene python 3d vizualizacijske scene. - Upravljanje svojstvima i metapodacima putem
PropertyCollection,AssetInfo, iINamedObjectpodržava prilagođene atribute i metapodatke na razini dokumenta poput naslova, autora i ključnih riječi.
Preduvjeti
Za korištenje Aspose.3D za 3D python vizualizaciju, osigurajte da je Python 3.7 ili noviji instaliran. Instalirajte library koristeći pip s naredbom pip install aspose-3d-foss. Paket pruža osnovne klase poput Scene, Mesh, Node, Entity, Geometry, Camera, Light, i FileFormat za rad s 3d python igrom i 3d python engine radnim tokovima.
pip install aspose-3d-fossimport aspose.threed
print('Installation successful')Primjeri koda
U Aspose.3D za Python, “rendering” 3D scene znači izvoz u podržani izlazni format poput OBJ, GLTF2, ili STL. Rasterizacija temeljena na pikselima nije podržana; koristite scene.save() za proizvodnju 3D izlaznih datoteka.
from aspose.threed import Scene, FileFormat, Mesh, Node
# Load a scene from file
scene = Scene.from_file("model.obj")
# Inspect the root node
root = scene.root_node
for child in root.child_nodes:
if isinstance(child.entity, Mesh):
print(f"Mesh: {child.name}, control points: {len(child.entity.control_points)}")
# Export to GLTF 2.0 binary — use extension-based detection or FileFormat.GLTF2() factory
# Note: FileFormat.GLTF2_BINARY is None (stub constant, not implemented).
# Use the .glb extension for auto-detection, or FileFormat.GLTF2() for explicit format.
scene.save("output.glb")
print("Scene exported to output.glb")Najbolje prakse
Pri korištenju Aspose.3D za python 3d vizualizaciju ili izgradnju python 3d game enginea, dajte prednost učinkovitosti memorije ponovnim korištenjem Scene i Mesh instanci gdje je moguće. Izbjegavajte stvaranje suvišnih objekata u uskim petljama, posebno pri obradi velikog broja datoteka za grupnu 3d python konverziju.
- Ponovno koristite
Sceneobjekte kroz cikluse izvoza umjesto stvaranja novih po datoteci. - Preferirajte
Meshponovno korištenje s dijeljenim kontrolnim točkama za statičku geometriju kako biste smanjili trošak alokacije. - Koristite opcije spremanja specifične za format (npr.,
GltfSaveOptions,StlSaveOptions) za kontrolu načina izlaza i rukovanja koordinatama. - Koristite BytesIO tokove za izvozne radne tokove u memoriji kako biste izbjegli uska grla disk‑I/O‑a u python 3d vizualizacijskim cjevovodima.
Rješavanje problema
Ovaj odjeljak pokriva uobičajene probleme koji se javljaju pri korištenju Aspose.3D za 3D python vizualizaciju i radne tokove razvoja igara koji uključuju Scene, Node, Mesh, i AnimationClip klase.
Operacije koje nisu podržane bacaju NotImplementedError
Operacije poput izvoza putem određenih izvoznika i metoda povezanih s renderiranjem poput get_entity_renderer_key() nisu implementirane i podižu NotImplementedError. To se događa jer je osnovna funkcionalnost u trenutnom version od Aspose.3D za Python nekompletna. Kako biste izbjegli pogreške u izvođenju, provjerite dostupnost metoda u odnosu na API površinu prije pozivanja nepodržanih metoda. Koristite Scene.from_file() i scene.save() za podržane radne tokove učitavanja i izvoza.
Mesh metode koje bacaju NotImplementedError
Sljedeće Mesh metode su deklarirane u API sučelju, ali podižu NotImplementedError u ovom izdanju. Nemojte ih pozivati na bilo kojem učitanom ili konstruiranom Mesh instanci:
| Metoda | Napomene |
|---|---|
mesh.optimize() | Optimizacija mreže — još nije implementirana |
mesh.do_boolean(...) | Generička boolean operacija — koristite specifične metode ispod |
mesh.union(other) | CSG unija — još nije implementirana |
mesh.difference(other) | CSG razlika — još nije implementirana |
mesh.intersect(other) | CSG presjek — još nije implementirana |
mesh.is_manifold() | Test mnogostrukosti — još nije implementiran |
Mesh(height_map, ...) | Varijanta konstrukcije visinske karte — još nije implementirana |
Ako vaš radni tok zahtijeva ove operacije, obradite geometriju u biblioteci poput trimesh ili open3d i ponovo uvezite rezultat koristeći Scene.from_file() ili konstrukcijom novog Mesh od sirovog control_points i polygons.
Značajke animacije su samo za čitanje
Klase povezane s animacijom, poput AnimationClip, AnimationNode, AnimationChannel, i KeyframeSequence mogu se pregledati, ali izvoz animacije nije funkcionalan. Programeri koji grade python 3d game engines ili python 3d visualization tools trebali bi tretirati podatke o animaciji kao samo za čitanje sve dok se ne objavi potpuna podrška izvoza.
Učitavanje teksturnih slika nije podržano
Učitavanje teksturnih slika za materials nije implementirano u Aspose.3D. Čak i ako material properties se postavljaju putem Mesh ili Geometry, mapiranje tekstura neće se pravilno prikazivati. Za izvoz statičkog modela, oslonite se na jednobojne boje ili sjenčanje temeljeno na vrhovima umjesto tekstura temeljenih na slikama.
Camera i Geometry renderiranje nije podržano
taj Camera i Geometry klase podižu NotImplementedError za metode povezane s renderiranjem, poput get_entity_renderer_key(). Dok se ove klase mogu instancirati i konfigurirati, ne mogu se koristiti u pipeline-ima za piksel-rasterizaciju. Upotrijebite Node i Mesh za scene radni tokovi sastavljanja i izvoza.
FAQ
Podržava li Aspose.3D za Python rasterizirani izlaz slike (PNG, JPEG)?
Ne. Aspose.3D za Python ne izvodi rasterizaciju temeljenu na pikselima. “Rendering” u ovoj biblioteci znači izvoz scene u 3D izlazni format poput OBJ, GLTF2, STL ili 3MF koristeći scene.save(). Za izlaz slike, integrirajte s posebnim motorom za renderiranje.
Koji su podržani formati izvoza?
Podržani formati izvoza uključuju OBJ, glTF 2.0 / GLB, STL (binarni i ASCII), COLLADA (DAE) i 3MF. Koristite ekstenziju datoteke prilikom poziva scene.save() za automatsko otkrivanje formata. Za izričitu kontrolu formata, koristite metode tvornice FileFormat.WAVEFRONT_OBJ(), FileFormat.GLTF2(), i FileFormat.MICROSOFT_3MF_FORMAT(). Napomena: konstante u stilu atributa poput FileFormat.GLTF2_BINARY, FileFormat.GLTF, FileFormat.STLASCII, FileFormat.STL_BINARY, i FileFormat.MICROSOFT_3MF su None placeholderi i ne bi se smjeli koristiti. FBX izvoz baci NotImplementedError u trenutnoj verziji.
Mogu li pročitati podatke o animaciji iz učitane 3D datoteke?
Strukture animacije u učitanim datotekama mogu se pristupiti putem AnimationClip, AnimationNode, i srodnim klasama, ali modificiranje ili ponovni izvoz podataka animacije još nije podržano i će izazvati NotImplementedError.
Sažetak API reference
Aspose.3D pruža osnovne klase za manipulaciju 3D scenama u Python, uključujući Scene, Node, Mesh, i Geometry. Scene Programeri koji rade na python 3d igri, python 3d motoru ili python 3d vizualizacijskim projektima mogu koristiti ove klase za programatsko stvaranje i modificiranje 3D sadržaja. The Node klasa služi kao korijenski kontejner, dok scene objekti čine Mesh graf hijerarhiju, i Geometry instance definiraju geometrijske oblike s.
podacima. Podrška za animaciju u Aspose.3D oslanja se na AnimationClip, AnimationNode, AnimationChannel, i KeyframeSequence definirati time-temeljene transformacije. Iako izvoz animacije još nije implementiran, programeri i dalje mogu pregledavati strukture animacije koristeći ove klase. The Extrapolation klasa i ExtrapolationType enum omogućuje kontrolu nad ponašanjem izvan raspona ključnih okvira.
Entity-level properties kao što su vidljivost i bacanje sjena izloženi putem Geometry.visible, Geometry.cast_shadows, i Geometry.receive_shadows. Scene grafički odnosi upravljaju se kroz Entity.parent_node i Entity.parent_nodes, dok Node objekti izlažu GlobalTransform za translation, rotation, i scale. Camera i Light entities nasljeđuju od Entity i podržavaju isključenje putem excluded.
Vidi također
Aspose.3D pruža osnovne klase za manipulaciju 3D modelima u Python, uključujući Scene, Mesh, Node, Geometry, i AnimationClip. Ove klase podržavaju python 3d vizualizaciju, python 3d razvoj igara i 3d python radne tokove putem dosljednog API sučelja.