機能と特長
機能と特長
このページでは、すべての主要な機能領域をカバーしています 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 を持ちます Transform と Translation, 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 - プリミティブを変換
MeshとToMesh()頂点要素を追加する前に - 使用
GltfSaveOptionsと.glbコンパクトなバイナリ出力用の拡張子 - 確認
node.Entity用nullキャストする前に — すべてのノードがジオメトリを持つわけではありません - 使用
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 | シェーディング用マテリアルタイプ |