บทนำ

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 – การอ้างอิงแบบคลาสต่อคลาสพร้อมลายเซ็นเมธอดและรายละเอียดคุณสมบัติ.

แหล่งข้อมูลที่เกี่ยวข้อง