Aspose.3D FOSS for .NET هفت فرمت فایل 3D را پشتیبانی میکند: OBJ, STL, glTF, GLB, FBX, Collada, و 3MF. این پست یک راهنمای عملی، فرمت‑به‑فرمت است که نشان میدهد چگونه هر کدام را بارگذاری و ذخیره کنید، چه گزینههایی موجود است و چگونه بین آنها تبدیل کنید.
تمام مثالها از فضای نام Aspose.ThreeD استفاده میکنند:
using Aspose.ThreeD;
using Aspose.ThreeD.Formats;
بسته NuGet:
dotnet add package Aspose.3D --version 26.1.0
OBJ (Wavefront)
OBJ یک فرمت مبتنی بر متن است که بهطور گسترده برای هندسه مش پشتیبانی میشود. Aspose.3D FOSS فایلهای OBJ را همراه با فایلهای متریال .mtl مربوطه بارگذاری میکند.
بارگذاری OBJ
var scene = new Scene();
scene.Open("model.obj");
Console.WriteLine("Nodes: " + scene.RootNode.ChildNodes.Count);
بارگذاری با گزینهها
var opts = new ObjLoadOptions();
// Configure loading behavior as needed
var scene = new Scene();
scene.Open("model.obj", opts);
ذخیره به عنوان OBJ
var scene = new Scene();
var box = new Entities.Box(2, 2, 2);
scene.RootNode.CreateChildNode("BoxNode", box);
scene.Save("output.obj");
OBJ با گزینههای ذخیرهسازی
var opts = new ObjSaveOptions();
scene.Save("output.obj", opts);
STL (استریولیتوگرافی)
STL فرمت استاندارد برای چاپ سهبعدی است. این فرمت هندسهٔ مثلثیسازی شدهٔ خام را بدون مواد یا سلسلهمراتب ذخیره میکند. Aspose.3D FOSS از هر دو نوع باینری و ASCII STL پشتیبانی میکند.
بارگذاری STL
var scene = new Scene();
scene.Open("part.stl");
Console.WriteLine("Nodes: " + scene.RootNode.ChildNodes.Count);
ذخیره به عنوان STL
var scene = new Scene();
var sphere = new Entities.Sphere(1);
scene.RootNode.CreateChildNode("SphereNode", sphere);
scene.Save("output.stl");
STL با گزینههای ذخیره
var opts = new StlSaveOptions();
// Control binary mode, scale, and coordinate flipping
scene.Save("output.stl", opts);
STL سفر رفت و برگشت
// 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 و GLB
glTF استاندارد مدرن برای وب و سهبعدی زمان واقعی است. این فرمت از مواد PBR، سلسلهمراتب کامل صحنه و بستهبندی باینری کارآمد (GLB) پشتیبانی میکند.
بارگذاری glTF
var scene = new Scene();
scene.Open("model.gltf");
بارگذاری با گزینهها
var opts = new GltfLoadOptions();
var scene = new Scene();
scene.Open("model.gltf", opts);
ذخیره به عنوان glTF
var scene = new Scene();
var box = new Entities.Box(2, 2, 2);
scene.RootNode.CreateChildNode("BoxNode", box);
scene.Save("output.gltf");
ذخیره بهصورت GLB (Binary glTF)
برای تولید یک فایل باینری خودکفا .glb، با پسوند .glb ذخیره کنید. کتابخانه فرمت باینری glTF را از پسوند تشخیص میدهد:
scene.Save("output.glb");
FBX (فیلمباکس)
FBX به طور گستردهای در توسعه بازی و ایجاد محتوای دیجیتال استفاده میشود. Aspose.3D FOSS برای .NET از واردات و صادرات FBX پشتیبانی میکند. صادرات یک FBX باینری تولید میکند؛ کد صادرات FBX به صورت ASCII در منبع موجود است اما در این نسخه توسط مسیر صادرات فراخوانی نمیشود. کلاس FbxSaveOptions تنظیمات پیشفرض را فراهم میکند.
بارگذاری FBX
var scene = new Scene();
scene.Open("model.fbx");
بارگذاری با گزینهها
var opts = new FbxLoadOptions();
var scene = new Scene();
scene.Open("model.fbx", opts);
ذخیره به عنوان FBX
var scene = new Scene();
var box = new Entities.Box(2, 2, 2);
scene.RootNode.CreateChildNode("BoxNode", box);
// FBX export always produces binary FBX output
scene.Save("output.fbx");
ذخیرهسازی با گزینهها
// Use FbxSaveOptions for format-specific defaults
var opts = new FbxSaveOptions();
scene.Save("output.fbx", opts);
3MF (قالب ساخت سهبعدی)
3MF یک فرمت مدرن چاپ سهبعدی است که توسط 3MF Consortium توسعه یافته است. این فرمت از متادیتای غنی، مواد و صحنههای چندشیئی در یک بستهٔ مبتنی بر ZIP پشتیبانی میکند.
بارگذاری 3MF
var scene = new Scene();
scene.Open("model.3mf");
بارگذاری با گزینهها
var opts = new TmfLoadOptions();
var scene = new Scene();
scene.Open("model.3mf", opts);
ذخیره به عنوان 3MF
var scene = new Scene();
var box = new Entities.Box(2, 2, 2);
scene.RootNode.CreateChildNode("BoxNode", box);
scene.Save("output.3mf");
ذخیرهسازی با گزینهها
var opts = new TmfSaveOptions();
scene.Save("output.3mf", opts);
I/O مبتنی بر جریان
تمام فرمتها از بارگذاری از جریانها و ذخیرهسازی به جریانها پشتیبانی میکنند، که برای سرویسهای وب و پردازش ابری مفید است:
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);
تشخیص قالب
کتابخانه میتواند فرمتها را بهصورت خودکار از پسوندهای فایل یا محتوای جریان تشخیص دهد:
// 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
تبدیل دستهای
برای تبدیل چندین فایل، بر روی یک پوشه تکرار کنید و هر کدام را تبدیل کنید:
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);
}
مقایسه فرمتها
| ویژگی | OBJ | STL | glTF | FBX | 3MF |
|---|---|---|---|---|---|
| مواد | MTL | خیر | PBR | بله | بله |
| سلسلهمراتبی صحنه | خیر | خیر | بله | بله | بله |
| قطعات انیمیشن | خیر | خیر | بله | بله | خیر |
| حالت باینری | خیر | بله | GLB | بله | ZIP |
| آماده برای چاپ سهبعدی | محدود | بله | خیر | خیر | بله |
| تحویل وب | خیر | خیر | بله | خیر | خیر |
خلاصه
Aspose.3D FOSS for .NET به شما یک API یکتا و سازگار برای کار با تمام فرمتهای اصلی 3D میدهد. الگو همیشه یکسان است: یک Scene ایجاد کنید، برای بارگذاری Open() را فراخوانی کنید، بهصورت اختیاری گزینههای مخصوص فرمت را پیکربندی کنید، و برای خروجی Save() را فراخوانی کنید. تشخیص فرمت، I/O مبتنی بر استریم، و تبدیل دستهای آن را برای ادغام در هر خط لوله .NET ساده میکند.
برای اطلاعات بیشتر:
- API Reference – مستندات جزئی کلاسها و متدها.
- Knowledge Base – مقالات عملی «چگونهکردن».
- GitHub – کد منبع و ردیاب مشکلات.