Giới thiệu

Làm việc với nội dung 3D trong Java thường đòi hỏi phải lựa chọn giữa trọng lượng nặng. động cơ trò chơi và sách toán bare-bones. aspose-3d-foss gói cung cấp A Mạng trung tâm: một API tập trung cảnh-graf xử lý các tệp I/O, hiệc node, xây dựng mảnh, và phối hợp chuyển đổi mà không kéo trong một rendering đường ống hoặc một chuỗi phụ thuộc bản địa.

Aspose.3D FOSS cho Java là một thư viện nguồn mở được phân phối theo giấy phép MIT. Nó cung cấp 80 lớp quy mô quản lý cảnh, địa chất, vật liệu và định dạng chuyển đổi. Thư viện đọc FBX, glTF/GLB, Wavefront OBJ, và STL, viết gltF / GLB , OBG, and STl (FBX xuất khẩu không được thực hiện), làm cho nó có thể thực tế cho máy chủ bên 3D xử lý, xây dựng công cụ tích hợp, dữ liệu-thay đổi ống chạy trên Java 21 hoặc sau đó.

Bài viết này đi qua các khả năng quản lý cảnh trong thư viện: làm thế nào để xây dựng một cảnh từ rò rỉ, dân số hóa nó với địa chất và biến đổi, và xuất kết quả vào đĩa.


Những gì được bao gồm

Hình ảnh Graph Basics

Các Scene lớp là container gốc cho mỗi tài liệu 3D. Nó có một root Node, tài sản metadata, clip hoạt hình, và các cảnh phụ. bạn có thể tạo một trống - Scene và sau đó populate nó, hoặc tải một tệp hiện có với Scene.fromFile.

import com.aspose.threed.Scene;
import com.aspose.threed.Node;

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

// Add named child nodes to build a hierarchy
Node chassis = root.createChildNode("Chassis");
Node wheel = chassis.createChildNode("FrontLeftWheel");

Mỗi người Node Có thể giữ một Entity (Như một Mesh hoặc Camera) a) A Transform, một danh sách các vật liệu, và thêm nút trẻ em. cấu trúc cây gương mô hình cảnh-graf được sử dụng bởi hầu hết các công cụ viết 3D.

Mesh xây dựng

Các Mesh lớp cho phép bạn định nghĩa địa phương từ các điểm kiểm soát và đa dạng - Thêm các điểm tham quan. bạn thêm verticals với addControlPoint,Sau đó kết nối chúng vào mặt. Với createPolygon.

import com.aspose.threed.Mesh;

Mesh box = new Mesh("Box");

// Define eight corners of a cube
box.addControlPoint(0, 0, 0);
box.addControlPoint(1, 0, 0);
box.addControlPoint(1, 1, 0);
box.addControlPoint(0, 1, 0);
box.addControlPoint(0, 0, 1);
box.addControlPoint(1, 0, 1);
box.addControlPoint(1, 1, 1);
box.addControlPoint(0, 1, 1);

// Create quad faces
box.createPolygon(0, 1, 2, 3); // back
box.createPolygon(4, 5, 6, 7); // front
box.createPolygon(0, 4, 7, 3); // left
box.createPolygon(1, 5, 6, 2); // right
box.createPolygon(3, 2, 6, 7); // top
box.createPolygon(0, 1, 5, 4); // bottom

scene.getRootNode().createChildNode("Box", box);

Cửa lửa Mesh bao gồm triangulate(), optimize(removeVertices),Và Boolean hoạt động (union, difference, intersectTuy nhiên, các phương pháp này vẫn còn trong phát hành hiện tại - họ trả về một clone của mảnh nhập mà không thực hiện Chiến dịch được gọi là.

Transform và Positioning

Mỗi người Node mang theo a Transform Điều khiển dịch, xoay địa phương của nó, Các thành phần này được tạo ra thông qua hiến pháp để di chuyển một nút mẹ Nó di chuyển tất cả con cái của nó.

import com.aspose.threed.Transform;
import com.aspose.threed.Node;

Node node = scene.getRootNode().createChildNode("Shifted");
Transform t = node.getTransform();
t.setTranslation(5.0, 0.0, -3.0);
t.setScale(2.0, 2.0, 2.0);
t.setEulerAngles(0, 45.0, 0);

Đối với các câu hỏi đặt vị trí tuyệt đối, gọi điện thoại node.getGlobalTransform() để thu hồi Các thành phần GlobalTransform,hoặc node.evaluateGlobalTransform(true) Để có được a Matrix4 Điều này bao gồm các offset địa phương.

PBR vật liệu

Các PbrMaterial lớp cung cấp các thuộc tính rendering dựa trên vật lý: Albedo màu, yếu tố kim loại, sắc rắn, màu phát thải và minh bạch. Tùy chọn một vật liệu cho một nút khi tạo ra đứa trẻ.

import com.aspose.threed.PbrMaterial;
import com.aspose.threed.Vector4;
import com.aspose.threed.Vector3;

PbrMaterial mat = new PbrMaterial("RedMetal");
mat.setAlbedo(new Vector4(0.9, 0.1, 0.1, 1.0));
mat.setMetallicFactor(0.8);
mat.setRoughnessFactor(0.3);
mat.setEmissiveColor(new Vector3(0, 0, 0));

scene.getRootNode().createChildNode("Part", box, mat);

định dạng phát hiện

Các FileFormat lớp cung cấp các tiện ích tìm kiếm và phát hiện tĩnh. bạn có thể giải quyết một định dạng bằng file extension hoặc tìm kiếm một dòng để xác định các tập tin không rõ.

import com.aspose.threed.FileFormat;

FileFormat fmt = FileFormat.getFormatByExtension("model.glb");
boolean canRead  = fmt.getCanImport();
boolean canWrite = fmt.getCanExport();

Hệ thống chuyển đổi Coordinate System Conversion

AxisSystem cho phép bạn xác định các axis, front-axis và khả năng của một Hệ thống điều phối, sau đó tính toán một Matrix4 chuyển đổi địa chất giữa các hợp đồng (ví dụ, từ một hệ thống tay phải Z-up đến một Y-Up) 1 tay trái).

import com.aspose.threed.AxisSystem;
import com.aspose.threed.Axis;
import com.aspose.threed.CoordinateSystem;
import com.aspose.threed.Matrix4;

AxisSystem source = new AxisSystem(
    CoordinateSystem.RIGHT_HANDED, Axis.Z_AXIS, Axis.Y_AXIS);
AxisSystem target = new AxisSystem(
    CoordinateSystem.LEFT_HANDED, Axis.Y_AXIS, Axis.Z_AXIS);
Matrix4 conversion = source.transformTo(target);

Khởi động nhanh

Thêm sự phụ thuộc của Maven:

<dependency>
  <groupId>org.aspose</groupId>
  <artifactId>aspose-3d-foss</artifactId>
  <version>26.5.0</version>
</dependency>

Xây dựng một cảnh đơn giản và xuất nó:

import com.aspose.threed.Scene;
import com.aspose.threed.Mesh;
import com.aspose.threed.Node;
import com.aspose.threed.StlSaveOptions;
import com.aspose.threed.FileContentType;

Scene scene = new Scene();
Mesh mesh = new Mesh("Triangle");
mesh.addControlPoint(0, 0, 0);
mesh.addControlPoint(1, 0, 0);
mesh.addControlPoint(0, 1, 0);
mesh.createPolygon(0, 1, 2);

scene.getRootNode().createChildNode("Shape", mesh);

StlSaveOptions opts = new StlSaveOptions();
opts.setContentType(FileContentType.BINARY);
scene.save("output.stl", opts);

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

định dạngmở rộngĐọcviết
FBX (ASCII và Binary, 6.x-7.x).fbxKhông
GTTF 1.0 / 2.0.gltf
GTTF Binary.glb
Vòng Wavefront OBJ.obj
STL (ASCII và Binary).stl

Mỗi định dạng được dành riêng cho LoadOptionsSaveOptions Các lớp (for Ví dụ , FbxLoadOptions, GltfSaveOptions, StlSaveOptions(Điều này cho thấy Thiết lập định dạng cụ thể như hệ thống tắt phối hợp và loại nội dung chọn lựa .


Open Source & Giấy phép

Aspose.3D FOSS for Java được phát hành dưới giấy phép MIT. mã nguồn là: Có sẵn trên GitHub tại Aspose.3D-FOSS-để Java. Bạn có thể sử dụng, sửa đổi và phân phối lại thư viện trong thương mại và Các dự án không thương mại mà không có giới hạn.


bắt đầu