Giới thiệu

Chúng tôi rất vui mừng thông báo việc có sẵn Aspose.3D FOSS cho TypeScript như @aspose/3d npm package. Thư viện có giấy phép MIT này mang lại khả năng xử lý cảnh 3D chất lượng sản xuất cho các ứng dụng TypeScript và Node.js mà không cần các binary gốc, bộ công cụ đặc thù nền tảng, hay giấy phép thương mại.

Thư viện được thiết kế dựa trên một cách tiếp cận đơn giản Scene API: tải một tệp 3D bằng scene.open(), kiểm tra hoặc chuyển đổi đồ thị cảnh, và ghi kết quả bằng scene.save(). Định nghĩa kiểu TypeScript đầy đủ được đóng gói; không cần gói riêng @types/ gói là bắt buộc.

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

I/O đa định dạng. Gói này đọc và ghi sáu định dạng 3D chính trong một lần cài đặt duy nhất. OBJ được hỗ trợ để nhập; glTF 2.0, GLB, STL, 3MF và COLLADA hỗ trợ cả nhập và xuất. Các lớp nhập/xuất FBX tồn tại nhưng việc tự động phát hiện định dạng chưa được kết nối, vì vậy các tệp FBX không thể được tải qua scene.open().

Hỗ trợ TypeScript hạng nhất. Tất cả các lớp công khai, enumeration và kiểu tùy chọn đều được khai báo kiểu đầy đủ. Các IDE hỗ trợ dịch vụ ngôn ngữ TypeScript (VS Code, WebStorm, v.v.) cung cấp tính năng tự động hoàn thành chính xác và tài liệu nội tuyến cho mọi lời gọi API.

Tương thích với Node.js 18–22+. Gói đã được kiểm thử trên các bản phát hành LTS của Node.js 18, 20 và 22. Không có addon gốc nào được biên dịch trong quá trình cài đặt, vì vậy nó hoạt động trên mọi nền tảng mà Node.js hỗ trợ.

Một phụ thuộc thời gian chạy. Phụ thuộc duy nhất là xmldom, được sử dụng riêng cho việc phân tích XML COLLADA. Tất cả các bộ phân tích định dạng khác đều là các triển khai thuần JavaScript.

Giấy phép MIT. Sử dụng @aspose/3d trong các dự án thương mại, mã nguồn mở hoặc nội bộ mà không có hạn chế.

Bắt đầu nhanh

Cài đặt gói:

npm install @aspose/3d

Tải tệp OBJ và chuyển đổi sang GLB nhị phân:

import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
import { GltfSaveOptions, GltfFormat } from '@aspose/3d/formats/gltf';

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

const saveOpts = new GltfSaveOptions();
saveOpts.binaryMode = true;   // produce a single .glb file
scene.save('output.glb', GltfFormat.getInstance(), saveOpts);

console.log('Converted to GLB successfully');

Duyệt qua các nút cảnh để kiểm tra hình học:

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

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

for (const node of scene.rootNode.childNodes) {
    console.log(`Node: ${node.name}`);
    if (node.entity) {
        console.log(`  Entity type: ${node.entity.constructor.name}`);
    }
}

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

Định dạngPhần mở rộngNhậpXuấtGhi chú
Wavefront OBJ.objKhôngChỉ nhập; đọc .mtl tệp vật liệu
glTF 2.0.gltfJSON với tệp bên ngoài .bin bộ đệm
GLB nhị phân.glbĐặt binaryMode: true trong GltfSaveOptions
STL.stlASCII và STL nhị phân
3MF.3mftập tin Open Packaging Convention
FBX.fbxKhông*Không*Trình nhập/xuất tồn tại nhưng việc tự động phát hiện định dạng chưa được kết nối
COLLADA.daeYêu cầu được đóng gói xmldom phụ thuộc

Ưu điểm của TypeScript

Làm việc với @aspose/3d trong TypeScript bắt lỗi loại ở thời gian biên dịch thay vì thời gian chạy. Khi bạn gọi scene.save(), trình biên dịch xác nhận rằng đối tượng tùy chọn khớp với mong đợi SaveOptions kiểu phụ cho định dạng đã chọn. Các tùy chọn tải và lưu riêng cho từng định dạng chỉ hiển thị các thuộc tính liên quan đến định dạng đó; không có túi tùy chọn không kiểu để đoán.

Ví dụ, GltfSaveOptions.binaryMode là một kiểu đã được xác định boolean, vì vậy trình biên dịch sẽ từ chối saveOpts.binaryMode = 'yes' trước khi bất kỳ mã nào chạy. Thuộc tính hoạt hình trên AnimationClip, các kênh vật liệu trên PbrMaterial, và các loại phần tử đỉnh trên VertexElement đều có kiểu tương tự và có thể khám phá thông qua IntelliSense mà không cần tham khảo tài liệu bên ngoài.

Mã nguồn mở và miễn phí

Gói được phát hành dưới MIT License. Mã nguồn có sẵn trên GitHub. Các đóng góp, báo cáo lỗi và yêu cầu hỗ trợ định dạng đều được chào đón qua trình theo dõi vấn đề của kho.

Thư viện có một phụ thuộc thời gian chạy: xmldom phiên bản 0.9+, chỉ được sử dụng khi đọc hoặc ghi các tệp COLLADA. Tất cả các bộ phân tích và bộ ghi khác đều là các triển khai thuần JavaScript độc lập, không có thành phần nhị phân.

Bắt đầu

Kết luận

@aspose/3d phiên bản 24.12.0 cung cấp một nền tảng ổn định, có kiểu, nhẹ về phụ thuộc cho việc xử lý tệp 3D trong TypeScript và Node.js. Cho dù trường hợp sử dụng là chuyển đổi định dạng, kiểm tra cảnh, trích xuất hình học, hoặc tích hợp pipeline, thư viện bao phủ các định dạng trao đổi 3D phổ biến nhất dưới một giấy phép mã nguồn mở cho phép.

Cài đặt ngay hôm nay và cho chúng tôi biết bạn đã xây dựng gì.