Pengantar

3D FOSS adalah perpustakaan .NET open-source gratis untuk bekerja dengan format file 3d. Perangkat ini menyediakan serangkaian kelas utilitas yang lebih dari sekadar konversi file, memungkinkan pengembang memanipulasi mesh, mengubah bentuk, dan menghasilkan geometri primitif secara programatis.

Posting ini berfokus pada kemampuan utilitas dalam perpustakaan: kelas dan metode yang Anda cari ketika perlu menrigulasi mesh, membangun transformasi matriks langkah demi langkah, atau membuat geometri parameter. Blok bangunan ini melengkapi inti adegan-pemuatan dan scenes-menyimpan alur kerja dibahas di posting pengantar .

Apakah Anda memproses aset 3D dalam pipa build, menyiapkan geometri untuk mesin game, atau mengkonversi antara format, utilitas ini menangani tugas umum yang muncul di alur kerja dunia nyata 3d.


Apa yang Termasuk?

Operasi jaring

Pengelolaan Mesh Anda dapat membuat poligon dari indeks vertex, menanyakan ukuran polygon, memantulkan wajah dan mengoptimalkan data vertexes. ControlPoints properti memberikan akses langsung ke posisi vertex, sementara Polygons Mengungkapkan array indeks wajah.

using Aspose.3D.Converter;

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();

Transform Builder (Pembangun yang Berubah)

Pengelolaan TransformBuilder class menyediakan antarmuka yang lancar untuk membangun matriks transformasi melalui urutan operasi translate, rotate, dan skala. Anda mengontrol urutan komposisi (apend atau prepend) dan dapat mengatur ulang pembangun untuk memulai rantai baru.

using Aspose.3D.Converter;

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;

Modifier Polygon

Pengelolaan PolygonModifier kelas menawarkan metode utilitas statis untuk pengolahan mesh. Triangulate Metode ini mengubah polygon mesh bersisi n menjadi geometry segitiga saja, yang merupakan input yang diperlukan untuk sebagian besar mesin rendering dan simulasi fisika.

using Aspose.3D.Converter;

var scene = new Scene();
var box = new Box(2, 2, 2);
Mesh boxMesh = box.ToMesh();

// Convert all polygons to triangles
Mesh triangulated = PolygonModifier.Triangulate(boxMesh);

Generasi Geometri Primitatif

Perpustakaan ini mencakup kelas geometri parameter seperti: Box, Sphere, dan Cylinder.Setiap primitif dapat dikonfigurasi dengan dimensi dan jumlah segmen, kemudian diubah menjadi sebuah Mesh melalui ToMesh() metode untuk pemrosesan lebih lanjut atau ekspor.

using Aspose.3D.Converter;

// 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();

Perhitungan kotak batas

Setiap Entity Subkelas mengekspos a GetBoundingBox() metode yang mengembalikan kotak pengukur berorientasi sumbu dari geometri. BoundingBox struktur menyediakan Minimum dan (b) Maximum vektor sudut, berguna untuk pertanyaan spasial dan bingkai kamera.

using Aspose.3D.Converter;

var box = new Box(4, 2, 6);
BoundingBox bounds = box.GetBoundingBox();

FVector3 min = bounds.Minimum;
FVector3 max = bounds.Maximum;

Memulai dengan cepat

Instal paket dari NuGet:

dotnet add package Aspose.3D.FOSS

Mengunggah file, triangulasi setiap mesh, dan simpan hasilnya:

using Aspose.3D.Converter;

// 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");

Format yang Didhukung

Format (Inggris)PerpanjanganBacalah.Menulis
Kollada.DahariYa, aku tahu.Ya, aku tahu.
FBX.fbxYa, aku tahu.Ya, aku tahu.
glTF / GLB.gltf / .GLBYa, aku tahu.Ya, aku tahu.
3MF.3mfYa, aku tahu.Tidak ada.
Wavefront OBJ.objYa, aku tahu.Ya, aku tahu.
PLY.layYa, aku tahu.Tidak ada.
STL.stlYa, aku tahu.Ya, aku tahu.
TMF.tmfTidak ada.Ya, aku tahu.

Open Source & Lisensi

3D FOSS dirilis di bawah lisensi MIT. Anda dapat menggunakan, memodifikasi dan mendistribusikan kembali perpustakaan dalam proyek open-source maupun proprietary. Kode sumber lengkap tersedia di GitHub pada: http://www.github.com/index.php?title=3DFOSs&oldid=107264 Aspose-3d-foss/Aspose.3D-FOSS-for-.NET.


Memulai

  • Panduan Pengembang – dokumentasi lengkap yang mencakup manajemen adegan, pilihan format, dan fitur lanjutan.
  • Basis Pengetahuan – artikel cara dan pertanyaan yang sering diajukan.
  • Referensi API – referensi kelas demi kelas dengan tanda tangan metode dan rincian properti.