Geben Sie 3D Optionen zum Speichern von Dateien in C# an
Übersicht
Dieser Artikel erklärt, wie Sie 3D-Dateien in verschiedenen Formaten Nach dem Laden in Szene Objekt mit C# speichern können. Durch Laden und Speichern können Sie eine Anzahl verschiedener Konvertie rungen durchführen, z.
- FBX zu X in C# konvertieren
- GLTF zu OBJ in C# umrechnen
- OBJ zu X in C# konvertieren
- STL zu OBJ in C# umrechnen
- RVM zu 3DS in C# umrechnen
3D Optionen zum Speichern von Dateien
Es gibt mehrere Scene.Save
-Methoden überlastungen, die ein SaveOptions-Objekt akzeptieren. Dies sollte ein Objekt einer Klasse sein, die von der SaveOptions
-Klasse abgeleitet ist. Jedes Speicher format verfügt über eine entsprechende Klasse, die Speicher optionen für dieses Speicher format enthält. Beispiels weise gibt es ColladaSaveOptions
für das FileFormat.Collada
-Speicher format.
Verwendung der Collada Speicher optionen
Der unten stehende C#-Code zeigt, wie Sie Speicher optionen festlegen, bevor Sie eine 3D-Datei im Collada-Format speichern.
// 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" }); |
Verwendung der Discreet3DS Speicher optionen
Der unten stehende C#-Code zeigt, wie Sie Speicher optionen festlegen, bevor Sie eine 3D-Datei in ein diskretes 3DS-Format speichern.
// 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; |
Verwendung der FBX Speicher optionen
Der unten stehende C#-Code zeigt, wie Sie Speicher optionen festlegen, bevor Sie eine 3D-Datei in ein FBX-Format speichern.
// 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
legt auch die Eigenschaft EnableCompression
bereit, mit der große Binär daten in der FBX-Datei komprimiert werden können. Der Standardwert dieser Eigenschaft ist wahr. Unter dem Code-Snippet wird erläutert, wie Sie mit dieser Eigenschaft arbeiten können, während Sie eine Szene speichern.
// 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 }); |
Verwendung der Obj Save-Optionen
Der folgende Code zeigt, wie Sie Speicher optionen festlegen, bevor Sie eine 3D-Datei in ein Obj-Format speichern.
// 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; |
Verwendung der STL Speicher optionen
Der unten stehende C#-Code zeigt, wie Sie Speicher optionen festlegen, bevor Sie eine 3D-Datei im STL-Format speichern.
// 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" }); |
Verwendung der U3D Speicher optionen
Der unten stehende C#-Code zeigt, wie Sie Speicher optionen festlegen, bevor Sie ein Dokument im U3D-Format speichern.
// 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; |
Verwendung der glTF Speicher optionen
Der unten stehende C#-Code zeigt, wie Sie Speicher optionen festlegen, bevor Sie ein Dokument im glTF-Format speichern.
// 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); |
Pretty Print in glTF Speicher optionen
Sie können auch die Pretty Print-Eigenschaft der GLTF SaveOptions-Klasse für den vom Menschen verständlichen JSON-Druck verwenden. Der folgende Code zeigt, wie diese Funktional ität verwendet wird.
// 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); |
Speichern von Abhängigkeiten einer 3D-Szene im realen Dateisystem
Entwickler müssen möglicher weise alle 3D Szenen abhängigkeiten im realen Dateisystem speichern. Sie können den Pfad eines lokalen Verzeichnisses definieren, im MemoryFileSystem
-Objekt speichern oder einfach Abhängigkeiten verwerfen. Die FileSystem
-Eigenschaft wird in den All-Save-Options klassen hinzugefügt.
Speichern der Material dateien verwerfen
// 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); |
Abhängigkeiten im lokalen Verzeichnis speichern
// 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); |
Abhängigkeiten im MemoryFileSystem-Objekt speichern
// 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); |
Verwendung der Optionen für das Speichern von Google Draco (.drc)
Der unten stehende C#-Code zeigt, wie Sie Speicher optionen festlegen, bevor Sie ein 3D-Modell im DRC-Format speichern.
// 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); |
Verwendung der RVM Speicher optionen
Der unten stehende C#-Code zeigt, wie Sie Speicher optionen festlegen, bevor Sie ein 3D-Modell im RVM-Format speichern.
// 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); |