Fitur dan Fungsionalitas

Fitur dan Fungsionalitas

Fitur dan Fungsionalitas

Halaman ini mencakup setiap area fitur utama dari Aspose.3D 26.1.0 dengan contoh C# yang berfungsi.


Memuat dan Menyimpan Scene

Scene.Open() memuat sebuah file; Scene.Save() mengekspornya. Format dideteksi dari ekstensi file:

using Aspose.ThreeD;

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

Gunakan pabrik statis Scene.FromFile() sebagai alternatif:

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

Opsi Spesifik Format

Berikan LoadOptions atau SaveOptions subkelas untuk kontrol yang lebih halus:

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

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

Kelas opsi yang tersedia:

KelasArahProperti Kunci
ObjLoadOptionsImporFlipCoordinateSystem, EnableMaterials, Scale
ObjSaveOptionsEksporFlipCoordinateSystem, EnableMaterials, PointCloud
FbxLoadOptionsImpor(pengaturan default)
GltfLoadOptionsImpor(pengaturan default)
GltfSaveOptionsEkspor(pengaturan default)
StlLoadOptionsImpor(pengaturan default)
StlSaveOptionsEkspor(pengaturan default)
ColladaLoadOptionsImporFlipCoordinateSystem
ColladaSaveOptionsEksporIndented, TransformStyle
PlyLoadOptionsImpor(pengaturan default)

Membangun Graf Scene

Buat node dan lampirkan entitas untuk membangun hierarki:

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));

Akses anak melalui node.ChildNodes dan entitas terlampir melalui node.Entity.


Mesh dan Primitive

Buat sebuah Mesh secara programatis dengan titik kontrol dan poligon:

// 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);

Primitif bawaan (Box, Sphere, Cylinder) dapat dikonversi menjadi Mesh:

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

Elemen Vertex

Lampirkan normal, UV, dan warna vertex ke geometri:

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

Tipe elemen vertex yang tersedia: VertexElementNormal, VertexElementUV, VertexElementVertexColor, VertexElementBinormal, VertexElementTangent.


Transform

Setiap Node membawa sebuah Transform dengan Translation, Rotation, dan 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);

Baca posisi ruang-dunia melalui node.GlobalTransform.Matrix atau node.EvaluateGlobalTransform().


Material

Tetapkan material ke node untuk data shading:

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);

Jenis material: LambertMaterial, PhongMaterial, PbrMaterial.


Tips dan Praktik Terbaik

  • Gunakan Scene.FromFile() untuk pemuatan satu baris ketika Anda tidak memerlukan kustom LoadOptions
  • Konversi primitif ke Mesh dengan ToMesh() sebelum menambahkan elemen vertex
  • Gunakan GltfSaveOptions dengan sebuah .glb ekstensi untuk output biner yang kompak
  • Periksa node.Entity untuk null sebelum casting — tidak setiap node membawa geometri
  • Gunakan PolygonModifier.Triangulate() untuk mengonversi mesh kuad sebelum mengekspor ke format hanya segitiga seperti STL

Masalah Umum

MasalahPenyebabPerbaikan
ImportException saat memuatFile tidak didukung atau rusakPastikan file dapat dibuka di penampil 3D; periksa apakah formatnya ada dalam daftar yang didukung
Material tidak ada setelah memuat OBJ.mtl file tidak ditemukanTempatkan .mtl file di sebelah .obj atau atur ObjLoadOptions.EnableMaterials = true
Skala tidak cocok setelah impor FBXSistem unit yang berbedaGunakan ObjLoadOptions.Scale atau terapkan sebuah Transform setelah memuat

FAQ

Bagaimana cara saya mendeteksi format file yang tidak diketahui?

Gunakan FileFormat.Detect():

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

Apakah saya dapat memuat dari stream alih-alih jalur file?

Ya. Scene.Open() menerima sebuah Stream:

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

Format mana yang mendukung impor dan ekspor?

OBJ, STL, glTF/GLB, FBX, COLLADA, dan 3MF mendukung kedua arah. PLY hanya mendukung impor (pengekspor PLY belum terhubung).


Ringkasan Referensi API

Kelas / MetodeDeskripsi
SceneKontainer adegan 3D tingkat atas
Scene.Open()Muat file 3D dengan jalur atau aliran
Scene.Save()Ekspor adegan ke file atau aliran
Scene.FromFile()Fabrik statis untuk memuat dan mengembalikan sebuah Scene
NodeNode hierarki scene yang memegang entitas dan transformasi
Node.CreateChildNode()Buat dan lampirkan node anak
MeshMesh poligon dengan titik kontrol dan daftar wajah
Mesh.CreatePolygon()Definisikan wajah poligon dengan indeks vertex
Box / Sphere / CylinderPrimitif parametrik bawaan
TransformTranslasi, rotasi, dan skala lokal
FileFormatRegistri dan detektor untuk format yang didukung
LambertMaterial / PhongMaterial / PbrMaterialTipe material untuk shading
 Bahasa Indonesia