引入
使用 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 等) Mesh 或 Camera) ,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 | 是的 | 是的 |
每个格式都专注于 LoadOptions 和 SaveOptions 基层(为 例子, FbxLoadOptions, GltfSaveOptions, StlSaveOptions( ) 展示 格式特定的设置,如协调系统滑动和内容类型 选择。.
开源与许可
Aspose.3D FOSS for Java 已在 MIT 许可下发布。 在 GitHub 上可用 阿波斯3D - FOSS-for-Java. 您可以使用、修改和重新分发图书馆的商业和 非商业项目无限制。.