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
.mtlvậ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,Lightcây phân cấp với quản lý cha/con đầy đủ; duyệt các nút một cách đệ quy quanode.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ủaVector4), chỉ số đa giác quamesh.polygonCount, và các kênh phần tử đỉnh quamesh.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/SaveOptionscá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');