บทนำ
Aspose.3D FOSS เป็นไลบรารี .NET ฟรีและโอเพ่นซอร์สสำหรับการทำงานกับรูปแบบไฟล์ 3D มันให้ชุดคลาสยูทิลิตี้ที่ครอบคลุมซึ่งเกินกว่าการแปลงไฟล์แบบง่าย ทำให้ผู้พัฒนาสามารถจัดการเมช, สร้างการแปลง, และสร้างรูปทรงพื้นฐานแบบโปรแกรมได้ ไลบรารีนี้เผยแพร่ภายใต้ไลเซนส์ MIT ทำให้เหมาะสำหรับโครงการส่วนบุคคลและเชิงพาณิชย์โดยไม่มีข้อจำกัด.
โพสต์นี้มุ่งเน้นที่ความสามารถของยูทิลิตี้ภายในไลบรารี: คลาสและเมธอดที่คุณจะใช้เมื่อจำเป็นต้องทำให้เมชเป็นสามเหลี่ยม, สร้างเมทริกซ์การแปลงขั้นตอนต่อขั้นตอน, หรือสร้างรูปทรงพารามิเตอร์ ส่วนประกอบเหล่านี้เสริมกับกระบวนการโหลดและบันทึกซีนหลักที่อธิบายในโพสต์แนะนำ.
ไม่ว่าคุณจะกำลังประมวลผลทรัพยากร 3D ในไพรลน์การสร้าง, เตรียมรูปทรงสำหรับเอนจิ้นเกม, หรือแปลงระหว่างรูปแบบต่าง ๆ ยูทิลิตี้เหล่านี้จะจัดการกับงานทั่วไปที่เกิดขึ้นในเวิร์กโฟลว์ 3D ในโลกจริง.
สิ่งที่รวมอยู่
การดำเนินการเมช
คลาส Mesh แสดงถึงเรขาคณิตแบบหลายเหลี่ยม คุณสามารถสร้างหลายเหลี่ยมจากดัชนีเวอร์เท็กซ์, สอบถามขนาดของหลายเหลี่ยม, ทำให้หน้าตาเป็นสามเหลี่ยม, และเพิ่มประสิทธิภาพข้อมูลเวอร์เท็กซ์ คุณสมบัติ ControlPoints ให้การเข้าถึงตำแหน่งเวอร์เท็กซ์โดยตรง, ส่วน Polygons เปิดเผยอาเรย์ดัชนีของหน้า.
using Aspose.ThreeD;
using Aspose.ThreeD.Entities;
var scene = new Scene();
var mesh = new Mesh("CustomMesh");
// Add control points (vertices)
mesh.ControlPoints.Add(new Vector4(0, 0, 0));
mesh.ControlPoints.Add(new Vector4(10, 0, 0));
mesh.ControlPoints.Add(new Vector4(10, 10, 0));
mesh.ControlPoints.Add(new Vector4(0, 10, 0));
// Create a quad polygon from four vertices
mesh.CreatePolygon(0, 1, 2, 3);
// Triangulate all polygons in the mesh
mesh.Triangulate();
ตัวสร้างการแปลง
คลาส TransformBuilder ให้ส่วนต่อประสานแบบไหลสำหรับการสร้างเมทริกซ์การแปลงผ่านลำดับของการ translate, rotate, และ scale operations. คุณควบคุมลำดับการผสม (append หรือ prepend) และสามารถรีเซ็ตตัวสร้างเพื่อเริ่มโซ่ใหม่ได้.
using Aspose.ThreeD;
using Aspose.ThreeD.Utilities;
var builder = new TransformBuilder(ComposeOrder.Append);
// Build a combined transform: translate, then rotate, then scale
builder.Translate(5, 0, 3);
builder.RotateDegree(45, new Vector3(0, 1, 0));
builder.Scale(2, 2, 2);
// Retrieve the composed 4x4 matrix
Matrix4 result = builder.Matrix;
ตัวแก้ไขโพลิกอน
คลาส PolygonModifier มีเมธอดยูทิลิตี้แบบ static สำหรับการประมวลผลเมช, รวมถึงเมธอด Triangulate ที่มีจุดประสงค์เพื่อแปลงเมชโพลิกอนที่มี n ด้านให้เป็นเรขาคณิตที่มีเพียงสามเหลี่ยม. ในรุ่น FOSS นี้, Triangulate ยังไม่ได้รับการใช้งาน – ทุก overload จะโยน NotImplementedException ขณะ runtime. สำหรับการทำสามเหลี่ยมที่ทำงานได้, ใช้ Mesh.Triangulate() แทน, ซึ่งแสดงในส่วน การดำเนินการเมช ด้านบน.
using Aspose.ThreeD;
using Aspose.ThreeD.Entities;
var scene = new Scene();
var box = new Box(2, 2, 2);
Mesh boxMesh = box.ToMesh();
การสร้างรูปทรงเรขาคณิตพื้นฐาน
ไลบรารีนี้รวมคลาสเรขาคณิตพารามิเตอร์เช่น Box, Sphere, และ Cylinder. แต่ละ primitive สามารถกำหนดค่าได้ด้วยมิติและจำนวนเซกเมนต์, จากนั้นแปลงเป็น Mesh ผ่านเมธอด ToMesh() เพื่อการประมวลผลหรือส่งออกต่อไป.
using Aspose.ThreeD.Entities;
// Create a parameterized sphere
var sphere = new Sphere(5.0, 32, 16);
Mesh sphereMesh = sphere.ToMesh();
// Create a cylinder (cone when one radius is zero)
var cone = new Cylinder(0, 3.0, 6.0);
Mesh coneMesh = cone.ToMesh();
การคำนวณกล่องขอบเขต
ทุก subclass ของ Entity จะเปิดเผยเมธอด GetBoundingBox() ที่คืนค่ากล่องขอบเขตที่จัดแนวตามแกนของเรขาคณิต. โครงสร้าง BoundingBox ให้เวกเตอร์มุม Minimum และ Maximum, มีประโยชน์สำหรับการสืบค้นเชิงพื้นที่และการจัดกรอบกล้อง.
using Aspose.ThreeD.Entities;
using Aspose.ThreeD.Utilities;
var box = new Box(4, 2, 6);
BoundingBox bounds = box.GetBoundingBox();
Vector3 min = bounds.Minimum;
Vector3 max = bounds.Maximum;
เริ่มต้นอย่างรวดเร็ว
ติดตั้งแพคเกจจาก NuGet:
dotnet add package Aspose.3D.FOSSโหลดไฟล์, ทำให้เมชทั้งหมดเป็นรูปสามเหลี่ยม, และบันทึกผลลัพธ์:
using Aspose.ThreeD;
using Aspose.ThreeD.Entities;
// Load a scene from an OBJ file
var scene = new Scene();
scene.Open("input.obj");
// Walk child nodes and triangulate each mesh entity
foreach (var node in scene.RootNode.ChildNodes)
{
foreach (var entity in node.Entities)
{
if (entity is Mesh mesh)
{
mesh.Triangulate();
}
}
}
// Save the triangulated scene as glTF
scene.Save("output.glb");
รูปแบบที่รองรับ
| รูปแบบ | ส่วนขยาย | อ่าน | เขียน |
|---|---|---|---|
| Collada | .dae | ใช่ | ใช่ |
| FBX | .fbx | ใช่ | ใช่ |
| glTF / GLB | .gltf / .glb | ใช่ | ใช่ |
| 3MF | .3mf | ใช่ | ใช่ |
| Wavefront OBJ | .obj | ใช่ | ใช่ |
| PLY | .ply | ใช่ | ไม่ |
| STL | .stl | ใช่ | ใช่ |
โอเพนซอร์สและการให้สิทธิ์
Aspose.3D FOSS ถูกปล่อยภายใต้ใบอนุญาต MIT. คุณสามารถใช้, แก้ไข, และแจกจ่ายซ้ำไลบรารีนี้ได้ทั้งในโครงการโอเพนซอร์สและโครงการที่เป็นกรรมสิทธิ์. โค้ดต้นฉบับเต็มพร้อมให้บริการบน GitHub ที่ aspose-3d-foss/Aspose.3D-FOSS-for-.NET.
เริ่มต้นใช้งาน
- Developer Guide – เอกสารเต็มที่ครอบคลุมการจัดการซีน, ตัวเลือกรูปแบบ, และคุณลักษณะขั้นสูง.
- Knowledge Base – บทความวิธีการและคำถามที่พบบ่อย.
- API Reference – การอ้างอิงแบบคลาสต่อคลาสพร้อมลายเซ็นเมธอดและรายละเอียดคุณสมบัติ.