Tính năng và Chức năng

Tính năng và Chức năng

Trang này bao phủ mọi lĩnh vực tính năng chính của aspose-3d-foss 26.1.0 với các ví dụ Java hoạt động.


Tải và Lưu Cảnh

scene.open() tải một tệp; scene.save() xuất nó:

import com.aspose.threed.Scene;

Scene scene = new Scene();
scene.open("input.obj");
scene.save("output.glb");

Phương pháp tĩnh thay thế:

Scene scene = Scene.fromFile("input.fbx");
scene.save("output.stl");

Các tùy chọn riêng theo định dạng

Truyền LoadOptions hoặc SaveOptions lớp con để kiểm soát chi tiết:

import com.aspose.threed.*;

Scene scene = new Scene();
ObjLoadOptions opts = new ObjLoadOptions();
opts.setFlipCoordinateSystem(true);
scene.open("model.obj", opts);

GltfSaveOptions saveOpts = new GltfSaveOptions();
saveOpts.setFlipCoordinateSystem(true);
scene.save("model.glb", saveOpts);

Lưu ý: FBX chỉ được hỗ trợ để nhập; xuất FBX không được triển khai trong phiên bản FOSS. Chỉ FBX nhị phân các tệp được hỗ trợ để nhập — ASCII FBX gây lỗi ImportException.


Xây dựng Đồ thị Cảnh

Tạo các node và gắn các thực thể:

Scene scene = new Scene();
Node root = scene.getRootNode();

Mesh mesh = new Mesh("myMesh");
mesh.getControlPoints().add(new Vector4(0, 0, 0));
mesh.getControlPoints().add(new Vector4(10, 0, 0));
mesh.getControlPoints().add(new Vector4(10, 10, 0));
mesh.createPolygon(0, 1, 2);

Node meshNode = root.createChildNode("triangle", mesh);

Thao tác Mesh

Tạo một Mesh bằng cách lập trình với các điểm điều khiển và đa giác:

Mesh mesh = new Mesh("custom");
mesh.getControlPoints().add(new Vector4(0, 0, 0));
mesh.getControlPoints().add(new Vector4(10, 0, 0));
mesh.getControlPoints().add(new Vector4(10, 10, 0));
mesh.getControlPoints().add(new Vector4(0, 10, 0));
mesh.createPolygon(0, 1, 2, 3);

Biến đổi

Mỗi Node mang một Transform:

Node node = scene.getRootNode().createChildNode("moved", new Mesh());
node.getTransform().setTranslation(10, 0, 5);
node.getTransform().setScale(2, 2, 2);

Đọc không gian thế giới qua node.getGlobalTransform().getMatrix().


Vật liệu

Gán vật liệu cho các nút:

PbrMaterial mat = new PbrMaterial("shiny");
mat.setAlbedo(new Vector4(0.8, 0.2, 0.2, 1.0));
mat.setMetallicFactor(0.5);
mat.setRoughnessFactor(0.3);

scene.getRootNode().createChildNode("red_mesh", mesh, mat);

Các loại vật liệu: Material (cơ bản), PbrMaterial (PBR metallic-roughness).


Mẹo và Thực hành Tốt nhất

  • Sử dụng Scene.fromFile() để tải một dòng khi không cần tùy chọn tùy chỉnh
  • Xây dựng meshes một cách lập trình bằng createPolygon() cho hình học tùy chỉnh
  • Sử dụng .glb phần mở rộng cho đầu ra glTF nhị phân gọn
  • Kiểm tra node.getEntity() != null trước khi ép kiểu
  • Xuất STL không tự động chia đa giác thành tam giác. Xuất STL nhị phân chỉ ghi 3 đỉnh đầu tiên của mỗi mặt đa giác — các mặt tứ giác hoặc n-gon bị cắt ngầm. Xuất STL ASCII ghi tất cả các chỉ số đỉnh, dẫn đến các khối facet bị sai dạng cho các mặt không phải tam giác. Luôn truyền các mesh đã được chia thành tam giác trước (tất cả các mặt là tam giác) cho quá trình xuất STL để tránh mất dữ liệu hoặc đầu ra không hợp lệ.

Các vấn đề thường gặp

Vấn đềNguyên nhânSửa chữa
Ngoại lệ khi tảiTệp không được hỗ trợ hoặc bị hỏngXác nhận tệp mở trong trình xem 3D
Thiếu vật liệu sau khi tải OBJ.mtl tệp không tìm thấyĐặt .mtl bên cạnh .obj; đảm bảo vật liệu được bật
Không khớp tỷ lệ sau khi nhậpCác hệ đơn vị khác nhauÁp dụng một Transform tỷ lệ sau khi tải

FAQ

Làm thế nào để tôi phát hiện định dạng của một tệp?

FileFormat format = FileFormat.detect("unknown.bin");
System.out.println(format.getExtension());

Tôi có thể tải từ một luồng không?

Có. scene.open() chấp nhận một InputStream.

Các định dạng nào hỗ trợ cả nhập và xuất?

OBJ, STL, và glTF/GLB hỗ trợ cả hai hướng. FBX chỉ hỗ trợ nhập; xuất chưa được triển khai trong phiên bản FOSS.


Tóm tắt Tham chiếu API

Lớp / Phương thứcMô tả
SceneBộ chứa cảnh 3D cấp cao nhất
scene.open()Tải tệp 3D bằng đường dẫn hoặc luồng
scene.save()Xuất cảnh ra tệp hoặc luồng
Scene.fromFile()Nhà máy tĩnh để tải và trả về một Scene
NodeNút phân cấp cảnh
node.createChildNode()Tạo và gắn một nút con
MeshLưới đa giác với các điểm điều khiển và danh sách mặt
mesh.createPolygon()Xác định một mặt đa giác
Mesh.toMesh()Chuyển đổi hoặc sao chép hình học lưới
TransformDịch chuyển, quay và tỉ lệ cục bộ
FileFormatĐăng ký và bộ phát hiện cho các định dạng
 Tiếng Việt