Chúng tôi rất vui mừng thông báo về khả năng sử dụng của Aspose.3D FOSS cho Java - một thư viện miễn phí, nguồn mở để làm việc với các định dạng tệp 3D trong ứng dụng Java. Được xây dựng như là giải pháp Java tinh khiết mà không có phụ thuộc bản địa, thư ký chạy trên Java 21 và sau đó, khiến nó dễ dàng truy cập vào một loạt các dự án và môi trường.
Bài viết này đi qua những gì thư viện cung cấp, làm thế nào để bắt đầu và nơi để đi từ đây.
3D FOSS là gì cho Java?
Aspose.3D FOSS for Java là một thư viện xử lý tệp 3D nhẹ được xuất bản dưới đây: Giấy phép MIT.Nó cung cấp một API đồ họa cảnh cho phép bạn tải, kiểm tra, chuyển đổi và lưu các mô hình 3D trên nhiều định dạng được sử dụng rộng rãi. Thư viện được viết hoàn toàn trong Java và không yêu cầu bất kỳ cấu hình ngoại địa hoặc cụ thể nền tảng nào.
Mã nguồn có sẵn trên GitHub: HTTPS://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java
Lợi ích chính
- Đơn giản Java - Không có JNI, không có thư viện bản địa, chẳng có giới hạn nền tảng.
- Java 21+ Đánh giá tương thích .
- MIT được cấp phép - Sử dụng nó trong các dự án cá nhân, thương mại hoặc sở hữu mà không có giới hạn.
- Hình ảnh - graph architecture - Một cây quen thuộc của các nút, mảnh, máy ảnh và vật liệu.
- Hỗ trợ đa định dạng - đọc và viết các tập tin OBJ, STL, glTF 2.0, và GLB; đọc các tệp FBX.
Khởi động nhanh
Maven cài đặt
Thêm sự phụ thuộc sau đây vào bạn pom.xml:
<dependency>
<groupId>org.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.5.0</version>
</dependency>Chuyển đổi đầu tiên của bạn
Trường hợp sử dụng đơn giản nhất là tải một tệp 3D trong một định dạng và lưu nó trong khác. đây là chuyển đổi hai dòng từ OBJ đến STL:
import com.aspose.threed.*;
public class QuickConvert {
public static void main(String[] args) throws Exception {
Scene scene = Scene.fromFile("cube.obj");
scene.save("output.stl");
}
}
Các Scene lớp là điểm đầu vào trung tâm. gọi Scene.fromFile() với một đường file để tải lên một mô hình, sau đó gọi save() với con đường mục tiêu. Thư viện nhập định dạng từ phần mở rộng tệp.
Tạo một cảnh từ Scratch
Bạn cũng có thể xây dựng các cảnh một cách lập trình:
import com.aspose.threed.*;
public class BuildScene {
public static void main(String[] args) throws Exception {
Scene scene = new Scene();
Node node = scene.getRootNode().createChildNode("Box");
Transform t = node.getTransform();
t.setTranslation(1, 2, 3);
scene.save("scene.gltf");
}
}
Điều này tạo ra một cảnh mới, thêm một nút trẻ em được gọi là “Box” dưới gốc, đặt nó ở các tọa độ (1, 2, 3), và xuất kết quả như một tập tin glTF.
Loading với Format-Specific Options
Khi bạn cần kiểm soát tốt hơn quá trình tải, mỗi định dạng cung cấp một lớp tùy chọn dành riêng. Ví dụ, tải một tệp STL với các tùy biến rõ ràng:
import com.aspose.threed.*;
public class LoadWithOptions {
public static void main(String[] args) throws Exception {
StlLoadOptions opts = new StlLoadOptions();
Scene scene = Scene.fromFile("part.stl", opts);
// Inspect the loaded scene
System.out.println("Root children: "
+ scene.getRootNode().getChildNodes().size());
// Re-export as OBJ
scene.save("part.obj");
}
}
Các Scene.fromFile() phương pháp tĩnh chấp nhận bất kỳ loại tùy chọn tải: ObjLoadOptions, StlLoadOptions, GltfLoadOptions,hoặc FbxLoadOptions.
Đi qua cảnh đồ họa
Một khi một cảnh được tải lên, bạn có thể đi bộ trên cây node để kiểm tra hoặc sửa đổi nội dung của nó:
import com.aspose.threed.*;
public class TraverseScene {
public static void main(String[] args) throws Exception {
Scene scene = Scene.fromFile("model.gltf");
for (Node child : scene.getRootNode().getChildNodes()) {
System.out.println("Node: " + child.getName());
Transform t = child.getTransform();
System.out.println(" Translation: " + t.getTranslation());
Entity entity = child.getEntity();
if (entity instanceof Mesh) {
Mesh mesh = (Mesh) entity;
System.out.println(" Vertices: "
+ mesh.getControlPoints().size());
}
}
}
}
Mô hình này hữu ích cho việc phân tán, tạo ra báo cáo về nội dung mô hình hoặc thay đổi một cách chọn lọc các phần của cảnh trước khi xuất.
Sử dụng Transforms
Việc đặt các nút trong không gian 3D được thực hiện thông qua Transform đối tượng trên mỗi Node:
import com.aspose.threed.*;
public class TransformExample {
public static void main(String[] args) throws Exception {
Scene scene = new Scene();
Node parent = scene.getRootNode().createChildNode("Parent");
parent.getTransform().setTranslation(10, 0, 0);
Node child = parent.createChildNode("Child");
child.getTransform().setTranslation(5, 0, 0);
child.getTransform().setScale(2, 2, 2);
// Child's world position is (15, 0, 0) due to
// parent-child transform inheritance
scene.save("transformed.gltf");
}
}
Sự biến đổi theo mô hình di sản của cha mẹ và con: vị trí không gian thế giới của một đứa trẻ là sự kết hợp của sự chuyển hóa địa phương của nó, và tất cả các tổ tiên đều được chuyển đổi đến gốc rễ.
Những gì được bao gồm
Thư viện tàu với một tập trung các khả năng được thiết kế xung quanh mô hình đồ họa cảnh 3D.
Phim Graph
Hình ảnh là nền của API. Mỗi tập tin 3D được trình bày như một cấu trúc cây:
| lớp học | vai trò |
|---|---|
Scene | Container cấp cao; rễ của biểu đồ cảnh |
Node | Một vị trí được đặt tên trong cây; giữ các biến đổi và nút trẻ em |
Entity | Cơ sở trừu tượng cho các đối tượng hình ảnh gắn kết với nút |
Mesh | Địa lý đa phương - dọc, mặt, bình thường |
Camera | Định nghĩa Camera Virtual |
Transform | Bản dịch địa phương, xoay và quy mô cho một nút |
GlobalTransform | Máy tính biến đổi không gian thế giới |
vật liệu
Thư viện cung cấp một mô hình vật liệu PBR (Physically Based Rendering):
- PbrMaterial - vật lý dựa trên các vật liệu rendering với albedo, kim loại, cứng rắn, màu sắc phát ra và minh bạch. đây là lớp vật chất concrete duy nhất có sẵn trong phiên bản Java.
Matematics tiện ích
Các com.aspose.threed gói bao gồm các nguyên tố toán học thiết yếu:
- Vector3 - 3 thành phần vector cho vị trí, hướng và màu sắc.
- Matrix 4 - 4x4 chuyển đổi matrix.
- Quaternion - Sự đại diện xoay.
- BoundingBox - hộp kết nối axis cho các truy vấn không gian.
Vector3 a = new Vector3(1, 0, 0);
Vector3 b = new Vector3(0, 1, 0);
Vector3 c = Vector3.add(a, b); // (1, 1, 0)
Load and Save Options (Tài và lưu tùy chọn)
Mỗi định dạng có các lớp tùy chọn dành riêng cho phép bạn kiểm soát hành vi nhập khẩu và xuất khẩu:
| định dạng | Load tùy chọn | Save Options Ưu đãi |
|---|---|---|
| OBJ | ObjLoadOptions | ObjSaveOptions |
| STL | StlLoadOptions | StlSaveOptions |
| GLTF / GLB | GltfLoadOptions | GltfSaveOptions |
| FBX | FbxLoadOptions | (Chỉ có nhập khẩu) |
Ví dụ, để xuất khẩu glTF với JSON in khá và một hệ thống tọa độ nhấp chuột:
GltfSaveOptions opts = new GltfSaveOptions();
opts.setFlipCoordinateSystem(true);
opts.setPrettyPrint(true);
scene.save("output.gltf", opts);
Các định dạng hỗ trợ
Bảng sau đây tổng hợp các định dạng mà Aspose.3D FOSS cho Java có thể đọc và viết.
| định dạng | mở rộng | nhập khẩu | xuất khẩu | Ghi chú |
|---|---|---|---|---|
| OBJ | .obj | Có | Có | Với các vật liệu MTL |
| STL | .stl | Có | Có | Binary + ASCII |
| GTTF 2.0 | .gltf | Có | Có | định dạng JSON |
| GLB | .glb | Có | Có | Binary GlTF thông qua GltfSaveOptions |
| FBX | .fbx | Có | Không | Chỉ nhập khẩu |
OBJ, STL, glTF và GLB hỗ trợ cả tải và tiết kiệm. FBX được hỗn hợp cho nhập khẩu chỉ.
Hướng dẫn chọn Format
Chọn định dạng phù hợp phụ thuộc vào trường hợp sử dụng của bạn:
- OBJ là lý tưởng khi bạn cần sự tương thích tối đa trên các công cụ 3D. Gần như mọi ứng dụng mô hình có thể đọc và viết OBJ. Nó hoạt động tốt cho trao đổi dữ liệu mesh nhưng chỉ mang thông tin vật liệu cơ bản thông qua tệp MTL đồng hành.
- STL là định dạng lựa chọn cho dòng công việc in 3D. Nó lưu trữ hình học triangulated nguyên chất mà không có vật liệu hoặc hiện đợt, đó chính xác là những gì phần mềm gạch mong đợi. Nếu đường ống của bạn kết thúc với một máy in 2D, STL là sự lựa lựa选 đơn giản.
- GTTF là tiêu chuẩn hiện đại cho web và thời gian thực 3D. Nó hỗ trợ các tài liệu PBR, toàn bộ giai đoạn hiện học, và được thiết kế để truyền hiệu quả. Sử dụng glTF khi xây dựng xem dựa trên web, làm việc với three.js hoặc Babylon.JS, hoặc nhắm mục tiêu bất kỳ đường ống rendering thời điểm thực.
- FBX Nó tích hợp sâu vào phát triển trò chơi và dòng công việc tạo nội dung kỹ thuật số. nó hỗ trợ dữ liệu cảnh phong phú bao gồm các hiê-rơ và tài liệu. Aspose.3D FOSS cho Java hỗn hợp FBX Chỉ nhập khẩu - Sử dụng nó để tải các tài sản FBX và chuyển đổi chúng sang định dạng khác.
Giới hạn quen thuộc
Điều quan trọng là lưu ý rằng Scene.render() là Không được hỗ trợ trong phiên bản FOSS. gọi phương pháp này sẽ ném một UnsupportedOperationException.Thư viện được thiết kế cho việc xử lý 3D dựa trên tệp - tải, thao tác, chuyển đổi và tiết kiệm các mô hình - thay vì trình bày thời gian thực cho một màn hình.
Open Source và giấy phép
Aspose.3D FOSS for Java được phát hành dưới Giấy phép MIT.Điều này có nghĩa là bạn được tự do:
- Sử dụng thư viện trong các ứng dụng thương mại và sở hữu.
- Thay đổi mã nguồn để phù hợp với nhu cầu của bạn.
- Chia sẻ thư viện như một phần của phần mềm của riêng bạn.
Không có phí thực, không có giới hạn sử dụng và không cần phải phân bổ bất kỳ điều gì được xác định trong giấy phép MIT.
Mã nguồn đầy đủ được lưu trữ trên GitHub, và các đóng góp được chào đón: HTTPS://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java
Yêu cầu hệ thống
| yêu cầu | chi tiết |
|---|---|
| Bản phiên bản Java | 21 or later |
| phụ thuộc | Không có (chất lượng Java) |
| nền tảng | Bất kỳ nền tảng nào chạy JVM |
| Xây dựng công cụ | Maven (được khuyến cáo) |
bắt đầu
Dưới đây là các nguồn lực để giúp bạn đứng lên và chạy:
- Tài liệu - Hướng dẫn toàn diện và API walkthroughs có sẵn trên Aspose.3D trang web tài liệu.
- Cơ sở kiến thức - Thực tế làm thế nào để các bài viết và giải quyết vấn đề trong Đánh giá 3D KB.
- API tham chiếu - Chi tiết lớp và phương pháp tham khảo tại Aspose.3D API tham khảo.
- Mã nguồn - Browse và đóng góp vào GitHub.
- Maven Trung tâm - gói được công bố như:
org.aspose:aspose-3d-foss:26.5.0tại Maven Central.
Vụ sử dụng chung
Dưới đây là một số kịch bản thực tế nơi Aspose.3D FOSS cho Java phù hợp tốt:
định dạng chuyển đổi ống
Nhiều nhóm nhận được tài sản 3D trong một định dạng nhưng cần chúng trong định vị khác. Một đội thiết kế có thể làm việc trên FBX trong khi đội web cần glTF. Thư viện cho phép bạn xây dựng các ống chuyển đổi tự động:
// Convert all incoming FBX assets to GLB for the web team
Scene scene = Scene.fromFile("asset.fbx");
GltfSaveOptions opts = new GltfSaveOptions();
opts.setContentType(FileContentType.BINARY);
scene.save("asset.glb", opts);
3D Model Inspection and Validation
Trước khi tích hợp tài sản 3D vào ứng dụng của bạn, bạn có thể muốn xác nhận nội dung của nó - kiểm tra số điểm, xác minh địa phương hoặc xác thực rằng các yếu tố dự kiến hiện diện:
Scene scene = Scene.fromFile("model.obj");
int nodeCount = scene.getRootNode().getChildNodes().size();
System.out.println("Top-level nodes: " + nodeCount);
for (Node child : scene.getRootNode().getChildNodes()) {
if (child.getEntity() instanceof Mesh) {
Mesh mesh = (Mesh) child.getEntity();
System.out.println(child.getName() + ": "
+ mesh.getControlPoints().size() + " vertices");
}
}
Hội nghị cảnh
Bạn có thể tải lên nhiều mô hình và kết hợp chúng vào một cảnh duy nhất:
Scene scene = new Scene();
Scene part1 = Scene.fromFile("chassis.obj");
Scene part2 = Scene.fromFile("wheels.obj");
// Add nodes from each part into the combined scene
for (Node child : part1.getRootNode().getChildNodes()) {
scene.getRootNode().getChildNodes().add(child);
}
for (Node child : part2.getRootNode().getChildNodes()) {
scene.getRootNode().getChildNodes().add(child);
}
scene.save("assembled.gltf");
Next là gì
Trong các bài viết sắp tới, chúng tôi sẽ bao gồm:
- Một nụ hôn sâu vào các tính năng chính của API, vật liệu và công cụ toán học.
- Một hướng dẫn thực tế để làm việc với mỗi định dạng 3D được hỗ trợ - OBJ, STL, glTF và FBX - bao gồm các tùy chọn tải / tiết kiệm và mô hình chuyển đổi bộ.
Hãy yên tâm và cảm thấy tự do để khám phá thư viện và chia sẻ phản hồi của bạn trên GitHub.