مقدمه
Aspose.3D FOSS یک کتابخانهٔ رایگان و متنباز .NET برای کار با فرمتهای فایل سهبعدی است. این کتابخانه مجموعهٔ کاملی از کلاسهای کمکی را ارائه میدهد که فراتر از تبدیل سادهٔ فایلها هستند و به توسعهدهندگان امکان دستکاری مشها، ساخت تبدیلات، و تولید هندسهٔ اولیه بهصورت برنامهنویسی را میدهند. این کتابخانه تحت مجوز MIT منتشر شده است و بدون محدودیتی برای پروژههای شخصی و تجاری مناسب است.
این پست بر قابلیتهای کمکی موجود در کتابخانه متمرکز است: کلاسها و متدهایی که هنگام نیاز به مثلثبندی یک مش، ساخت ماتریس تبدیل بهصورت گام به گام، یا ایجاد هندسهٔ پارامتریک به آنها مراجعه میکنید. این بلوکهای ساختاری، جریان کاری اصلی بارگذاری و ذخیرهسازی صحنه که در پست مقدمه پوشش داده شد را تکمیل میکنند.
چه در حال پردازش داراییهای سهبعدی در یک خط ساخت باشید، چه هندسه را برای موتور بازی آماده میکنید یا بین فرمتها تبدیل میسازید، این ابزارها وظایف رایجی را که در جریانهای کاری واقعی سهبعدی بروز میکند، مدیریت میکنند.
آنچه شامل میشود
عملیات مش
کلاس 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 یک رابط کاربری روان برای ساخت ماتریسهای تبدیل از طریق یک توالی از عملیات جابجایی، چرخش و مقیاسبندی فراهم میکند. شما میتوانید ترتیب ترکیب (اضافه کردن یا پیشافزودن) را کنترل کنید و میتوانید سازنده را بازنشانی کنید تا زنجیرهای تازه آغاز کنید.
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 روشهای کمکی ایستای برای پردازش مش فراهم میکند، از جمله روش Triangulate که برای تبدیل یک مش چندضلعی nضلعی به هندسهٔ فقط مثلثی در نظر گرفته شده است. در این نسخهٔ متن باز، Triangulate پیادهسازی نشده است — هر overload در زمان اجرا NotImplementedException را پرتاب میکند. برای انجام مثلثبندی مؤثر، به جای آن از 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 میتواند با ابعاد و تعداد بخشها پیکربندی شود، سپس از طریق روش ToMesh() به یک Mesh تبدیل میشود برای پردازش یا خروجی بیشتر.
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();
محاسبه جعبهٔ محدود
هر زیرکلاس 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 موجود است.
شروع کار
- راهنمای توسعهدهنده – مستندات کامل شامل مدیریت صحنه، گزینههای فرمت و ویژگیهای پیشرفته.
- پایگاه دانش – مقالات آموزش گامبهگام و سؤالات متداول.
- API Reference – مرجع کلاس به کلاس با امضاهای متدها و جزئیات ویژگیها.