Specificare 3D Opzioni di salvataggio file in C#
Panoramica
Questo articolo spiega come puoi salvare 3D file in diversi formati Dopo averli caricati in Scene oggetto utilizzando C#. Caricando e salvando, puoi eseguire il numero di conversioni diverse, ad es.
- Convertire FBX in X in C#
- Convertire GLTF in OBJ in C#
- Convertire OBJ in X in C#
- Convertire STL in OBJ in C#
- Convertire RVM in 3DS in C#
3D Opzioni di salvataggio file
Esistono diversi overload del metodo Scene.Save
che accettano un oggetto SaveOptions. Questo dovrebbe essere un oggetto di una classe derivata dalla classe SaveOptions
. Ogni formato di salvataggio ha una classe corrispondente che contiene le opzioni di salvataggio per quel formato di salvataggio, ad esempio, c' è ColladaSaveOptions
per il formato di salvataggio FileFormat.Collada
.
Utilizzo delle opzioni di salvataggio Collada
Il codice C# di seguito mostra come impostare le opzioni di salvataggio prima di salvare un file 3D in formato Collada.
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-.NET | |
ColladaSaveOptions saveColladaopts = new ColladaSaveOptions(); | |
// Generates indented XML document | |
saveColladaopts.Indented = true; | |
// The style of node transformation | |
saveColladaopts.TransformStyle = ColladaTransformStyle.Matrix; | |
// Configure the lookup paths to allow importer to find external dependencies. | |
saveColladaopts.LookupPaths = new List<string>(new string[] { "textures" }); |
Utilizzo delle opzioni di salvataggio Discreet3DS
Il codice C# di seguito mostra come impostare le opzioni di salvataggio prima di salvare un file 3D in un formato Discreet 3DS.
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-.NET | |
// Initialize an object | |
Discreet3dsSaveOptions saveOpts = new Discreet3dsSaveOptions(); | |
// The start base for generating new name for duplicated names. | |
saveOpts.DuplicatedNameCounterBase = 2; | |
// The format of the duplicated counter. | |
saveOpts.DuplicatedNameCounterFormat = "NameFormat"; | |
// The separator between object's name and the duplicated counter. | |
saveOpts.DuplicatedNameSeparator = "Separator"; | |
// Allows to export cameras | |
saveOpts.ExportCamera = true; | |
// Allows to export light | |
saveOpts.ExportLight = true; | |
// Flip the coordinate system | |
saveOpts.FlipCoordinateSystem = true; | |
// Prefer to use gamma-corrected color if a 3ds file provides both original color and gamma-corrected color. | |
saveOpts.GammaCorrectedColor = true; | |
// Use high-precise color which each color channel will use 32bit float. | |
saveOpts.HighPreciseColor = true; | |
// Configure the look up paths to allow importer to find external dependencies. | |
saveOpts.LookupPaths = new List<string>(new string[] { "textures" }); | |
// Set the master scale | |
saveOpts.MasterScale = 1; |
Utilizzo delle opzioni di salvataggio FBX
Il codice C# di seguito mostra come impostare le opzioni di salvataggio prima di salvare un file 3D in un formato FBX.
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-.NET | |
// Initialize an object | |
FbxSaveOptions saveOpts = new FbxSaveOptions(FileFormat.FBX7500ASCII); | |
// Generates the legacy material properties. | |
saveOpts.ExportLegacyMaterialProperties = true; | |
// Fold repeated curve data using FBX's animation reference count | |
saveOpts.FoldRepeatedCurveData = true; | |
// Always generates material mapping information for geometries if the attached node contains materials. | |
saveOpts.GenerateVertexElementMaterial = true; | |
// Configure the look up paths to allow importer to find external dependencies. | |
saveOpts.LookupPaths = new List<string>(new string[] { "textures" }); | |
// Generates a video object for texture. | |
saveOpts.VideoForTexture = true; |
FBXSaveOptions
espone anche la proprietà EnableCompression
che può essere utilizzata per comprimere grandi dati binari nel file FBX. Il valore predefinito di questa proprietà è vero. Di seguito lo snippet di codice spiega come puoi lavorare con questa proprietà durante il salvataggio di una scena.
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-.NET | |
// Load a 3D document into Aspose.3D | |
Scene scene = Scene.FromFile"document.fbx"); | |
scene.Save("UncompressedDocument.fbx", new FbxSaveOptions(FileFormat.FBX7500ASCII) { EnableCompression = false }); |
Utilizzo delle opzioni di salvataggio di Obj
Il codice seguente mostra come impostare le opzioni di salvataggio prima di salvare un file 3D in un formato Obj.
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-.NET | |
// Initialize an object | |
ObjSaveOptions saveObjOpts = new ObjSaveOptions(); | |
// Import materials from external material library file | |
saveObjOpts.EnableMaterials = true; | |
// Flip the coordinate system. | |
saveObjOpts.FlipCoordinateSystem = true; | |
// Configure the look up paths to allow importer to find external dependencies. | |
saveObjOpts.LookupPaths = new List<string>(new string[] { "textures" }); | |
// Serialize W component in model's vertex position | |
saveObjOpts.SerializeW = true; | |
// Generate comments for each section | |
saveObjOpts.Verbose = true; |
Utilizzo delle opzioni di salvataggio STL
Il codice C# di seguito mostra come impostare le opzioni di salvataggio prima di salvare un file 3D in formato STL.
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-.NET | |
// Initialize an object | |
StlSaveOptions saveSTLOpts = new StlSaveOptions(); | |
// Flip the coordinate system. | |
saveSTLOpts.FlipCoordinateSystem = true; | |
// Configure the look up paths to allow importer to find external dependencies. | |
saveSTLOpts.LookupPaths = new List<string>(new string[] { "textures" }); |
Utilizzo delle opzioni di salvataggio U3D
Il codice C# di seguito mostra come impostare le opzioni di salvataggio prima di salvare un documento in formato U3D.
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-.NET | |
// Initialize an object | |
U3dSaveOptions saveU3DOptions = new U3dSaveOptions(); | |
// Export normal data. | |
saveU3DOptions.ExportNormals = true; | |
// Export the texture coordinates. | |
saveU3DOptions.ExportTextureCoordinates = true; | |
// Export the vertex diffuse color. | |
saveU3DOptions.ExportVertexDiffuse = true; | |
// Export vertex specular color | |
saveU3DOptions.ExportVertexSpecular = true; | |
// Flip the coordinate system. | |
saveU3DOptions.FlipCoordinateSystem = true; | |
// Configure the look up paths to allow importer to find external dependencies. | |
saveU3DOptions.LookupPaths = new List<string>(new string[] { "textures/" }); | |
// Compress the mesh data | |
saveU3DOptions.MeshCompression = true; |
Utilizzo delle opzioni di salvataggio glTF
Il codice C# di seguito mostra come impostare le opzioni di salvataggio prima di salvare un documento in formato glTF.
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-.NET | |
// Initialize Scene object | |
Scene scene = new Scene(); | |
// Create a child node | |
scene.RootNode.CreateChildNode("sphere", new Sphere()); | |
// Set glTF saving options. The code example embeds all assets into the target file usually a glTF file comes with some dependencies, a bin file for model's vertex/indices, two .glsl files for vertex/fragment shaders | |
// Use opt.EmbedAssets to tells the Aspose.3D API to export scene and embed the dependencies inside the target file. | |
GltfSaveOptions opt = new GltfSaveOptions(FileContentType.ASCII); | |
opt.EmbedAssets = true; | |
// Use KHR_materials_common extension to define the material, thus no GLSL files are generated. | |
opt.UseCommonMaterials = true; | |
// Customize the name of the buffer file which defines model | |
opt.BufferFile = "mybuf.bin"; | |
// Save GlTF file | |
scene.Save("glTFSaveOptions_out.gltf", opt); | |
// Save a binary glTF file using KHR_binary_glTF extension | |
scene.Save("glTFSaveOptions_out.glb"); | |
// Developers may use saving options to create a binary glTF file using KHR_binary_glTF extension | |
GltfSaveOptions opts = new GltfSaveOptions(FileContentType.Binary); | |
scene.Save("Test_out.glb", opts); |
PrettyPrint in glTF Opzioni di salvataggio
È inoltre possibile utilizzare la proprietà PrettyPrint della classe GLTFSaveOptions per la stampa JSON comprensibile per l’uomo. Il codice seguente mostra come utilizzare questa funzionalità.
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-.NET | |
// Initialize 3D scene | |
Scene scene = new Scene(new Sphere()); | |
// Initialize GltfSaveOptions | |
GltfSaveOptions opt = new GltfSaveOptions(FileFormat.GLTF2); | |
// The JSON content of GLTF file is indented for human reading, default value is false | |
opt.PrettyPrint = true; | |
// Save 3D Scene | |
scene.Save("prettyPrintInGltfSaveOption.gltf", opt); |
Salva le dipendenze di una scena 3D nel file system reale
Gli sviluppatori potrebbero richiedere di salvare tutte le dipendenze di scena di 3D nel file system reale. Possono definire il percorso di una directory locale, salvare nell’oggetto MemoryFileSystem
o semplicemente scartare le dipendenze. La proprietà FileSystem
viene aggiunta nelle classi di tutte le opzioni di salvataggio.
Scartare il salvataggio dei file materiali
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-.NET | |
// The code example uses the DummyFileSystem, so the material files are not created. | |
// Initialize Scene object | |
Scene scene = new Scene(); | |
// Create a child node | |
scene.RootNode.CreateChildNode("sphere", new Sphere()).Material = new PhongMaterial(); | |
// Set saving options | |
ObjSaveOptions opt = new ObjSaveOptions(); | |
opt.FileSystem = new DummyFileSystem(); | |
// Save 3D scene | |
scene.Save("DiscardSavingMaterial_out.obj", opt); |
Salvare le dipendenze nella directory locale
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-.NET | |
// The code example uses the LocalFileSystem class to save dependencies to the local directory. | |
// Initialize Scene object | |
Scene scene = new Scene(); | |
// Create a child node | |
scene.RootNode.CreateChildNode("sphere", new Sphere()).Material = new PhongMaterial(); | |
// Set saving options | |
ObjSaveOptions opt = new ObjSaveOptions(); | |
opt.FileSystem = new LocalFileSystem("local_dir/"); | |
// Save 3D scene | |
scene.Save"SavingDependenciesInLocalDirectory_out.obj", opt); |
Salvare le dipendenze nell’oggetto MemoryFileSystem
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-.NET | |
// The code example uses the MemoryFileSystem to intercepts the dependencies writing. | |
// Initialize Scene object | |
Scene scene = new Scene(); | |
// Create a child node | |
scene.RootNode.CreateChildNode("sphere", new Sphere()).Material = new PhongMaterial(); | |
// Set saving options | |
ObjSaveOptions opt = new ObjSaveOptions(); | |
MemoryFileSystem mfs = new MemoryFileSystem(); | |
opt.FileSystem = mfs; | |
// Save 3D scene | |
scene.Save("SavingDependenciesInMemoryFileSystem_out.obj", opt); | |
// Get the test.mtl file content | |
byte[] mtl = mfs.GetFileContent("SavingDependenciesInMemoryFileSystem_out.mtl"); | |
File.WriteAllBytes("Material.mtl", mtl); |
Utilizzo delle opzioni di salvataggio Google Draco (.drc)
Il codice C# di seguito mostra come impostare le opzioni di salvataggio prima di salvare un modello 3D in formato DRC.
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-.NET | |
// Initialize Scene object | |
Scene scene = new Scene(); | |
// Create a child node | |
scene.RootNode.CreateChildNode("sphere", new Sphere()); | |
// Initialize .DRC saving options. | |
DracoSaveOptions opts = new DracoSaveOptions(); | |
// Quantization bits for position | |
opts.PositionBits = 14; | |
// Quantization bits for texture coordinate | |
opts.TextureCoordinateBits = 8; | |
// Quantization bits for vertex color | |
opts.ColorBits = 10; | |
// Quantization bits for normal vectors | |
opts.NormalBits = 7; | |
// Set compression level | |
opts.CompressionLevel = DracoCompressionLevel.Optimal; | |
// Save Google Draco (.drc) file | |
scene.Save("DRCSaveOptions_out.drc", opts); |
Utilizzo delle opzioni di salvataggio RVM
Il codice C# di seguito mostra come impostare le opzioni di salvataggio prima di salvare un modello 3D in formato RVM.
// For complete examples and data files, please go to https://github.com/aspose-3d/Aspose.3D-for-.NET | |
Scene scene = new Scene(); | |
var node = scene.RootNode.CreateChildNode("Box", new Box()); | |
node.SetProperty("rvm:Refno", "=3462123"); | |
node.SetProperty("rvm:Description", "This is the description of the box"); | |
//The RVM attribute's prefix is rvm:, all properties that starts with rvm: will be exported to .att file(the prefix will be removed) | |
var opt = new RvmSaveOptions() { AttributePrefix = "rvm:", ExportAttributes = true }; | |
scene.Save( "test.rvm", opt); |