Giới thiệu

Chúng tôi đang phát hành Aspose.3D FOSS for Python, một thư viện Python thuần cho việc đọc, ghi và chuyển đổi các định dạng tệp 3D phổ biến. Thư viện được phát hành trên PyPI với tên aspose-3d-foss, có giấy phép MIT và không có bất kỳ phụ thuộc bên ngoài nào.

Nếu bạn từng cần kiểm tra hoặc chuyển đổi các tệp 3D một cách lập trình (trích xuất số lượng đỉnh lưới, truyền geometry OBJ vào một script xử lý, hoặc chuyển đổi hàng loạt các tệp STL sang glTF cho trình xem web), thư viện này được xây dựng cho trường hợp đó. Nó không yêu cầu driver đồ họa, mô-đun mở rộng gốc, hay bất kỳ kết nối đám mây nào.


Nội dung bao gồm

Đồ thị Cảnh lõi

Mỗi tệp được tải vào một Scene đối tượng phản ánh cấu trúc cây nút của tệp gốc. Các nút chứa Transform (dịch chuyển, quay, tỷ lệ) và một hoặc nhiều thực thể đính kèm như Mesh, Camera, hoặc Light. Đồ thị cảnh (scene graph) là như nhau bất kể định dạng nguồn, vì vậy mã được viết để duyệt và xử lý hình học sẽ hoạt động trên tất cả các định dạng được hỗ trợ mà không cần sửa đổi.

Truy cập hình học

Mesh các đối tượng cung cấp:

  • control_points: danh sách vị trí đỉnh dưới dạng Vector4 (x, y, z, w)
  • polygons: danh sách các danh sách chỉ mục mặt (đa giác tùy ý, không chỉ tam giác)
  • get_element(VertexElementType): truy xuất các lớp dữ liệu đỉnh có tên cho các vector pháp tuyến, UV, màu đỉnh và nhóm làm mịn

Vật liệu

LambertMaterialPhongMaterial chứa các thuộc tính vật liệu được đọc từ OBJ .mtl tệp (ambient, diffuse, specular, emissive, transparency, shininess). Các vật liệu vẫn tồn tại qua vòng tải‑lưu cho các định dạng hỗ trợ chúng.

Tiện ích Toán học

Vector2, Vector3, Vector4, FVector3, Quaternion, Matrix4, và BoundingBox được bao gồm như các kiểu giá trị lightweight cho các phép tính hình học.

Hoạt hình

Cái AnimationClip, AnimationNode, KeyframeSequence, và KeyFrame các lớp cung cấp quyền truy cập vào dữ liệu hoạt hình keyframe từ các định dạng hỗ trợ, chẳng hạn như glTF và COLLADA.


Bắt đầu nhanh

pip install aspose-3d-foss

Tải một tệp 3D và in số lượng đỉnh của mỗi lưới:

from aspose.threed import Scene
from aspose.threed.entities import Mesh

scene = Scene.from_file("model.obj")

def visit(node):
    for entity in node.entities:
        if isinstance(entity, Mesh):
            print(f"{node.name}: {len(entity.control_points)} vertices, "
                  f"{len(entity.polygons)} polygons")
    for child in node.child_nodes:
        visit(child)

visit(scene.root_node)

Chuyển đổi cùng tệp sang glTF:

from aspose.threed import Scene
from aspose.threed.formats import GltfSaveOptions

scene = Scene.from_file("model.obj")
scene.save("model.gltf", GltfSaveOptions())

Đó là chương trình hoàn chỉnh. Không có tệp cấu hình, không có khóa API, không có cuộc gọi mạng.


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

Định dạngExtension(s)TảiLưuGhi chú
Wavefront OBJ.obj.mtl hỗ trợ tải vật liệu
STL.stlNhị phân và ASCII; tùy chọn lật hệ tọa độ
glTF 2.0.gltf, .glbGLB (binary tự chứa) được hỗ trợ
COLLADA.daeColladaSaveOptions có sẵn với flip_coordinate_system, enable_materials, indented
3MF.3mfPhù hợp cho quy trình in 3D
FBX.fbxMột phầnN/AChỉ tokenizer; trình phân tích đầy đủ đang được phát triển

Việc phát hiện định dạng được thực hiện tự động dựa trên phần mở rộng tệp. Các tùy chọn tải và lưu riêng cho từng định dạng (ObjLoadOptions, StlSaveOptions, GltfSaveOptions, ThreeMfSaveOptions).


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

Thư viện được cấp phép MIT. Bạn có thể sử dụng nó trong các ứng dụng thương mại, sửa đổi và phân phối lại mà không có hạn chế. Mã nguồn có sẵn trên GitHub dưới tổ chức Aspose.

Không có các cấp độ sử dụng, không giới hạn token, và không có telemetry. Thư viện thực hiện toàn bộ xử lý cục bộ.

Phụ thuộc: không có. Gói được cài đặt dưới dạng bánh xe pure-Python mà không có phần mở rộng C và không yêu cầu thời gian chạy của bên thứ ba.


Bắt đầu


Kết luận

Aspose.3D FOSS cho Python 26.1.0 bao gồm các định dạng tệp 3D phổ biến nhất được sử dụng trong công cụ, quy trình và ứng dụng web (OBJ, STL, glTF, COLLADA và 3MF) với API Python nhất quán và không gây khó khăn trong việc cài đặt. Nếu bạn gặp lỗi, trường hợp biên giới không được hỗ trợ, hoặc một định dạng bạn cần thêm, vui lòng mở một issue trên GitHub. Chúng tôi duy trì thư viện một cách tích cực và hoan nghênh các đóng góp.