Créer et lire une scène 3D existante
Aperçu
L’article explique les sujets suivants en utilisant la bibliothèque de manipulation des formats de fichiers C# 3D.
- Créer une scène vide 3D dans C# à partir de zéro
- Lire ou charger la scène 3D existante dans C#
- Enregistrez la scène 3D dans les formats 3D pris en charge à l’aide de C#
- Travailler avec 3D Propriétés de la scène dans C#
Créez une scène 3D vide et enregistrez dans les formats de fichier 3D pris en charge
Aspose.3D API prend en charge la création des nouvelles scènes 3D à partir de zéro, puis les sauvegarde dans n’importe quel format de fichier pris en charge. Les développeurs peuvent également charger une scène 3D existante à des fins de modification, d’ajout ou de traitement.
Création d’un document de scène 3D
Veuillez suivre ces étapes dans C# pour créer un document scène 3D en utilisant les API Aspose.3D:
- Créez une instance de la classe
Scene
qui représente un document de scène 3D. - Générez un document de scène 3D en appelant la méthode
Save
de l’objet de classe Scene.
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-.NET | |
// Create an object of the Scene class | |
Scene scene = new Scene(); | |
// Save 3D scene document | |
scene.Save("document.fbx"); |
Lecture d’une scène 3D
En utilisant Aspose.3D API, les développeurs peuvent charger tous les documents 3D pris en charge. Les constructeurs disponibles de la classe Scene
le permettent et ils acceptent une chaîne de chemin de fichier valide. Les formats de fichiers lisibles pris en charge sont les suivants:
- FBX 7.5 (ASCII, binaire)
- FBX 7.4 (ASCII, binaire)
- FBX 7.3 (ASCII, binaire)
- FBX 7.2 (ASCII, binaire)
- FBX 6.1 (ASCII, binaire)
- STL (ASCII, binaire)
- WavefrontOBJ
- Discreet3DS
- Universal3D
- Collada
- glTF (ASCII, binaire)
- Maya (ASCII, binaire)
- OpenUSD (USD, USDZ)
- Mixeur
- DXF
- PLY (ASCII, binaire)
- X (ASCII, binaire)
- Draco
- 3MF
- RVM (Texte, Binaire)
- ASE
Les constructeurs de la classe Scene
détectent le format de document 3D en interne.
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-.NET | |
// The path to the documents directory. | |
// Initialize a Scene class object | |
Scene scene = new Scene(); | |
// Load an existing 3D document | |
scene.Open("document.fbx"); | |
Travailler avec 3D Propriétés de scène
Aspose.3D API vous permet de lire les propriétés de scène 3D en utilisant les nœuds enfants de la scène. L’exemple de code C# suivant illustre l’utilisation de cette fonctionnalité.
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-.NET | |
Scene scene = Scene.FromFile("EmbeddedTexture.fbx"); | |
Material material = scene.RootNode.ChildNodes[0].Material; | |
PropertyCollection props = material.Properties; | |
//List all properties using foreach | |
foreach (var prop in props) | |
{ | |
Console.WriteLine("{0} = {1}", prop.Name, prop.Value); | |
} | |
//or using ordinal for loop | |
for (int i = 0; i < props.Count; i++) | |
{ | |
var prop = props[i]; | |
Console.WriteLine("{0} = {1}", prop.Name, prop.Value); | |
} | |
//Get property value by name | |
var diffuse = props["Diffuse"]; | |
Console.WriteLine(diffuse); | |
//modify property value by name | |
props["Diffuse"] = new Vector3(1, 0, 1); | |
//Get property instance by name | |
Property pdiffuse = props.FindProperty("Diffuse"); | |
Console.WriteLine(pdiffuse); | |
//Since Property is also inherited from A3DObject | |
//It's possible to get the property of the property | |
Console.WriteLine("Property flags = {0}", pdiffuse.GetProperty("flags")); | |
//and some properties that only defined in FBX file: | |
Console.WriteLine("Label = {0}", pdiffuse.GetProperty("label")); | |
Console.WriteLine("Type Name = {0}", pdiffuse.GetProperty("typeName")); | |
//so traversal on property's property is possible | |
foreach (var pp in pdiffuse.Properties) | |
{ | |
Console.WriteLine("Diffuse.{0} = {1}", pp.Name, pp.Value); | |
} |