Render 3D Models with Aspose.3D
Apžvalga
Aspose.3D leidžia atvaizduoti ir manipuliuoti 3D modeliais Python programose. Ji suteikia pagrindines klases, tokias kaip Scene, Node, Mesh, Geometry, Camera, ir Light kurti ir modifikuoti 3D turinį python 3d vizualizacijai, python 3d žaidimui ir 3d python library naudojimo atvejams.
API palaiko scene grafų kūrimą per Node ir Entity hierarchijas, geometrijos apibrėžimą per Mesh ir Geometry, ir kameros/apšvietimo nustatymą atvaizdavimui. Animacijos galimybės apima AnimationClip, AnimationNode, AnimationChannel, ir KeyframeSequence raktų kadrų pagrindu judesiui (tik skaitymo prieiga; animacijos eksportas dar neįgyvendintas). Turto metaduomenys prieinami per AssetInfo, tuo tarpu scene objektai paveldi iš A3DObject ir INamedObject pavadinimui ir property valdymas.
Pagrindinės savybės
Aspose.3D suteikia Python API darbui su 3D modeliais, palaikant pagrindines operacijas per klases kaip Scene, Mesh, Node, Geometry, ir AnimationClip. Tai leidžia kūrėjams įkelti, manipuliuoti ir eksportuoti 3D turinį python 3d vizualizacijai, python 3d žaidimui ir 3d python variklio darbo srautams.
- Daugelio 3D failų formatų palaikymas, įskaitant GLTF2 ir WAVEFRONT_OBJ, per
FileFormatklasę, leidžiančią sklandų importavimą ir eksportavimą 3d python žaidimų ir 3d python vizualizacijos projektuose. FBX palaikymas yra eksperimentinis (tik tokenizatorius; pilnas parseris dar kuriamas). - Tiesioginis tinklelio geometrijos manipuliavimas per
MeshirGeometryklasės leidžia tiksliai valdyti viršūnes, daugiakampius ir atvaizdavimo savybes, tokias kaip šešėliai ir matomumas. - Animacijos struktūros per
AnimationClip,AnimationNode, irKeyframeSequenceklasės gali būti tikrinamos ir kuriamos; atkreipkite dėmesį, kad animacijos eksportas dar neįgyvendintas šioje versijoje. - Scenos hierarchijos valdymas naudojant
Node,Entity, irA3DObjectsuteikia struktūruotą 3D objektų, kamerų ir šviesų organizavimą sudėtingoms python 3d vizualizacijos scenoms. - Savybių ir metaduomenų tvarkymas per
PropertyCollection,AssetInfo, irINamedObjectpalaiko pasirinktinius atributus ir dokumento lygmens metaduomenis, tokius kaip pavadinimas, autorius ir raktiniai žodžiai.
Reikalavimai
Norint naudoti Aspose.3D 3D python vizualizacijai, įsitikinkite, kad Python 3.7 arba vėlesnė versija yra įdiegta. Įdiekite library naudodami pip su komanda pip install aspose-3d-foss. Paketas suteikia pagrindines klases, tokias kaip Scene, Mesh, Node, Entity, Geometry, Camera, Light, ir FileFormat darbui su 3d python žaidimo ir 3d python variklio darbo srautais.
pip install aspose-3d-fossimport aspose.threed
print('Installation successful')Kodo pavyzdžiai
„Aspose.3D“ Python kontekste, „rendering“ 3D scenos reiškia jos eksportavimą į palaikomą išvesties formatą, pvz., OBJ, GLTF2 arba STL. Pikselių pagrindu veikianti rasterizacija nepalaikoma; naudokite scene.save() kurti 3D išvesties failus.
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")Geriausios praktikos
Naudojant Aspose.3D python 3d vizualizacijai arba kuriant python 3d žaidimų variklį, teikite pirmenybę atminties efektyvumui pernaudojant Scene ir Mesh pavyzdžius, kai įmanoma. Venkite kurti perteklinius objektus glaustose cikluose, ypač kai apdorojate daugybę failų paketiniam 3d python konvertavimui.
- Pakartotinai naudokite
Sceneobjektus per eksporto ciklus, o ne kuriant naujus kiekvienam failui. - Teikite pirmenybę
Meshpakartotiniam naudojimui su bendrais valdymo taškais statinei geometrijai, siekiant sumažinti paskirstymo išlaidas. - Naudokite formatui specifines išsaugojimo parinktis (pvz.,
GltfSaveOptions,StlSaveOptions) norint valdyti išvesties režimą ir koordinatų tvarkymą. - Naudokite BytesIO srautus atminties vidiniams eksporto procesams, kad išvengtumėte disko I/O siaurų vietų python 3d vizualizacijos konvejeriuose.
Trikčių šalinimas
Šiame skyriuje aptariamos dažnos problemos, su kuriomis susiduriama naudojant Aspose.3D 3D Python vizualizacijai ir žaidimų kūrimo darbo srautams, susijusius su Scene, Node, Mesh, ir AnimationClip klasės.
Neparama operacijos iškelia NotImplementedError
Operacijos, tokios kaip eksportavimas per tam tikrus eksportuotojus ir vaizdavimo susiję metodai, kaip get_entity_renderer_key() nėra įgyvendintos ir iškelia NotImplementedError. Tai vyksta todėl, kad pagrindinė funkcionalumas dabartinėje version „Aspose.3D“ Python dalis yra neišbaigta. Norint išvengti vykdymo klaidų, patikrinkite metodo prieinamumą API paviršiuje prieš iškviečiant nepalaikomus metodus. Naudokite Scene.from_file() ir scene.save() palaikomoms įkėlimo ir eksporto darbo eigoms.
Mesh metodai, kurie iškelia NotImplementedError
Toliau pateikti Mesh metodai yra deklaruoti API paviršiuje, tačiau sukelia NotImplementedError šiame leidime. Nenaudokite jų jokiam įkeliamam ar sukurtam Mesh objektui:
| Metodas | Pastabos |
|---|---|
mesh.optimize() | Tinklo optimizavimas — dar neįgyvendinta |
mesh.do_boolean(...) | Bendrinė loginė operacija — naudokite žemiau pateiktas konkrečias metodus |
mesh.union(other) | CSG susijungimas — dar neįgyvendinta |
mesh.difference(other) | CSG skirtumas — dar neįgyvendinta |
mesh.intersect(other) | CSG sankirtas — dar neįgyvendinta |
mesh.is_manifold() | Manifo testas — dar neįgyvendinta |
Mesh(height_map, ...) | Aukštų žemėlapio konstruktoriaus variantas — dar neįgyvendinta |
Jei jūsų darbo eiga reikalauja šių operacijų, apdorokite geometriją bibliotekoje, pvz. trimesh arba open3d ir importuokite rezultatą iš naujo naudodami Scene.from_file() arba sukuriant naują Mesh iš neapdoroto control_points ir polygons.
Animacijos funkcijos yra tik skaitymui
Animacijos susijusios klasės, tokios kaip AnimationClip, AnimationNode, AnimationChannel, ir KeyframeSequence gali būti peržiūrimos, tačiau animacijos eksportas neveikia. Kūrėjai, kuriantys python 3d žaidimų variklius arba python 3d vizualizacijos įrankius, turėtų laikyti animacijos duomenis tik skaitymui, kol nebus išleista pilna eksporto palaikymo versija.
Tekstūrų vaizdų įkėlimas nepalaikomas
Kraunamos tekstūros atvaizdai, skirti materials nėra įgyvendinta Aspose.3D. Net jei material properties yra nustatyti per Mesh arba Geometry, tekstūros susiejimas nebus teisingai atvaizduotas. Statiniam modelio eksportui naudokite vientisas spalvas arba viršūnių pagrindu veikiančią apšvietimą, o ne vaizdų pagrindu paremtas tekstūras.
Camera ir Geometry atvaizdavimas nepalaikomas
Klasių Camera ir Geometry klasės išmeta NotImplementedError dėl atvaizdavimo susijusių metodų, tokių kaip get_entity_renderer_key(). Nors šias klases galima sukurti ir sukonfigūruoti, jos negali būti naudojamos pikselių rasterizacijos konvejeriuose. Naudokite Node ir Mesh skirti scene kompozicijos ir eksporto darbo eigoms.
FAQ
Ar Aspose.3D for Python palaiko rasterizuotų vaizdų išvestį (PNG, JPEG)?
Ne. Aspose.3D, skirtas Python, neatlieka pikselių pagrindo rasterizacijos. „Atvaizdavimas“ šioje bibliotekoje reiškia scenos eksportavimą į 3D išvesties formatą, pvz., OBJ, GLTF2, STL arba 3MF, naudojant scene.save(). Vaizdo išvesties atveju integruokite su atskiru atvaizdavimo varikliu.
Kokie eksporto formatai palaikomi?
Palaikomi eksporto formatai yra OBJ, glTF 2.0 / GLB, STL (binarinis ir ASCII), COLLADA (DAE) ir 3MF. Naudokite failo plėtinį kviečiant scene.save() automatinio formato aptikimui. Norint aiškiai kontroliuoti formatą, naudokite gamyklinius metodus FileFormat.WAVEFRONT_OBJ(), FileFormat.GLTF2(), ir FileFormat.MICROSOFT_3MF_FORMAT(). Pastaba: atributų stiliaus konstantos, tokios kaip FileFormat.GLTF2_BINARY, FileFormat.GLTF, FileFormat.STLASCII, FileFormat.STL_BINARY, ir FileFormat.MICROSOFT_3MF yra None bandomieji elementai ir neturėtų būti naudojami. FBX eksportavimas sukelia NotImplementedError esamoje versijoje.
Ar galiu perskaityti animacijos duomenis iš įkelto 3D failo?
Animacijos struktūras įkeltuose failuose galima pasiekti per AnimationClip, AnimationNode, ir susijusias klases, tačiau animacijos duomenų modifikavimas ar pakartotinis eksportavimas dar nepalaikomas ir sukels NotImplementedError.
API nuorodų santrauka
Aspose.3D suteikia pagrindines klases 3D scenų manipuliavimui Python, įskaitant Scene, Node, Mesh, ir Geometry. Kūrėjai, dirbantys su python 3d žaidimais, python 3d varikliu arba python 3d vizualizacijos projektais, gali naudoti šias klases programiškai kurti ir modifikuoti 3D turinį. The Scene klasė veikia kaip šakninis konteineris, o Node objektai sudaro scene grafų hierarchiją, ir Mesh instancijos apibrėžia geometrines formas su Geometry duomenimis.
Animacijos palaikymas Aspose.3D remiasi AnimationClip, AnimationNode, AnimationChannel, ir KeyframeSequence apibrėžti time-pagrindiniai transformavimai. Nors animacijos eksportas dar neįgyvendintas, kūrėjai vis tiek gali peržiūrėti animacijos struktūras naudodami šias klases. Ši Extrapolation klasė ir ExtrapolationType enum leidžia kontroliuoti elgseną už raktinių kadrų intervalų.
Entity-level properties tokie kaip matomumas ir šešėlių metimas yra atskleidžiami per Geometry.visible, Geometry.cast_shadows, ir Geometry.receive_shadows. Scene grafiko ryšiai valdomi per Entity.parent_node ir Entity.parent_nodes, tuo tarpu Node objektai atskleidžia GlobalTransform skirta translation, rotation, ir scale. Camera ir Light entities paveldi iš Entity ir palaiko išskyrimą per excluded.
Žr. taip pat
Aspose.3D suteikia pagrindines klases 3D modelių manipuliavimui Python, įskaitant Scene, Mesh, Node, Geometry, ir AnimationClip. Šios klasės palaiko python 3d vizualizaciją, python 3d žaidimų kūrimą ir 3d python darbo srautus per nuoseklią API sąsają.