機能と特長

機能と特長

このページでは、すべての主要な機能領域をカバーしています Aspose.3D 26.1.0 動作する C# の例とともに。.


シーンの読み込みと保存

Scene.Open() ファイルをロードします; Scene.Save() エクスポートします。形式はファイル拡張子から検出されます:

using Aspose.ThreeD;

var scene = new Scene();
scene.Open("input.obj");
scene.Save("output.glb");

静的ファクトリを使用してください Scene.FromFile() 代替手段として:

var scene = Scene.FromFile("input.fbx");
scene.Save("output.stl");

フォーマット固有のオプション

渡す LoadOptions または SaveOptions 細かい制御のためにサブクラスを使用します:

using Aspose.ThreeD;
using Aspose.ThreeD.Formats;

var scene = new Scene();
scene.Open("model.obj", new ObjLoadOptions { FlipCoordinateSystem = true });
scene.Save("model.fbx");

利用可能なオプションクラス:

クラス方向キー プロパティ
ObjLoadOptionsインポートFlipCoordinateSystem, EnableMaterials, Scale
ObjSaveOptionsエクスポートFlipCoordinateSystem, EnableMaterials, PointCloud
FbxLoadOptionsインポート(デフォルト設定)
GltfLoadOptionsインポート(デフォルト設定)
GltfSaveOptionsエクスポート(デフォルト設定)
StlLoadOptionsインポート(デフォルト設定)
StlSaveOptionsエクスポート(デフォルト設定)
ColladaLoadOptionsインポートFlipCoordinateSystem
ColladaSaveOptionsエクスポートIndented, TransformStyle
PlyLoadOptionsインポート(デフォルト設定)

シーン グラフの構築

ノードを作成し、エンティティを添付して階層を構築します:

var scene = new Scene();
var root = scene.RootNode;

var boxNode = root.CreateChildNode("box", new Box(5, 5, 5));
var sphereNode = root.CreateChildNode("sphere", new Sphere(3));

子要素にアクセス via node.ChildNodes および添付エンティティに via node.Entity.


メッシュとプリミティブ

作成 Mesh 制御点とポリゴンを使用してプログラム的に:

// Mesh.ControlPoints uses Aspose.ThreeD.Utilities.Vector4
// (double-precision, lowercase fields: x, y, z, w)
using Aspose.ThreeD.Utilities;

var mesh = new Mesh("custom");
mesh.ControlPoints.Add(new Vector4(0.0, 0.0, 0.0));   // w defaults to 1.0
mesh.ControlPoints.Add(new Vector4(10.0, 0.0, 0.0));
mesh.ControlPoints.Add(new Vector4(10.0, 10.0, 0.0));
mesh.ControlPoints.Add(new Vector4(0.0, 10.0, 0.0));
mesh.CreatePolygon(0, 1, 2, 3);

組み込みプリミティブ (Box, Sphere, Cylinder) を変換できます Mesh:

var box = new Box(10, 10, 10);
Mesh boxMesh = box.ToMesh();

頂点要素

法線、UV、頂点カラーをジオメトリに添付します:

var normals = new VertexElementNormal(MappingMode.ControlPoint, ReferenceMode.Direct);
mesh.AddElement(normals);

利用可能な頂点要素タイプ: VertexElementNormal, VertexElementUV, VertexElementVertexColor, VertexElementBinormal, VertexElementTangent.


トランスフォーム

すべての Node は a を持ちます TransformTranslation, Rotation,、そして Scale:

var node = scene.RootNode.CreateChildNode("moved", new Box());
node.Transform.Translation = new FVector3(10, 0, 5);
node.Transform.Scale = new FVector3(2, 2, 2);

ワールド空間の位置を取得するには node.GlobalTransform.Matrix または node.EvaluateGlobalTransform().


マテリアル

シェーディングデータのためにマテリアルをノードに割り当てます:

var mat = new PhongMaterial("shiny");
mat.Diffuse = new Vector4(0.8, 0.2, 0.2, 1.0);
mat.Specular = new Vector4(1, 1, 1, 1);
mat.Shininess = 32;

scene.RootNode.CreateChildNode("red_box", new Box(), mat);

マテリアルタイプ: LambertMaterial, PhongMaterial, PbrMaterial.


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

  • 使用 Scene.FromFile() カスタムが不要なワンライナー読み込み用 LoadOptions
  • プリミティブを変換 MeshToMesh() 頂点要素を追加する前に
  • 使用 GltfSaveOptions.glb コンパクトなバイナリ出力用の拡張子
  • 確認 node.Entitynull キャストする前に — すべてのノードがジオメトリを持つわけではありません
  • 使用 PolygonModifier.Triangulate() STL のような三角形専用フォーマットにエクスポートする前に、クアッドメッシュを変換するために

一般的な問題

問題原因修正
ImportException ロード時サポートされていない、または破損したファイルファイルが 3D ビューアで開くか確認してください;フォーマットがサポートリストに含まれているかチェックしてください
OBJ の読み込み後にマテリアルが欠落している.mtl ファイルが見つかりません配置してください .mtl ファイルを~の隣に .obj または設定 ObjLoadOptions.EnableMaterials = true
FBX インポート後のスケール不一致異なる単位系使用 ObjLoadOptions.Scale または適用 Transform 読み込み後

FAQ

未知のファイルのフォーマットはどうやって検出しますか??

使用 FileFormat.Detect():

var format = FileFormat.Detect("unknown_file.bin");
Console.WriteLine(format.Extension);

ファイルパスではなくストリームからロードできますか??

はい。. Scene.Open() 受け入れる Stream:

using var stream = File.OpenRead("model.glb");
scene.Open(stream);

インポートとエクスポートの両方に対応しているフォーマットはどれですか??

OBJ、STL、glTF/GLB、FBX、COLLADA、3MF は双方向に対応しています。PLY はインポートのみ対応しており(PLY エクスポーターは未実装です)。.


API リファレンス概要

クラス / メソッド説明
Sceneトップレベルの3Dシーンコンテナ
Scene.Open()パスまたはストリームで3Dファイルをロードする
Scene.Save()シーンをファイルまたはストリームにエクスポートする
Scene.FromFile()ロードして返す静的ファクトリ Scene
Nodeエンティティとトランスフォームを保持するシーン階層ノード
Node.CreateChildNode()子ノードを作成してアタッチする
Mesh制御点と面リストを持つポリゴンメッシュ
Mesh.CreatePolygon()頂点インデックスでポリゴン面を定義する
Box / Sphere / Cylinder組み込みのパラメトリックプリミティブ
Transformローカルの平行移動、回転、スケール
FileFormatサポートされているフォーマットのレジストリと検出器
LambertMaterial / PhongMaterial / PbrMaterialシェーディング用マテリアルタイプ
 日本語