Ö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ıf | Yön | Ana Özellikler |
|---|---|---|
ObjLoadOptions | İçe Aktar | FlipCoordinateSystem, EnableMaterials, Scale |
ObjSaveOptions | Dışa Aktar | FlipCoordinateSystem, EnableMaterials, PointCloud |
FbxLoadOptions | İçe Aktar | (varsayılan ayarlar) |
GltfLoadOptions | İçe Aktar | (varsayılan ayarlar) |
GltfSaveOptions | Dışa Aktar | (varsayılan ayarlar) |
StlLoadOptions | İçe aktar | (varsayılan ayarlar) |
StlSaveOptions | Dışa aktar | (varsayılan ayarlar) |
ColladaLoadOptions | İçe aktar | FlipCoordinateSystem |
ColladaSaveOptions | Dışa aktar | Indented, 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çinLoadOptions - İlkel tipleri şuna dönüştür
MeshileToMesh()vertex elemanları eklemeden önce - Kullan
GltfSaveOptionsbir … ile.glbkompakt ikili çıktı için uzantı - Kontrol et
node.Entityiçinnulldö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
| Sorun | Neden | Düzeltme |
|---|---|---|
ImportException yüklenirken | Desteklenmeyen veya bozuk dosya | Dosyanı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ğu | Farklı birim sistemleri | Kullan 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 / Metot | Açı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 |
Node | Varlıkları ve dönüşümleri tutan sahne hiyerarşi düğümü |
Node.CreateChildNode() | Bir alt düğüm oluştur ve ekle |
Mesh | Kontrol noktaları ve yüz listeleri içeren çokgen örgüsü |
Mesh.CreatePolygon() | Bir çokgen yüzeyini köşe indisleriyle tanımla |
Box / Sphere / Cylinder | Yerleşik parametrik ilkel şekiller |
Transform | Yerel çeviri, döndürme ve ölçekleme |
FileFormat | Desteklenen formatlar için kayıt defteri ve algılayıcı |
LambertMaterial / PhongMaterial / PbrMaterial | Gölgelendirme için malzeme türleri |