Ciri-ciri dan Fungsi

Ciri-ciri dan Fungsi

Halaman ini meliputi setiap bidang ciri utama Aspose.3D 26.1.0 dengan contoh C# yang berfungsi.


Memuat dan Menyimpan Adegan

Scene.Open() memuatkan fail; Scene.Save() mengeksportnya. Format dikesan daripada sambungan fail:

using Aspose.ThreeD;

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

Gunakan kilang statik Scene.FromFile() sebagai alternatif:

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

Pilihan Khusus Format

Luluskan subkelas LoadOptions atau SaveOptions untuk kawalan terperinci:

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

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

Kelas pilihan yang tersedia:

KelasArahCiri Utama
ObjLoadOptionsImportFlipCoordinateSystem, EnableMaterials, Scale
ObjSaveOptionsEksportFlipCoordinateSystem, EnableMaterials, PointCloud
FbxLoadOptionsImport(tetapan lalai)
GltfLoadOptionsImport(tetapan lalai)
GltfSaveOptionsEksport(tetapan lalai)
StlLoadOptionsImport(tetapan lalai)
StlSaveOptionsEksport(tetapan lalai)
ColladaLoadOptionsImportFlipCoordinateSystem
ColladaSaveOptionsEksportIndented, TransformStyle
PlyLoadOptionsImport(tetapan lalai)

Membina Graf Adegan

Buat nod dan lampirkan entiti untuk membina 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-anak melalui node.ChildNodes dan entiti yang dilampirkan melalui node.Entity.


Mesh dan Primitif

Cipta Mesh secara programatik dengan titik kawalan 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 terbina dalam (Box, Sphere, Cylinder) boleh ditukar kepada Mesh:

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

Elemen Vertex

Lampirkan normals, UVs, dan vertex colours kepada geometri:

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

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


Transformasi

Setiap Node membawa 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 kedudukan ruang-dunia melalui node.GlobalTransform.Matrix atau node.EvaluateGlobalTransform().


Bahan

Tetapkan bahan kepada nod 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 bahan: LambertMaterial, PhongMaterial, PbrMaterial.


Petua dan Amalan Terbaik

  • Gunakan Scene.FromFile() untuk pemuatan satu baris apabila anda tidak memerlukan LoadOptions khusus
  • Tukar primitif kepada Mesh dengan ToMesh() sebelum menambah elemen vertex
  • Gunakan GltfSaveOptions dengan sambungan .glb untuk output binari mampat
  • Periksa node.Entity untuk null sebelum menukar — tidak semua nod membawa geometri
  • Gunakan PolygonModifier.Triangulate() untuk menukar mesh kuad sebelum dieksport ke format hanya segitiga seperti STL

Isu Umum

MasalahPuncaPenyelesaian
ImportException semasa dimuatkanFail tidak disokong atau rosakPastikan fail dapat dibuka dalam penonton 3D; semak format berada dalam senarai yang disokong
Bahan hilang selepas pemuatan OBJFail .mtl tidak dijumpaiLetakkan fail .mtl di sebelah .obj atau tetapkan ObjLoadOptions.EnableMaterials = true
Ketidaksesuaian skala selepas import FBXSistem unit berbezaGunakan ObjLoadOptions.Scale atau terapkan Transform selepas dimuatkan

Soalan Lazim

Bagaimana saya mengesan format fail yang tidak diketahui?

Gunakan FileFormat.Detect():

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

Bolehkah saya memuatkan dari stream dan bukannya laluan fail?

Ya. Scene.Open() menerima Stream:

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

Format mana yang menyokong import dan eksport?

OBJ, STL, glTF/GLB, FBX, COLLADA, dan 3MF menyokong kedua-dua arah. PLY hanya menyokong import (pengekspor PLY tidak disambungkan).


Ringkasan Rujukan API

Class / MethodDescription
SceneBekas adegan 3D peringkat atas
Scene.Open()Muat fail 3D mengikut laluan atau aliran
Scene.Save()Eksport adegan ke fail atau aliran
Scene.FromFile()Kilang statik untuk memuat dan mengembalikan Scene
NodeNode hierarki adegan yang memegang entiti dan transformasi
Node.CreateChildNode()Cipta dan lampirkan node anak
MeshMesh poligon dengan titik kawalan dan senarai muka
Mesh.CreatePolygon()Takrifkan muka poligon mengikut indeks bucu
Box / Sphere / CylinderPrimitif parametrik terbina dalam
TransformTerjemahan, putaran, dan skala setempat
FileFormatPendaftaran dan pengesan untuk format yang disokong
LambertMaterial / PhongMaterial / PbrMaterialJenis bahan untuk pelapisan
 Bahasa Melayu