引入

使用 Java 的 3D 内容通常需要在重量之间选择。 游戏发动机和数学图书馆的彩票。 aspose-3d-foss 包装提供 A 中间地:一个集中场景图表API,处理文件I/O、节点层的程序。, 建造,协调转换而不拖在一个交付 管道或原生依赖链。.

图书馆阅读 FBX,GLTF/GLB,Wavefront OBJ和STL,并写作glTf/GlB、OBJ,ST L(FBX出口不实施),使其实用于服务器侧3D处理,构建工具集成和数据转换管道运行在Java21或以后。.

此帖子通过图书馆的场景管理能力:如何从草地上构建一个场所,用地质和转型来定位它,并将结果出口到磁盘。.


什么是包含的

舞台图形基本

那是 Scene 类是每个3D文档的根容器,它包含一个根。 Node,资产的代数据,动画剪辑和子场景. 您可以创建一个空白 现场,然后将其定位,或加载现有文件与 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");

每个人 Node 可以持有一 Entity (如 A 等) MeshCamera) ,A Transform,材料列表,以及其他儿童节点。 镜子是大多数3D编辑工具使用的场景图形模式。.

梅西建设

那是 Mesh 班级允许您从控制点和多角形定义地质学。 指标:你添加垂直的 addControlPoint,然后将它们连接到面孔中。 与 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);

火焰中包含 triangulate(), optimize(removeVertices),和布莱恩 操作(union, difference, intersect但是,这些方法是固定的。 目前的发布 - 他们返回一个插入点的克隆,而不执行 所谓的行动。.

转型和定位

每一个 Node 带 A Transform 它控制了它的本地翻译,旋转, 这些由 hierarchy 组成,以便移动一个父母节点。 把所有的孩子都移动。.

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);

对于绝对位置查询,请求 node.getGlobalTransform() 要回收 由组成 GlobalTransform,或 node.evaluateGlobalTransform(true) 要得到一 Matrix4 其中包括地质学的分数。.

PBR材料

那是 PbrMaterial 班级提供物理基于的 rendering 属性: 阿尔贝多颜色、金属因素、粗糙度、排放性颜色的透明度。. 将材料分配给一个节点,当创建孩子时。.

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);

格式检测

那是 FileFormat 班级提供静态搜索和检测工具。 通过文件扩展或搜索流来解决格式,以识别未知的文件。.

import com.aspose.threed.FileFormat;

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

协调系统转换

AxisSystem 让你定义上轴、前轴和手动性。 编程系统,然后计算一个 Matrix4 将地质转化为 条约(例如,从Z-up右手系统到Y-Up系统) 左手一。.

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);

快速开始

添加Maven依赖性:

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

创建一个简单的场景,并将其出口:

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);

支持的格式

格式化延伸阅读写作
FBX(ASCII和二进制,6.x-7.x).fbx是的
格拉特 1.0 / 2.0.gltf是的是的
二元格式GlTF.glb是的是的
波前OBJ.obj是的是的
STL(ASCII和二进制).stl是的是的

每个格式都专注于 LoadOptionsSaveOptions 基层(为 例子, FbxLoadOptions, GltfSaveOptions, StlSaveOptions( ) 展示 格式特定的设置,如协调系统滑动和内容类型 选择。.


开源与许可

Aspose.3D FOSS for Java 已在 MIT 许可下发布。 在 GitHub 上可用 阿波斯3D - FOSS-for-Java. 您可以使用、修改和重新分发图书馆的商业和 非商业项目无限制。.


开始的