我们很高兴能宣布可用性。 Aspose3D FOSS for Java 用途 作为一个纯粹的Java解决方案,没有原生依赖性,图书馆运行在Jav 21和以后,使其可访问广泛的项目和环境。.
此帖子讲述了图书馆提供的内容,如何开始以及从这里去哪里。.
什么是3D FOSS为Java?
Aspose.3D FOSS for Java 是一本轻量级 3D 文件处理图书馆,在下方发布。 许可证.它提供一个场景图形API,允许您在多个广泛使用的格式上加载、检查、转换和保存3D模型。.
源代码在GitHub上可用: 首頁 / 電視節目 / HTTPS://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java
关键突出点
- 清洁Java 没有JNI,没有本地图书馆,也没有平台限制。.
- 雅各 21+ 兼容。.
- 许可的MIT 使用它在个人、商业或所有项目中,无限制。.
- 舞台图形建筑 熟悉的树,由节点、板块、摄像机和材料组成。.
- 多格式支持 阅读和写作OBJ、STL、glTF 2.0和GLB文件;阅读 FBX文件。.
快速开始
马文安装
加入下列依赖性到您的 pom.xml:
<dependency>
<groupId>org.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.5.0</version>
</dependency>你的第一次转换
最简单的使用案例是将一个3D文件加载到一个格式,并将其保存到另一个。:
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");
}
}
那是 Scene 班是中心入口点。 Scene.fromFile() 用文件路径加载模型,然后打电话 save() 图书馆从文件扩展中输入格式。.
创建一个 Scratch 的场景
您也可以编程下列场景:
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");
}
}
它创建了一个新的场景,在根底下添加一个名为“盒子”的儿童节点,将其置于坐标(1,2,3)中,并以 glTF 文件形式出口结果。.
使用格式特定的选项加载
当您需要更精致的控制加载过程时,每个格式都提供了一个专门的选项类。 例如,加一个STL文件与明确的选择:
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");
}
}
那是 Scene.fromFile() 静态方法接受任何负载选项类型: ObjLoadOptions, StlLoadOptions, GltfLoadOptions,或 FbxLoadOptions.
穿越舞台图形
一旦一个场景被加载,你可以走路的节点树检查或修改其内容:
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());
}
}
}
}
此模式可用于解析、产生模型内容的报告或在重新出口之前选择性地修改场景部分。.
应用转型
通过3D空间的位置节点进行。 Transform 对象在每一个 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");
}
}
转型跟随父母和孩子的遗产模式:一个孩子的世界空间位置是其本地转型的组合,所有祖先都变成根。.
什么是包含的
图书馆拥有专注的能力组合,设计了3D场景图形模型。.
舞台图形
场景图是API的背景,每个3D文件都以树结构为代表:
| 班级 | 角色 |
|---|---|
Scene | 顶级容器;场景图的根 |
Node | 树上的名称位置;持有转变和儿童节点 |
Entity | 对视觉物体附带的节点的抽象基础 |
Mesh | 多元地质 - 垂直,面孔,正常 |
Camera | 虚拟摄像头定义 |
Transform | 地点翻译、旋转和一个节点的规模 |
GlobalTransform | 计算机世界空间转型 |
材料
图书馆提供一个PBR(物理基于流动)材料模型:
- PbrMaterial 物理上基于的呈现材料,含有 albedo、金属性、粗糙度、排放色彩和透明度。.
数学用途
那是 com.aspose.threed 包包含基本数学原始物质:
- 维克托3 对位置、方向和颜色的3组 vector。.
- 马特里克4 4×4 转型矩阵。.
- 四角形 旋转代表性。.
- BoundingBox 轴合并的边界盒用于空间查询。.
Vector3 a = new Vector3(1, 0, 0);
Vector3 b = new Vector3(0, 1, 0);
Vector3 c = Vector3.add(a, b); // (1, 1, 0)
加载和保存选项
每个格式都有专门的选项类,允许您控制进口和出口行为:
| 格式化 | 充电选项 | 保存选项 |
|---|---|---|
| OBJ | ObjLoadOptions | ObjSaveOptions |
| STL | StlLoadOptions | StlSaveOptions |
| 格拉特 / GLB | GltfLoadOptions | GltfSaveOptions |
| FBX | FbxLoadOptions | (仅进口) |
例如,以优雅印刷的 JSON 和一套粘贴式坐标系统出口 glTF:
GltfSaveOptions opts = new GltfSaveOptions();
opts.setFlipCoordinateSystem(true);
opts.setPrettyPrint(true);
scene.save("output.gltf", opts);
支持的格式
下表总结了 Aspose.3D FOSS for Java 可以阅读和写的格式。.
| 格式化 | 延伸 | 进口 | 出口 | 笔记 |
|---|---|---|---|---|
| OBJ | .obj | 是的 | 是的 | 用MTL材料 |
| STL | .stl | 是的 | 是的 | 二元 + ASCII |
| 格拉特 2.0 | .gltf | 是的 | 是的 | JSON 格式 |
| GLB | .glb | 是的 | 是的 | 二进制 glTF 通过 GltfSaveOptions |
| FBX | .fbx | 是的 | 无 | 仅进口 |
OBJ、STL、glTF 和 GLB 支持充电和储蓄。.
格式选项指南
选择正确的格式取决于您的使用情况:
- OBJ 理想的是,当您需要在3D工具中最大兼容性时,几乎每个模型应用程序都可以阅读和写作OBJ. 它适用于交换数据的机密,但仅通过伴侣MTL文件提供基本材料信息。.
- STL 它存储了无材料或场景层的原始三角形地质,这正是滑板软件所期望的。 如果您的管道在3D打印机上结束,STL是简单的选择。.
- 格拉特F 它支持PBR材料,全场地形序列,并为高效传输而设计。使用glTF在构建基于Web的观众时,与三.js或Babylon.js合作,或者针对任何实时播放管道。.
- FBX 深度融入游戏开发和数字内容创建工作流,支持丰富的场景数据包括层次和材料。 Aspose.3D FOSS for Java 支持 FBX 仅进口 使用它来加载 FBX 资产并将其转换为其他格式。.
已知限制
重要的是要注意, Scene.render() 是的 未支持 此时此刻,在FOSS版中,称之为这个方法将扔一根 UnsupportedOperationException.图书馆是为基于文件的3D处理 - 加载,操纵,转换和储存模型 - 而不是实时向显示器播放。.
开源和许可证
Aspose.3D FOSS for Java 发布在下方的 许可证MIT.因此,你可以自由:
- 使用图书馆在商业和属性应用。.
- 修改源代码以满足您的需求。.
- 将图书馆作为您自己的软件的一部分分发。.
没有王位费用,没有使用限制,也没有授权要求超越MIT许可证所规定的。.
完整的源代码在GitHub上托管,并欢迎您的贡献: 首頁 / 電視節目 / HTTPS://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java
系统要求
| 要求 | 细节 |
|---|---|
| Java 版本 | 21 or later |
| 依赖性 | 无(纯 Java ) |
| 平台 | 任何运行JVM的平台 |
| 构建工具 | 马文(推荐) |
开始的
下面是帮助你站起来跑步的资源:
- 文档 包括全面的指南和API步行路径在 Aspose.3D 文档网站.
- 知识基础 实用如何写文章和解决问题提示在 阿斯波西3D KB.
- 火灾参考 详细的类和方法参考在 阿波斯3D API 参考.
- 源代码 浏览并为 GitHub.
- 马文中央 包被发表为
org.aspose:aspose-3d-foss:26.5.0马文中央。.
常用案例
以下是一些实用的场景,在那里 Aspose.3D FOSS for Java 适合:
转型管道
许多团队在一个格式中获得3D资产,但需要它们在另一个。设计团队可能在FBX工作,而网页团队则需要GlTF。:
// 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
在将 3D 资产集成到您的应用程序之前,您可能希望验证其内容 - 检查节点数,确认地质学,或确信预期的元素存在:
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");
}
}
舞台集会
您可以加载多个模型并将其结合在一个单一场景中:
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");
什么是下一个
在接下来的文章中,我们将涵盖:
- 深沉浸在场景图形API、材料和数学工具的关键特性。.
- 一个实用的指南,以便使用支持的每一个3D格式 - OBJ、STL、glTF和 FBX - 包括负载/存储选项和包转换模式。.
保持沉默,并自由探索图书馆并在GitHub上分享您的反馈。.