導入
Java の 3D コンテンツで作業するには、通常重量の間を選択する必要があります。 ゲームエンジンとバーボーン数学図書館。 aspose-3d-foss パッケージはAを提供する。 中間地: I/O ファイル、ノード ギャラリーを処理する焦点のシーングラフ API, メッシュ構築、そしてトランスフォーマンスを調整し、レンダリングに引きずり込むことなく 管道または先住民依存チェーン。.
図書館は、FBX、glTF/GLB、Wavefront OBJ、STLを読み、GlT / GLBを書き、OBJとST L(FbXの輸出が実施されていない)、サーバー側の3D処理、構築ツール統合、およびデータ変換パイプラインで実用化します。.
この投稿は、図書館のシーン管理能力を通り抜けます: スカートからシーンを構築する方法、地質学と変換でそれを人口化し、ディスクに結果を輸出します。.
何が含まれているのか。
ステージグラフベース
☆ ♪ 〜 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 地元の翻訳、回転をコントロールする。, これらは、階級を通して構成され、親のノードを動かすようにします。 すべての子どもたちを動かす。.
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) 得るためにA Matrix4 つまり、地質学的オフセットも含まれる。.
PBR材料
☆ ♪ 〜 PbrMaterial クラスは、物理的に基づくレダリング特性を提供します: アルベド色、金属要因、硬さ、排出色および透明性。. 子を生み出すときにノードに材料を割り当てます。.
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 あなたが上軸、前軸と手動性を定義することを許可します。 コントロールシステム、その後計算するA 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);
早速スタート
マベン依存症を追加する:
<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 サブクラス(SUBCLAES) 例として、, FbxLoadOptions, GltfSaveOptions, StlSaveOptions(これを示す) フォーマット型設定、例えばコードシステムフリッピングおよびコンテンツタイプ 選択。.
オープンソース&ライセンス
Aspose.3D FOSS for Java は MIT のライセンスの下でリリースされます。 GitHubで利用可能な タグ : ASPOSE 3D-FOSS-for-Java. 図書館を商業的にも、改正・再配布することもできます。 非商業プロジェクトは制限なし。.