Aspose.3D FOSS cho .NET hỗ trợ bảy định dạng tệp 3D: OBJ, STL, glTF, GLB, FBX, Collada, và 3MF. Bài viết này là hướng dẫn thực tế, từng định dạng một, chỉ cách tải và lưu mỗi định dạng, các tùy chọn có sẵn, và cách chuyển đổi giữa chúng.
Tất cả các ví dụ sử dụng Aspose.ThreeD không gian tên:
using Aspose.ThreeD;
using Aspose.ThreeD.Formats;
Gói NuGet:
dotnet add package Aspose.3D --version 26.1.0
OBJ (Wavefront)
OBJ là một định dạng dựa trên văn bản được hỗ trợ rộng rãi cho hình học lưới. Aspose.3D FOSS tải các tệp OBJ cùng với các tệp .mtl tệp vật liệu.
Tải OBJ
var scene = new Scene();
scene.Open("model.obj");
Console.WriteLine("Nodes: " + scene.RootNode.ChildNodes.Count);
Tải với các tùy chọn
var opts = new ObjLoadOptions();
// Configure loading behavior as needed
var scene = new Scene();
scene.Open("model.obj", opts);
Lưu dưới dạng OBJ
var scene = new Scene();
var box = new Entities.Box(2, 2, 2);
scene.RootNode.CreateChildNode("BoxNode", box);
scene.Save("output.obj");
OBJ với các tùy chọn lưu
var opts = new ObjSaveOptions();
scene.Save("output.obj", opts);
STL (Stereolithography)
STL là định dạng tiêu chuẩn cho việc in 3D. Nó lưu trữ hình học tam giác thô mà không có vật liệu hay cấu trúc phân cấp. Aspose.3D FOSS hỗ trợ cả STL nhị phân và ASCII.
Tải STL
var scene = new Scene();
scene.Open("part.stl");
Console.WriteLine("Nodes: " + scene.RootNode.ChildNodes.Count);
Lưu dưới dạng STL
var scene = new Scene();
var sphere = new Entities.Sphere(1);
scene.RootNode.CreateChildNode("SphereNode", sphere);
scene.Save("output.stl");
STL với các tùy chọn lưu
var opts = new StlSaveOptions();
// Control binary mode, scale, and coordinate flipping
scene.Save("output.stl", opts);
STL vòng tròn
// Load an STL file and re-save it -- geometry is preserved
var scene = new Scene();
scene.Open("original.stl");
scene.Save("copy.stl");
glTF 2.0 và GLB
glTF là tiêu chuẩn hiện đại cho web và 3D thời gian thực. Nó hỗ trợ vật liệu PBR, cấu trúc cảnh đầy đủ và việc đóng gói nhị phân hiệu quả (GLB).
Tải glTF
var scene = new Scene();
scene.Open("model.gltf");
Tải với các tùy chọn
var opts = new GltfLoadOptions();
var scene = new Scene();
scene.Open("model.gltf", opts);
Lưu dưới dạng glTF
var scene = new Scene();
var box = new Entities.Box(2, 2, 2);
scene.RootNode.CreateChildNode("BoxNode", box);
scene.Save("output.gltf");
Lưu dưới dạng GLB (glTF nhị phân)
Để tạo ra một tệp nhị phân tự chứa .glb file, lưu với một .glb phần mở rộng. Thư viện suy ra định dạng glTF nhị phân từ phần mở rộng:
scene.Save("output.glb");
FBX (Filmbox)
FBX được sử dụng rộng rãi trong phát triển trò chơi và tạo nội dung kỹ thuật số. Aspose.3D FOSS cho .NET hỗ trợ FBX nhập và xuất ở cả chế độ ASCII và nhị phân.
Tải FBX
var scene = new Scene();
scene.Open("model.fbx");
Tải với các tùy chọn
var opts = new FbxLoadOptions();
var scene = new Scene();
scene.Open("model.fbx", opts);
Lưu dưới dạng FBX ASCII
var scene = new Scene();
var box = new Entities.Box(2, 2, 2);
scene.RootNode.CreateChildNode("BoxNode", box);
var opts = new FbxSaveOptions() { IsAscii = true };
scene.Save("output.fbx", opts);
Lưu dưới dạng FBX Binary
var opts = new FbxSaveOptions() { IsAscii = false };
scene.Save("output.fbx", opts);
3MF (3D Manufacturing Format)
3MF is a modern 3D printing format developed by the 3MF Consortium. It supports rich metadata, materials, and multi-object scenes in a single ZIP-based package.
Tải 3MF
var scene = new Scene();
scene.Open("model.3mf");
Tải với các tùy chọn
var opts = new TmfLoadOptions();
var scene = new Scene();
scene.Open("model.3mf", opts);
Lưu dưới dạng 3MF
var scene = new Scene();
var box = new Entities.Box(2, 2, 2);
scene.RootNode.CreateChildNode("BoxNode", box);
scene.Save("output.3mf");
Lưu với các tùy chọn
var opts = new TmfSaveOptions();
scene.Save("output.3mf", opts);
I/O dựa trên luồng
Tất cả các định dạng hỗ trợ tải lên và lưu xuống các luồng, điều này hữu ích cho dịch vụ web và xử lý đám mây:
using var stream = File.OpenRead("model.obj");
var scene = new Scene();
var opts = new ObjLoadOptions();
scene.Open(stream, opts);
// Save to a memory stream
using var output = new MemoryStream();
var saveOpts = new GltfSaveOptions();
scene.Save(output, saveOpts);
Phát hiện định dạng
Thư viện có thể tự động phát hiện định dạng từ phần mở rộng tệp hoặc nội dung luồng:
// Auto-detect from extension
var scene = new Scene();
scene.Open("model.obj"); // Detects OBJ from .obj extension
// Auto-detect from stream content
using var stream = File.OpenRead("model.obj");
scene.Open(stream); // Inspects stream content to determine format
Chuyển đổi hàng loạt
Để chuyển đổi nhiều tệp, lặp qua một thư mục và chuyển đổi từng tệp:
using Aspose.ThreeD;
using Aspose.ThreeD.Formats;
var inputDir = "assets/";
var outputDir = "converted/";
foreach (var file in Directory.GetFiles(inputDir, "*.fbx"))
{
var scene = new Scene();
scene.Open(file);
var outputPath = Path.Combine(outputDir,
Path.GetFileNameWithoutExtension(file) + ".glb");
scene.Save(outputPath);
Console.WriteLine("Converted: " + file);
}
So sánh định dạng
| Tính năng | OBJ | STL | glTF | FBX | 3MF |
|---|---|---|---|---|---|
| Vật liệu | MTL | Không | PBR | Có | Có |
| Cây phân cấp cảnh | Không | Không | Có | Có | Có |
| Mẫu hoạt hình | Không | Không | Có | Có | Không |
| Chế độ nhị phân | Không | Có | GLB | Có | ZIP |
| 3D printing ready | Giới hạn | Có | Không | Không | Có |
| Phân phối web | Không | Không | Có | Không | Không |
Tóm tắt
Aspose.3D FOSS cho .NET cung cấp cho bạn một API duy nhất, nhất quán để làm việc với tất cả các định dạng tệp 3D chính. Mẫu luôn luôn giống nhau: tạo một Scene, gọi Open() để tải, tùy chọn cấu hình các tùy chọn riêng cho định dạng, và gọi Save() để xuất. Phát hiện định dạng, I/O dựa trên luồng, và chuyển đổi hàng loạt giúp việc tích hợp vào bất kỳ quy trình .NET nào trở nên đơn giản.
Để biết thêm thông tin:
- Tham chiếu API – tài liệu chi tiết về lớp và phương thức.
- Cơ sở tri thức – các bài viết hướng dẫn thực tế.
- GitHub – mã nguồn và trình theo dõi vấn đề.