Crea e leggi una scena 3D esistente
Panoramica
L’articolo spiega i seguenti argomenti utilizzando la libreria di manipolazione dei formati di file C# 3D.
- Crea una scena vuota 3D in C# da zero
- Leggi o carica la scena esistente di 3D in C#
- Salva la scena 3D in formati 3D supportati utilizzando C#
- Lavora con 3D proprietà scena in C#
Crea una scena vuota 3D e risparmia nei formati file supportati 3D
Aspose.3D API supporta la creazione delle nuove scene 3D da zero e quindi il salvataggio in qualsiasi formato di file supportato. Gli sviluppatori possono anche caricare una scena 3D esistente per la modifica, l’aggiunta o l’elaborazione.
Creazione di un documento di scena 3D
Segui questi passaggi in C# per creare un documento di scena 3D utilizzando l’API Aspose.3D:
- Crea un’istanza della classe
Scene
che rappresenta un documento di scena 3D. - Genera un documento di scena 3D chiamando il metodo
Save
dell’oggetto 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"); |
Lettura di una scena da 3D
Utilizzando Aspose.3D API, gli sviluppatori possono caricare tutti i documenti 3D supportati. I costruttori disponibili della classe Scene
consentono di farlo e accettano una stringa di percorso file valida. I formati di file leggibili supportati sono i seguenti:
- FBX 7.5 (ASCII, binario)
- FBX 7.4 (ASCII, binario)
- FBX 7.3 (ASCII, binario)
- FBX 7.2 (ASCII, binario)
- FBX 6.1 (ASCII, binario)
- STL (ASCII, binario)
- WavefrontOBJ
- Discreet3DS
- Universal3D
- Collada
- glTF (ASCII, binario)
- Maya (ASCII, binario)
- OpenUSD (USD, USDZ)
- Frullatore
- DXF
- PLY (ASCII, binario)
- X (ASCII, binario)
- Draco
- 3MF
- RVM (testo, binario)
- ASE
I costruttori della classe Scene
rilevano internamente il formato del documento 3D.
// 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"); | |
Lavorare con 3D Proprietà scena
Aspose.3D API ti consente di leggere 3D proprietà della scena utilizzando i nodi figlio della scena. Il seguente esempio di codice C# dimostra l’utilizzo di questa funzione.
// 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); | |
} |