Introduction

Aspose.3D FOSS là một thư viện .NET miễn phí, mã nguồn mở để làm việc với các định dạng tệp 3D. Nó cung cấp một bộ đầy đủ các lớp tiện ích vượt ra ngoài việc chuyển đổi tệp đơn giản, cho phép các nhà phát triển thao tác lưới, xây dựng biến đổi và tạo hình học nguyên thủy một cách lập trình. Thư viện được phát hành dưới giấy phép MIT, phù hợp cho cả dự án cá nhân và thương mại mà không có hạn chế.

Bài viết này tập trung vào các khả năng tiện ích trong thư viện: các lớp và phương thức bạn sẽ dùng khi cần chia lưới thành tam giác, xây dựng ma trận biến đổi từng bước, hoặc tạo hình học tham số. Những khối xây dựng này bổ trợ cho quy trình tải và lưu cảnh chính được đề cập trong bài viết giới thiệu.

Cho dù bạn đang xử lý tài sản 3D trong quy trình xây dựng, chuẩn bị hình học cho engine trò chơi, hay chuyển đổi giữa các định dạng, những tiện ích này xử lý các nhiệm vụ phổ biến xuất hiện trong quy trình làm việc 3D thực tế.


Những gì được bao gồm

Các thao tác lưới

Các Mesh lớp đại diện cho hình học dựa trên polygan. bạn có thể tạo các polygon từ chỉ số trần, kích thước poligone truy vấn, mặt ba chiều và tối ưu hóa dữ liệu tròn. ControlPoints tài sản cung cấp quyền truy cập trực tiếp đến các vị trí chân trời, trong khi Polygons - Tính năng của Face Index.

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

Trình tạo biến đổi

Các TransformBuilder lớp cung cấp một giao diện lỏng để xây dựng các matrices chuyển đổi thông qua một chuỗi dịch, xoay và quy mô hoạt động. bạn kiểm soát thứ tự thành phần (tăng hoặc prepend) và có thể đặt lại nhà xây để bắt đầu một dây chuyền mới.

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;

Bộ chỉnh sửa đa giác

Lớp PolygonModifier cung cấp các phương thức tiện ích tĩnh để xử lý lưới, bao gồm phương thức Triangulate nhằm chuyển đổi một lưới đa giác n-cạnh thành hình học chỉ gồm tam giác. Trong phiên bản FOSS này, Triangulate chưa được triển khai – mọi overload đều ném ra NotImplementedException khi chạy. Để tam giác hóa hoạt động, hãy dùng Mesh.Triangulate() thay thế, như đã trình bày ở phần Các thao tác lưới phía trên.

using Aspose.ThreeD;
using Aspose.ThreeD.Entities;

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

Tạo hình học nguyên thủy

Thư viện bao gồm các lớp học địa phương thông số như: Box, Sphere, và Cylinder.Mỗi nguyên tử có thể được cấu hình với các kích thước và số phân đoạn, sau đó chuyển đổi thành một Mesh qua The ToMesh() phương pháp xử lý hoặc xuất khẩu tiếp theo.

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

Tính toán hộp bao

Every Entity Subclass trình bày A GetBoundingBox() phương pháp mà trả về hộp biên axis-liên kết của địa chất. BoundingBox Stretch cung cấp Minimum và Maximum vectors góc, hữu ích cho các truy vấn không gian và khung máy ảnh.

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;

Khởi động nhanh

Cài đặt gói từ NuGet:

dotnet add package Aspose.3D.FOSS

Tải một tệp, tạo tam giác cho mọi lưới, và lưu kết quả:

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

Các định dạng hỗ trợ

FormatExtensionReadWrite
Collada.NgàyCóCó
FBX.Phim FBXCóCó
GLTF / GLB.gltf / .gbCóCó
3MF.3mfCóKhông
Vòng Wavefront OBJ.Đồ ObjCóCó
PLY.Lời bài hátCóKhông
STL.ĐTLCóCó
TMF.TmfKhôngCó

Open Source & Giấy phép

Aspose.3D FOSS được phát hành theo giấy phép MIT. Bạn có thể sử dụng, sửa đổi và phân phối lại thư viện trong cả các dự án nguồn mở và sở hữu. Mã nguồn đầy đủ có sẵn trên GitHub tại: Aspose-3d-foss / Aspos.3D-FOSS-for-.NET.


bắt đầu

  • Hướng dẫn Developer - Tài liệu đầy đủ bao gồm quản lý cảnh, tùy chọn định dạng và các tính năng tiên tiến.
  • Cơ sở kiến thức - Làm thế nào để viết bài và thường xuyên hỏi câu hỏi.
  • API tham chiếu - tham chiếu lớp theo lớp với chữ ký phương pháp và chi tiết tài sản.

Tài nguyên liên quan