Rendre des modèles 3D avec Aspose.3D

Vue d’ensemble

Aspose.3D permet le rendu et la manipulation de modèles 3D dans les applications Python. Il fournit des classes de base telles que Scene, Node, Mesh, Geometry, Camera, et Light pour créer et modifier du contenu 3D pour la visualisation 3d python, le jeu 3d python, et le python 3d library cas d’utilisation.

L’API prend en charge scene la construction de graphes via Node et Entity les hiérarchies, la définition de géométrie via Mesh et Geometry, et la configuration caméra/lumière pour le rendu. Les capacités d’animation incluent AnimationClip, AnimationNode, AnimationChannel, et KeyframeSequence pour le mouvement basé sur des images clés (accès en lecture seule ; l’exportation d’animation n’est pas encore implémentée). Les métadonnées des actifs sont accessibles via AssetInfo, tandis que scene objets héritent de A3DObject et INamedObject pour le nommage et property la gestion.

Fonctionnalités clés

Aspose.3D fournit une API Python pour travailler avec des modèles 3D, prenant en charge les opérations de base via des classes telles que Scene, Mesh, Node, Geometry, et AnimationClip. Il permet aux développeurs de charger, manipuler et exporter du contenu 3D pour les flux de travail de visualisation 3d python, de jeu 3d python et de moteur 3d python.

  • Prise en charge de plusieurs formats de fichiers 3D, y compris GLTF2 et WAVEFRONT_OBJ via le FileFormat classe permet une importation et une exportation fluides dans les projets de jeu 3d python et de visualisation 3d python. La prise en charge de FBX est expérimentale (seulement le tokenizer ; le parseur complet est en cours).
  • Manipulation directe de la géométrie du maillage via le Mesh et Geometry les classes permettent un contrôle précis des sommets, des polygones et des propriétés de rendu comme les ombres et la visibilité.
  • Structures d’animation via AnimationClip, AnimationNode, et KeyframeSequence les classes peuvent être inspectées et construites ; notez que l’exportation d’animation n’est pas encore implémentée dans cette version.
  • Gestion de la hiérarchie de la scène à l’aide de Node, Entity, et A3DObject offre une organisation structurée des objets 3D, des caméras et des lumières pour des scènes de visualisation 3D python complexes.
  • Gestion des propriétés et des métadonnées via PropertyCollection, AssetInfo, et INamedObject prend en charge les attributs personnalisés et les métadonnées au niveau du document telles que le titre, l’auteur et les mots‑clés.

Prérequis

Pour utiliser Aspose.3D pour la visualisation 3D en python, assurez‑vous que Python 3.7 ou une version ultérieure est installé. Installez le library en utilisant pip avec la commande pip install aspose-3d-foss. Le paquet fournit des classes de base telles que Scene, Mesh, Node, Entity, Geometry, Camera, Light, et FileFormat pour travailler avec les flux de travail de jeu python 3d et de moteur python 3d.

pip install aspose-3d-foss
import aspose.threed
print('Installation successful')

Exemples de code

Dans Aspose.3D pour Python, “rendering” d’une scène 3D signifie l’exporter vers un format de sortie pris en charge tel que OBJ, GLTF2 ou STL. La rasterisation basée sur les pixels n’est pas prise en charge ; utilisez scene.save() pour produire des fichiers de sortie 3D.

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")

Bonnes pratiques

Lors de l’utilisation de Aspose.3D pour la visualisation 3D en python ou la création d’un moteur de jeu python 3D, privilégiez l’efficacité mémoire en réutilisant Scene et Mesh les instances lorsque cela est possible. Évitez de créer des objets redondants dans des boucles serrées, surtout lors du traitement de nombreux fichiers pour une conversion python 3d par lots.

  • Réutiliser Scene des objets à travers les cycles d’exportation au lieu d’instancier de nouveaux objets par fichier.
  • Préférer Mesh réutiliser avec des points de contrôle partagés pour la géométrie statique afin de réduire la surcharge d’allocation.
  • Utilisez les options d’enregistrement spécifiques au format (par ex., GltfSaveOptions, StlSaveOptions) pour contrôler le mode de sortie et la gestion des coordonnées.
  • Utilisez des flux BytesIO pour les flux de travail d’exportation en mémoire afin d’éviter les goulets d’étranglement d’E/S disque dans les pipelines de visualisation 3D python.

Dépannage

Cette section couvre les problèmes courants rencontrés lors de l’utilisation de Aspose.3D pour la visualisation 3D en Python et les flux de travail de développement de jeux impliquant le Scene, Node, Mesh, et AnimationClip classes.

Les opérations non prises en charge lèvent NotImplementedError

Opérations telles que l’exportation via certains exportateurs et les méthodes liées au rendu comme get_entity_renderer_key() ne sont pas implémentées et lèvent NotImplementedError. Cela se produit parce que la fonctionnalité principale dans la version actuelle version de Aspose.3D pour Python est incomplet. Pour éviter les échecs d’exécution, vérifiez la disponibilité des méthodes dans l’interface de l’API avant d’appeler des méthodes non prises en charge. Utilisez Scene.from_file() et scene.save() pour les flux de travail de chargement et d’exportation pris en charge.

Méthodes Mesh qui lèvent NotImplementedError

Les éléments suivants Mesh méthodes sont déclarées dans l’interface de l’API mais soulèvent NotImplementedError dans cette version. Ne les appelez pas sur aucune instance chargée ou construite Mesh instance :

MéthodeRemarques
mesh.optimize()Optimisation du maillage — pas encore implémentée
mesh.do_boolean(...)Opération booléenne générique — utilisez les méthodes spécifiques ci-dessous
mesh.union(other)CSG union — pas encore implémentée
mesh.difference(other)CSG difference — pas encore implémentée
mesh.intersect(other)CSG intersection — pas encore implémentée
mesh.is_manifold()Manifold test — pas encore implémenté
Mesh(height_map, ...)Height-map constructor variant — pas encore implémentée

Si votre flux de travail nécessite ces opérations, traitez la géométrie dans une bibliothèque telle que trimesh ou open3d et réimportez le résultat en utilisant Scene.from_file() ou en construisant un nouveau Mesh à partir de brut control_points et polygons.

Les fonctionnalités d’animation sont en lecture seule

Classes liées à l’animation telles que AnimationClip, AnimationNode, AnimationChannel, et KeyframeSequence peuvent être inspectées mais l’exportation d’animation n’est pas fonctionnelle. Les développeurs créant des moteurs de jeu 3D en python ou des outils de visualisation 3D en python doivent considérer les données d’animation comme en lecture seule jusqu’à ce que la prise en charge complète de l’exportation soit disponible.

Le chargement d’images de texture n’est pas pris en charge

Chargement des images de texture pour materials n’est pas implémenté dans Aspose.3D. Même si material properties sont définies via Mesh ou Geometry, le mappage de texture ne sera pas rendu correctement. Pour l’exportation de modèles statiques, utilisez des couleurs unies ou un éclairage basé sur les sommets plutôt que des textures basées sur des images.

Camera et Geometry le rendu n’est pas pris en charge

Le Camera et Geometry les classes lèvent NotImplementedError pour les méthodes liées au rendu telles que get_entity_renderer_key(). Bien que ces classes puissent être instanciées et configurées, elles ne peuvent pas être utilisées dans les pipelines de rasterisation pixel. Utilisez Node et Mesh pour scene les flux de travail de composition et d’exportation.

FAQ

Le Aspose.3D pour Python prend‑il en charge la sortie d’images rasterisées (PNG, JPEG) ?

Non. Aspose.3D pour Python n’effectue pas de rasterisation basée sur les pixels. « Rendering » dans cette bibliothèque signifie exporter une scène vers un format de sortie 3D tel que OBJ, GLTF2, STL ou 3MF en utilisant scene.save().Pour la sortie d’images, intégrez un moteur de rendu séparé.

Quels formats d’exportation sont pris en charge ?

Les formats d’exportation pris en charge incluent OBJ, glTF 2.0 / GLB, STL (binaire et ASCII), COLLADA (DAE) et 3MF. Utilisez l’extension de fichier lors de l’appel scene.save() pour la détection automatique du format. Pour un contrôle explicite du format, utilisez les méthodes de fabrique FileFormat.WAVEFRONT_OBJ(), FileFormat.GLTF2(), et FileFormat.MICROSOFT_3MF_FORMAT(). Remarque : les constantes de type attribut comme FileFormat.GLTF2_BINARY, FileFormat.GLTF, FileFormat.STLASCII, FileFormat.STL_BINARY, et FileFormat.MICROSOFT_3MF sont None des squelettes et ne doivent pas être utilisés. L’export FBX génère NotImplementedError dans la version actuelle.

Puis‑je lire les données d’animation d’un fichier 3D chargé ?

Les structures d’animation dans les fichiers chargés peuvent être accédées via AnimationClip, AnimationNode, et les classes associées, mais la modification ou la réexportation des données d’animation n’est pas encore prise en charge et déclenchera NotImplementedError.

Résumé de la référence API

Aspose.3D fournit des classes de base pour manipuler des scènes 3D dans Python, y compris Scene, Node, Mesh, et Geometry. Les développeurs travaillant sur des jeux 3D python, des moteurs 3D python ou des projets de visualisation 3D python peuvent utiliser ces classes pour créer et modifier du contenu 3D de manière programmatique. Le Scene class sert de conteneur racine, tandis que Node les objets forment le scene hiérarchie du graphe, et Mesh les instances définissent des formes géométriques avec Geometry des données.

La prise en charge de l’animation dans Aspose.3D repose sur AnimationClip, AnimationNode, AnimationChannel, et KeyframeSequence pour définir time-based transformations. Bien que l’exportation d’animation ne soit pas encore implémentée, les développeurs peuvent toujours inspecter les structures d’animation à l’aide de ces classes. Le Extrapolation classe et ExtrapolationType enum permettent de contrôler le comportement en dehors des plages d’images clés.

Entity-niveau properties tels que la visibilité et la projection d’ombres sont exposés via Geometry.visible, Geometry.cast_shadows, et Geometry.receive_shadows. Scene les relations de graphe sont gérées via Entity.parent_node et Entity.parent_nodes, tandis que Node les objets exposent GlobalTransform pour translation, rotation, et scale. Camera et Light entities hériter de Entity et prendre en charge l’exclusion via excluded.

Voir aussi

Aspose.3D fournit des classes de base pour la manipulation de modèles 3D dans Python, incluant Scene, Mesh, Node, Geometry, et AnimationClip. Ces classes prennent en charge la visualisation 3D en python, le développement de jeux 3D en python, et les flux de travail 3D python via une surface d’API cohérente.

 Français