フォーマットサポート

フォーマットサポート

Aspose.3D FOSS for Python は、単一のインメモリシーン表現を使用して、7つの3Dフォーマットの読み書きが可能です。ライブラリは各フォーマットを共通の Scene オブジェクトに変換してロードし、保存時にそのオブジェクトを対象フォーマットへシリアライズします。これにより、OBJ から読み込んだシーンを中間変換ステップなしで直接 glTF に保存できます。.


サポートされているフォーマット

フォーマット拡張子読み取り書き込みオプションクラス注記
Wavefront OBJ.objはいはいObjLoadOptions.mtl マテリアルのロードがサポートされています
STL(バイナリ).stlはいはいStlSaveOptionsバイナリとASCIIの読み取り; 保存はデフォルトでバイナリ
STL (ASCII).stlはいはいStlSaveOptions往復が検証済み
glTF 2.0.gltfはいはいGltfSaveOptions完全なシーングラフ、マテリアル、アニメーションが保持されます
GLB(バイナリ glTF).glbはいはいGltfSaveOptions単一ファイルのバイナリコンテナ
COLLADA.daeはいはいColladaLoadOptions / ColladaSaveOptionsシーン階層とマテリアル
3MF.3mfはいはいThreeMfSaveOptions付加製造フォーマット
FBX.fbx部分的いいえN/Aトークナイザは動作中です;フルパーサは進行中です(本番環境向けではありません)

OBJ フォーマット

Wavefront OBJ は静的メッシュ用の最も広くサポートされているインターチェンジ形式です。Aspose.3D FOSS はジオメトリ(頂点、法線、UV座標、ポリゴン面)をロードし、オプションで同伴する .mtl マテリアルファイル。.

ObjLoadOptions

プロパティタイプデフォルト説明
enable_materialsboolTrue解析する .mtl OBJヘッダーで参照されるファイル
flip_coordinate_systemboolFalseY-up 右手系から Z-up 右手系へ変換
normalize_normalboolTrueインポートされたすべてのサーフェス法線を単位長さに正規化
scalefloat1.0すべての頂点位置に適用される一様スケール係数

OBJ ファイルのロード

from aspose.threed import Scene
from aspose.threed.formats import ObjLoadOptions

options = ObjLoadOptions()
options.enable_materials = True
options.flip_coordinate_system = False
options.scale = 1.0

scene = Scene()
scene.open("model.obj", options)

print(f"Top-level nodes: {len(scene.root_node.child_nodes)}")

OBJ に保存

scene.save("output.obj")

OBJエクスポートは頂点位置とポリゴン面を書き出します。シーンに LambertMaterial または PhongMaterial objects が含まれる場合、ライブラリはコンパニオン .mtl ファイルを自動的に生成します。.


STL 形式

STL(STereoLithography)は三角形メッシュをインデックスなしのファセットリストとして保存します。読み込み時にはバイナリ形式と ASCII 形式の両方がサポートされており、保存時のデフォルトはバイナリです。.

StlSaveOptions

StlSaveOptions 必須フィールドはありません。それをインスタンス化して渡します scene.save():

from aspose.threed.formats import StlSaveOptions

opts = StlSaveOptions()
scene.save("output.stl", opts)

ラウンドトリップ例

from aspose.threed import Scene

##Load
scene = Scene.from_file("model.stl")

##Inspect
for node in scene.root_node.child_nodes:
    if node.entity:
        print(f"{node.name}: {len(node.entity.control_points)} vertices")

##Save
scene.save("roundtrip.stl")

STL は三角形ジオメトリのみを保存し、ファセット法線以外の法線、UV 座標、マテリアル、階層情報は保持しません。シーンにクアッドや高次多角形が含まれている場合、保存時に自動的に三角形化されます。.


glTF / GLB フォーマット

glTF 2.0 は、最新の 3D 交換に推奨されるフォーマットです。フルシーン グラフ(ノード階層、名前付きノード、変換)、マテリアル(LambertMaterial, PhongMaterial → PBR 変換)、およびアニメーション クリップ。GLB は単一ファイルのバイナリ コンテナ バリアントです.

GltfSaveOptions

from aspose.threed.formats import GltfSaveOptions

opts = GltfSaveOptions()
scene.save("output.gltf", opts)   # JSON + external .bin
scene.save("output.glb",  opts)   # Self-contained binary

マテリアルのサポート

Aspose.3D FOSS のマテリアルは glTF にマッピングされます pbrMetallicRoughness エクスポート時:

from aspose.threed import Scene
from aspose.threed.shading import PhongMaterial
from aspose.threed.utilities import Vector3

scene = Scene()
node = scene.root_node.create_child_node("object")

mat = PhongMaterial()
mat.diffuse_color  = Vector3(0.8, 0.2, 0.2)   # red
mat.specular_color = Vector3(1.0, 1.0, 1.0)
mat.shininess = 50.0
node.material = mat

scene.save("colored.gltf")

glTF 出力の検証

import json

with open("output.gltf") as f:
    data = json.load(f)

print(f"Asset version : {data['asset']['version']}")
print(f"Nodes         : {len(data.get('nodes', []))}")
print(f"Meshes        : {len(data.get('meshes', []))}")

COLLADA フォーマット

COLLADA (.dae) は、シーン階層、マテリアル、複数の UV チャネル、スケルトンアニメーションをサポートする XML ベースのフォーマットです。Aspose.3D FOSS はフルノードツリーとマテリアル定義の読み書きを行います。.

from aspose.threed import Scene

##Load a COLLADA file
scene = Scene.from_file("model.dae")

##Inspect top-level nodes
for node in scene.root_node.child_nodes:
    print(f"  {node.name}")

##Save back to COLLADA
scene.save("output.dae")

COLLADA は、名前付きノードやマテリアルを含む階層構造をデータ損失なく往復させる必要がある場合に優れた選択肢です。.


3MF Format

3MF (3D Manufacturing Format) targets additive manufacturing (3D printing) workflows. It stores triangle geometry, colour, and print-specific metadata in a ZIP-based container.

from aspose.threed import Scene
from aspose.threed.formats import ThreeMfSaveOptions

scene = Scene.from_file("part.stl")   # Load from STL
opts  = ThreeMfSaveOptions()
scene.save("part.3mf", opts)          # Write as 3MF

3MF is the recommended export format when targeting slicer software (Cura, PrusaSlicer, Bambu Studio, etc.).


FBX フォーマット

ステータス:進行中(本番環境向けではありません)。.

FBX (.fbx) のサポートは現在トークナイザ段階です。バイナリ FBX トークナイザはファイル構造を解析できますが、フルノード、メッシュ、マテリアルパーサーには既知のバグがあり、未完成です。FBX の読み取り結果は実験的扱いとしてください。.

このリリースでは、プロダクションパイプラインで FBX を使用しないでください。. ソースデータが FBX 形式の場合、Aspose.3D FOSS で読み込む前に、Blender または FBX Review を使用して glTF または OBJ に変換してください。.

FBX の書き込みはサポートされていません。.


フォーマット自動検出

Scene.from_file() および scene.open() ファイル拡張子と、利用可能な場合はファイルヘッダーのマジックバイトを使用して、フォーマットを自動的に検出します::

from aspose.threed import Scene

##The library detects each format without being told explicitly
scene_obj  = Scene.from_file("model.obj")
scene_glb  = Scene.from_file("model.glb")
scene_stl  = Scene.from_file("model.stl")
scene_dae  = Scene.from_file("model.dae")
scene_3mf  = Scene.from_file("model.3mf")

拡張子がない、または曖昧な場合、ライブラリはヘッダー検査(マジックバイト)にフォールバックします。サポートされていない、または認識できないファイルは IOError 説明的なメッセージとともに。.


ヒントとベストプラクティス

  • 最新のパイプラインには glTF または GLB を使用してください。. glTFはフルシーングラフ、マテリアル、アニメーションデータをすべて保持します。ゲームエンジンやウェブビューアとのやり取りに最も完全なフォーマットです。.
  • 最大の互換性を得るにはOBJを使用してください。. OBJは事実上すべての3Dツールでサポートされています。静的メッシュに限定されますが、非常にポータブルです。.
  • 印刷には3MFを使用してください。. 3MF carries colour, orientation hints, and print settings that STL cannot express.
  • FBXは本番対応になるまで使用しないでください。. 完全なFBXパースが完了したバージョンについては、リリースノートをご確認ください。.
  • 保存拡張子をフォーマットに合わせてください。. a を渡さないでください。 .gltf バイナリGLBが必要なときは拡張子を使用してください .glb 明示的に。拡張子はどの serialiser が使用されるかを決定します。.
  • polygon の互換性を確認してください. STL と 3MF は三角形が必要です。四角形や N-gon は保存時に自動的に三角形化されますが、頂点数は増加します。三角形化を制御する必要がある場合は、呼び出してください mesh.triangulate() 保存する前に。.
 日本語