Giới thiệu

Aspose.3D FOSS cho TypeScript (@aspose/3d) là một thư viện định dạng tệp 3D mã nguồn mở, có giấy phép MIT, dành cho Node.js và môi trường trình duyệt hiện đại. Các nhà phát triển xây dựng trình xem mô hình 3D, bộ chuyển đổi định dạng, công cụ xử lý hình học, hoặc các pipeline 3D phía máy chủ có thể cài đặt nó bằng một lệnh duy nhất npm install @aspose/3d và ngay lập tức bắt đầu tải, tạo và xuất nội dung 3D.

Thư viện hỗ trợ các định dạng trao đổi chính — OBJ, glTF 2.0 / GLB, STL, 3MF và COLLADA cho cả nhập và xuất. Các lớp nhập/xuất FBX tồn tại nhưng chưa được kết nối vào việc tự động phát hiện định dạng. API đồ thị cảnh phản ánh mô hình quen thuộc từ các công cụ tạo 3D: một Scene chứa một rootNode, mỗi Node có thể mang các nút con và các đối tượng thực thể (Mesh, Camera, Light), và hệ thống phân cấp biến đổi có thể truy cập đầy đủ để đọc và ghi.

Các tính năng chính

  • Đa định dạng I/O: Nhập và xuất OBJ (với .mtl vật liệu), glTF 2.0 / GLB, STL (binary và ASCII), 3MF, và COLLADA từ cả đường dẫn tệp và bộ nhớ Buffer đối tượng. Hỗ trợ FBX chưa được kết nối vào việc tự động phát hiện.
  • API đồ thị cảnh: Scene, Node, Mesh, Camera, Light cây phân cấp với quản lý cha/con đầy đủ; duyệt các nút một cách đệ quy qua node.childNodes
  • hệ thống vật liệu PBR: Vật liệu Lambert, Phong và PBR (metallic/roughness) có thể truy cập qua node.entity.material
  • Thao tác Mesh: Truy cập dữ liệu đỉnh thô qua mesh.controlPoints (mảng của Vector4), chỉ số đa giác qua mesh.polygonCount, và các kênh phần tử đỉnh qua mesh.getElement()
  • Tiện ích toán học: Vector2, Vector3, Vector4, Matrix4, Quaternion, và các kiểu hộp bao cho các phép tính không gian
  • Hệ thống hoạt hình: Hoạt hình keyframe với AnimationClip, AnimationChannel, và các đường cong nội suy (tuyến tính, Bezier, TCB spline)
  • Các tùy chọn riêng cho định dạng: Theo định dạng LoadOptions / SaveOptions các lớp kiểm soát việc lật tọa độ, tỉ lệ, tải vật liệu, và hơn nữa

Bắt đầu

Cài đặt từ npm. Yêu cầu Node.js 18 trở lên; khuyến nghị TypeScript 5.0+.

npm install @aspose/3d

Tải tệp OBJ và kiểm tra cảnh:

import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';

const scene = new Scene();
const options = new ObjLoadOptions();
options.enableMaterials = true;
scene.open('model.obj', options);

for (const node of scene.rootNode.childNodes) {
    if (node.entity && 'controlPoints' in node.entity) {
        const mesh = node.entity as any;
        console.log(`Mesh "${node.name}": ${mesh.controlPoints.length} vertices`);
    }
}

Xuất ra glTF

Lưu bất kỳ cảnh nào đã tải hoặc được tạo ra thành định dạng nhị phân glTF 2.0 (GLB):

import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';

const scene = new Scene();
scene.open('input.obj', new ObjLoadOptions());
scene.save('output.glb');
console.log('Exported to output.glb');

Thư viện tự động phát hiện định dạng đầu ra từ phần mở rộng tệp. Truyền một GltfSaveOptions thể hiện để kiểm soát việc nhúng vật liệu PBR, kết cấu, và mã hoá nhị phân so với JSON.

Xây dựng Cảnh

Xây dựng một cảnh bằng lập trình và xuất nó:

import { Scene, Node } from '@aspose/3d';
import { Mesh } from '@aspose/3d/entities';

const scene = new Scene();
const mesh = new Mesh();
// ... populate mesh.controlPoints and polygons ...
const node = new Node('myMesh');
node.entity = mesh;
scene.rootNode.addChildNode(node);
scene.save('programmatic.glb');

Xem Thêm