Özellikler ve İşlevsellikler
Özellikler ve İşlevsellikler
Bu sayfa, her ana özellik alanını kapsar aspose-3d-foss 26.1.0 çalışan Java örnekleriyle.
Sahneleri Yükleme ve Kaydetme
scene.open() bir dosya yükler; scene.save() dışa aktarır:
import com.aspose.threed.Scene;
Scene scene = new Scene();
scene.open("input.obj");
scene.save("output.glb");Statik fabrika alternatifi:
Scene scene = Scene.fromFile("input.fbx");
scene.save("output.stl");Format‑Özel Seçenekler
Geç LoadOptions veya SaveOptions ince ayarlı kontrol için alt sınıflar:
import com.aspose.threed.*;
Scene scene = new Scene();
ObjLoadOptions opts = new ObjLoadOptions();
opts.setFlipCoordinateSystem(true);
scene.open("model.obj", opts);
GltfSaveOptions saveOpts = new GltfSaveOptions();
saveOpts.setFlipCoordinateSystem(true);
scene.save("model.glb", saveOpts);Not: FBX yalnızca içe aktarma için desteklenir; FBX dışa aktarımı FOSS sürümünde uygulanmamıştır. Sadece ikili FBX dosyalar içe aktarma için desteklenir — ASCII FBX hata verir ImportException.
Bir Sahne Grafiği Oluşturma
Düğümler oluşturun ve varlıkları ekleyin:
Scene scene = new Scene();
Node root = scene.getRootNode();
Mesh mesh = new Mesh("myMesh");
mesh.getControlPoints().add(new Vector4(0, 0, 0));
mesh.getControlPoints().add(new Vector4(10, 0, 0));
mesh.getControlPoints().add(new Vector4(10, 10, 0));
mesh.createPolygon(0, 1, 2);
Node meshNode = root.createChildNode("triangle", mesh);Mesh İşlemleri
Bir oluştur Mesh kontrol noktaları ve çokgenlerle programlı olarak:
Mesh mesh = new Mesh("custom");
mesh.getControlPoints().add(new Vector4(0, 0, 0));
mesh.getControlPoints().add(new Vector4(10, 0, 0));
mesh.getControlPoints().add(new Vector4(10, 10, 0));
mesh.getControlPoints().add(new Vector4(0, 10, 0));
mesh.createPolygon(0, 1, 2, 3);Dönüşümler
Her Node taşır Transform:
Node node = scene.getRootNode().createChildNode("moved", new Mesh());
node.getTransform().setTranslation(10, 0, 5);
node.getTransform().setScale(2, 2, 2);Dünya uzayını aracılığıyla oku node.getGlobalTransform().getMatrix().
Materyaller
Materyalleri düğümlere atayın:
PbrMaterial mat = new PbrMaterial("shiny");
mat.setAlbedo(new Vector4(0.8, 0.2, 0.2, 1.0));
mat.setMetallicFactor(0.5);
mat.setRoughnessFactor(0.3);
scene.getRootNode().createChildNode("red_mesh", mesh, mat);Malzeme türleri: Material (temel), PbrMaterial (PBR metallic-roughness).
İpuçları ve En İyi Uygulamalar
- Kullan
Scene.fromFile()özel seçeneklere ihtiyaç duyulmadığında tek satırlık yüklemeler için - Şununla programlı olarak ağlar oluştur
createPolygon()özel geometri için - Kullan
.glbkompakt ikili glTF çıktısı için uzantı - Kontrol et
node.getEntity() != nulldönüştürmeden önce - STL dışa aktarımı yapmaz poligon yüzlerini otomatik olarak üçgenleştirir. İkili STL dışa aktarımı her poligon yüzünün yalnızca ilk 3 köşesini yazar — dörtgen veya n‑gon yüzler sessizce kırpılır. ASCII STL dışa aktarımı tüm köşe indekslerini yazar, bu da üçgen olmayan yüzler için bozuk facet blokları oluşturur. Veri kaybını veya geçersiz çıktıyı önlemek için STL dışa aktarımına her zaman önceden üçgenleştirilmiş ağları (tamamen üçgen yüzler) gönderin.
Yaygın Sorunlar
| Sorun | Neden | Düzeltme |
|---|---|---|
| Yükleme sırasında istisna | Desteklenmeyen veya bozuk dosya | Dosyanın 3D görüntüleyicide açıldığını doğrulayın |
| OBJ yüklemesinden sonra eksik materyaller | .mtl dosya bulunamadı | Yerleştir .mtl yanında .obj; malzemelerin etkin olduğundan emin olun |
| İçe aktarmadan sonra ölçek uyumsuzluğu | Farklı birim sistemleri | Uygula bir Transform yükleme sonrasında ölçek |
FAQ
Bir dosyanın formatını nasıl tespit ederim?
FileFormat format = FileFormat.detect("unknown.bin");
System.out.println(format.getExtension());Bir akıştan yükleyebilir miyim?
Evet. scene.open() kabul eder bir InputStream.
Hangi formatlar hem içe aktarım hem de dışa aktarımı destekler?
OBJ, STL ve glTF/GLB her iki yönü de destekler. FBX yalnızca içe aktarmayı destekler; dışa aktarma FOSS sürümünde uygulanmadı.
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 birini döndürmek için statik fabrika Scene |
Node | Sahne hiyerarşi düğümü |
node.createChildNode() | Bir alt düğüm oluştur ve ekle |
Mesh | Kontrol noktaları ve yüz listeleriyle poligon örgüsü |
mesh.createPolygon() | Poligon yüzü tanımla |
Mesh.toMesh() | Mesh geometrisini dönüştür veya klonla |
Transform | Yerel taşıma, döndürme ve ölçekleme |
FileFormat | Biçimler için kayıt ve algılayıcı |