Özellikler ve İşlevsellikler

Özellikler ve İşlevsellikler

Özellikler ve İşlevsellikler

Bu sayfa, her ana özellik alanını kapsar Aspose.3D 26.1.0 çalışan C# örnekleriyle.


Sahneleri Yükleme ve Kaydetme

Scene.Open() bir dosya yükler; Scene.Save() dışa aktarır. Biçim, dosya uzantısından algılanır:

using Aspose.ThreeD;

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

Statik fabrikayı kullanın Scene.FromFile() alternatif olarak:

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

Format‑Özel Seçenekler

Geçin LoadOptions veya SaveOptions ince ayarlı kontrol için alt sınıflar:

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

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

Mevcut seçenek sınıfları:

SınıfYönAna Özellikler
ObjLoadOptionsİçe AktarFlipCoordinateSystem, EnableMaterials, Scale
ObjSaveOptionsDışa AktarFlipCoordinateSystem, EnableMaterials, PointCloud
FbxLoadOptionsİçe Aktar(varsayılan ayarlar)
GltfLoadOptionsİçe Aktar(varsayılan ayarlar)
GltfSaveOptionsDışa Aktar(varsayılan ayarlar)
StlLoadOptionsİçe aktar(varsayılan ayarlar)
StlSaveOptionsDışa aktar(varsayılan ayarlar)
ColladaLoadOptionsİçe aktarFlipCoordinateSystem
ColladaSaveOptionsDışa aktarIndented, TransformStyle
PlyLoadOptionsİçe aktar(varsayılan ayarlar)

Bir Sahne Grafiği Oluşturma

Bir hiyerarşi oluşturmak için düğümler oluşturun ve varlıkları ekleyin:

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

Çocuklara şu şekilde erişin node.ChildNodes ve ekli varlığa şu şekilde node.Entity.


Mesh ve Primitifler

Bir oluştur Mesh kontrol noktaları ve çokgenlerle programlı olarak:

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

Yerleşik primitifler (Box, Sphere, Cylinder) şuna dönüştürülebilir Mesh:

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

Vertex Elemanları

Geometriye normal, UV ve vertex renkleri ekleyin:

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

Kullanılabilir köşe öğesi türleri: VertexElementNormal, VertexElementUV, VertexElementVertexColor, VertexElementBinormal, VertexElementTangent.


Dönüşümler

Her Node taşır bir Transform ile Translation, Rotation, ve 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);

Dünya uzayı konumunu şununla okuyun node.GlobalTransform.Matrix veya node.EvaluateGlobalTransform().


Materyaller

Gölgelendirme verileri için düğümlere malzeme atayın:

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

Malzeme türleri: LambertMaterial, PhongMaterial, PbrMaterial.


İpuçları ve En İyi Uygulamalar

  • Kullan Scene.FromFile() özel bir şey gerektirmediğinizde tek satırlık yükleme için LoadOptions
  • İlkel tipleri şuna dönüştür Mesh ile ToMesh() vertex elemanları eklemeden önce
  • Kullan GltfSaveOptions bir … ile .glb kompakt ikili çıktı için uzantı
  • Kontrol et node.Entity için null dönüştürmeden önce — her düğüm geometri taşımaz
  • Kullan PolygonModifier.Triangulate() STL gibi sadece üçgen formatlarına dışa aktarmadan önce dörtgen ağları dönüştürmek için

Yaygın Sorunlar

SorunNedenDüzeltme
ImportException yüklenirkenDesteklenmeyen veya bozuk dosyaDosyanın bir 3D görüntüleyicide açıldığını doğrulayın; formatın desteklenenler listesinde olduğundan emin olun
OBJ yüklemesinden sonra eksik materyaller.mtl dosya bulunamadıYerleştirin .mtl dosyayı şunun yanına .obj veya ayarlayın ObjLoadOptions.EnableMaterials = true
FBX içe aktarmadan sonra ölçek uyumsuzluğuFarklı birim sistemleriKullan ObjLoadOptions.Scale veya bir Transform yükleme sonrasında

FAQ

Bilinmeyen bir dosyanın formatını nasıl tespit ederim?

Kullan FileFormat.Detect():

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

Bir dosya yolu yerine bir akıştan (stream) yükleyebilir miyim?

Evet. Scene.Open() kabul eder Stream:

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

Hangi formatlar hem içe aktarım hem de dışa aktarımı destekler?

OBJ, STL, glTF/GLB, FBX, COLLADA ve 3MF her iki yönü de destekler. PLY sadece içe aktarmayı destekler (PLY dışa aktarıcısı bağlanmamıştır).


API Referans Özeti

Sınıf / MetotAçıklama
SceneÜst düzey 3D sahne kapsayıcısı
Scene.Open()Bir 3D dosyasını yol veya akış ile yükle
Scene.Save()Sahneyi dosyaya veya akışa dışa aktar
Scene.FromFile()Yüklemek ve döndürmek için statik fabrika Scene
NodeVarlıkları ve dönüşümleri tutan sahne hiyerarşi düğümü
Node.CreateChildNode()Bir alt düğüm oluştur ve ekle
MeshKontrol noktaları ve yüz listeleri içeren çokgen örgüsü
Mesh.CreatePolygon()Bir çokgen yüzeyini köşe indisleriyle tanımla
Box / Sphere / CylinderYerleşik parametrik ilkel şekiller
TransformYerel çeviri, döndürme ve ölçekleme
FileFormatDesteklenen formatlar için kayıt defteri ve algılayıcı
LambertMaterial / PhongMaterial / PbrMaterialGölgelendirme için malzeme türleri
 Türkçe