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 เป็นรูปแบบมาตรฐานสำหรับการพิมพ์ 3 มิติ มันเก็บเรขาคณิตไตรเหลี่ยมดิบโดยไม่มีวัสดุหรือโครงสร้างลำดับชั้น Aspose.3D FOSS รองรับทั้ง STL แบบไบนารีและ ASCII.
การโหลด 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 เป็นมาตรฐานสมัยใหม่สำหรับเว็บและ 3D แบบเรียลไทม์ มันรองรับวัสดุ 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 (Filmbox)
FBX ถูกใช้กันอย่างกว้างขวางในงานพัฒนาเกมและการสร้างเนื้อหาดิจิทัล. Aspose.3D FOSS for .NET รองรับ FBX import and export. การส่งออกจะสร้าง 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 (รูปแบบการผลิต 3 มิติ)
3MF เป็นรูปแบบการพิมพ์ 3 มิติสมัยใหม่ที่พัฒนาโดยคอนซอร์เซียม 3MF รองรับเมตาดาต้าที่หลากหลาย วัสดุ และฉากหลายวัตถุในแพ็กเกจเดียวที่ใช้ 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 |
| พร้อมพิมพ์ 3 มิติ | จำกัด | ใช่ | ไม่ | ไม่ | ใช่ |
| การส่งเว็บ | ไม่ | ไม่ | ใช่ | ไม่ | ไม่ |
สรุป
Aspose.3D FOSS for .NET ให้คุณมี API เดียวที่สอดคล้องกันสำหรับทำงานกับรูปแบบไฟล์ 3D หลักทั้งหมด รูปแบบการทำงานจะเหมือนกันเสมอ: สร้าง Scene, เรียก Open() เพื่อโหลด, ตั้งค่าตัวเลือกเฉพาะรูปแบบตามต้องการ, และเรียก Save() เพื่อส่งออก การตรวจจับรูปแบบ, I/O แบบสตรีม, และการแปลงเป็นชุดทำให้การผสานรวมเข้ากับ pipeline ของ .NET ใด ๆ เป็นเรื่องง่าย.
สำหรับข้อมูลเพิ่มเติม:
- API Reference – รายละเอียดเอกสารคลาสและเมธอด.
- Knowledge Base – บทความวิธีทำเชิงปฏิบัติ.
- GitHub – โค้ดต้นฉบับและระบบติดตามปัญหา.