Kullanıma sunulmasından heyecan duyuyoruz Aspose.3D FOSS for Java – Java uygulamalarında 3D dosya formatlarıyla çalışmak için ücretsiz, açık kaynaklı bir kütüphane. Yerel bağımlılıkları olmayan saf bir Java çözümü olarak inşa edilen kütüphane, Java 21 ve sonraki sürümlerde çalışır ve geniş bir proje ve ortam yelpazesi için erişilebilir olmasını sağlar.

Bu gönderi, kütüphanenin neler sunduğunu, nasıl başlanacağını ve bundan sonra nereye gidileceğini anlatıyor.

Aspose.3D FOSS for Java Nedir?

Aspose.3D FOSS for Java, hafif bir 3D dosya işleme kütüphanesidir ve MIT lisansı. Bir sahne grafiği API’si sağlar; bu API sayesinde 3D modelleri çeşitli yaygın formatlarda yükleyebilir, inceleyebilir, dönüştürebilir ve kaydedebilirsiniz. Kütüphane tamamen Java ile yazılmıştır ve dış yerel ikili dosyalar veya platforma özgü yapılandırmalar gerektirmez.

Kaynak kodu GitHub’da mevcuttur: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java

Öne Çıkanlar

  • Saf Java – JNI yok, yerel kütüphaneler yok, platform kısıtlamaları yok.
  • Java 21+ uyumlu.
  • MIT lisanslı – kişisel, ticari veya tescilli projelerde kısıtlama olmadan kullanın.
  • Sahne grafiği mimarisi – düğümler, ağlar, kameralar ve malzemelerden oluşan tanıdık bir ağaç.
  • Çoklu format desteği – OBJ, STL, glTF 2.0 ve GLB dosyalarını okuyup yazın; FBX dosyalarını okuyun.

Hızlı Başlangıç

Maven Kurulumu

Aşağıdaki bağımlılığı projenize ekleyin pom.xml:

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-3d-foss</artifactId>
    <version>26.1.0</version>
</dependency>

İlk Dönüşümünüz

En basit kullanım senaryosu, bir formatta 3D dosyasını yükleyip başka bir formatta kaydetmektir. İşte OBJ’den STL’ye iki satırlık bir dönüşüm:

import com.aspose.threed.*;

public class QuickConvert {
    public static void main(String[] args) throws Exception {
        Scene scene = Scene.fromFile("cube.obj");
        scene.save("output.stl");
    }
}

Bu Scene class, merkezi giriş noktasıdır. Çağırın Scene.fromFile() bir dosya yolu ile bir modeli yüklemek için, ardından çağırın save() hedef yol ile. Kütüphane formatı dosya uzantısından çıkarır.

Sıfırdan Bir Sahne Oluşturma

Sahneleri programlı olarak da oluşturabilirsiniz:

import com.aspose.threed.*;

public class BuildScene {
    public static void main(String[] args) throws Exception {
        Scene scene = new Scene();
        Node node = scene.getRootNode().createChildNode("Box");

        Transform t = node.getTransform();
        t.setTranslation(1, 2, 3);

        scene.save("scene.gltf");
    }
}

Bu, yeni bir sahne oluşturur, kök altında “Box” adlı bir alt düğüm ekler, onu (1, 2, 3) koordinatlarına konumlandırır ve sonucu bir glTF dosyası olarak dışa aktarır.

Biçim-Özel Seçeneklerle Yükleme

Yükleme sürecinde daha ince bir kontrol gerektiğinde, her format kendi özel seçenek sınıfını sağlar. Örneğin, açık seçeneklerle bir STL dosyası yüklemek:

import com.aspose.threed.*;

public class LoadWithOptions {
    public static void main(String[] args) throws Exception {
        StlLoadOptions opts = new StlLoadOptions();
        Scene scene = Scene.fromFile("part.stl", opts);

        // Inspect the loaded scene
        System.out.println("Root children: "
            + scene.getRootNode().getChildNodes().size());

        // Re-export as OBJ
        scene.save("part.obj");
    }
}

Bu Scene.fromFile() static method, yükleme seçeneği türlerinden herhangi birini kabul eder: ObjLoadOptions, StlLoadOptions, GltfLoadOptions, veya FbxLoadOptions.

Sahne Grafiğini Gezinme

Bir sahne yüklendikten sonra, içeriğini incelemek veya değiştirmek için düğüm ağacında dolaşabilirsiniz:

import com.aspose.threed.*;

public class TraverseScene {
    public static void main(String[] args) throws Exception {
        Scene scene = Scene.fromFile("model.gltf");

        for (Node child : scene.getRootNode().getChildNodes()) {
            System.out.println("Node: " + child.getName());

            Transform t = child.getTransform();
            System.out.println("  Translation: " + t.getTranslation());

            Entity entity = child.getEntity();
            if (entity instanceof Mesh) {
                Mesh mesh = (Mesh) entity;
                System.out.println("  Vertices: "
                    + mesh.getControlPoints().size());
            }
        }
    }
}

Bu desen, hata ayıklama, model içeriği hakkında raporlar oluşturma veya sahneyi yeniden dışa aktarmadan önce belirli bölümlerini seçerek değiştirme gibi durumlarda faydalıdır.

Dönüşümler Uygulama

3D uzayda düğüm konumlandırma, şu aracılığıyla yapılır: Transform her birindeki nesne Node:

import com.aspose.threed.*;

public class TransformExample {
    public static void main(String[] args) throws Exception {
        Scene scene = new Scene();

        Node parent = scene.getRootNode().createChildNode("Parent");
        parent.getTransform().setTranslation(10, 0, 0);

        Node child = parent.createChildNode("Child");
        child.getTransform().setTranslation(5, 0, 0);
        child.getTransform().setScale(2, 2, 2);

        // Child's world position is (15, 0, 0) due to
        // parent-child transform inheritance

        scene.save("transformed.gltf");
    }
}

Dönüşümler, standart ebeveyn-çocuk kalıtım modelini izler: bir çocuğun dünya uzayı konumu, yerel dönüşümü ile köke kadar olan tüm ata dönüşümlerinin birleşimidir.

Neler Dahil

Kütüphane, 3D sahne grafiği modeli etrafında tasarlanmış odaklanmış bir yetenek setiyle birlikte gelir.

Sahne Grafiği

Sahne grafiği, API’nin belkemiğidir. Her 3D dosya bir ağaç yapısı olarak temsil edilir:

SınıfRol
SceneÜst düzey kapsayıcı; sahne grafiğinin kökü
NodeAğaçta adlandırılmış bir konum; dönüşümleri ve alt düğümleri tutar
EntityDüğümlere eklenen görsel nesneler için soyut temel
MeshPoligonal geometri – köşeler, yüzeyler, normaller
CameraSanal kamera tanımı
TransformBir düğüm için yerel çeviri, dönüş ve ölçek
GlobalTransformHesaplanmış dünya-uzayı dönüşümü

Materyaller

Kütüphane, bir PBR (Fiziksel Tabanlı Render) materyal modeli sunar:

  • PbrMaterial – fiziksel tabanlı render malzemesi, albedo, metaliklik, pürüzlülük, ışıldayan renk ve şeffaflık ile. Bu, Java sürümünde mevcut tek somut malzeme sınıfıdır.

Matematik Yardımcıları

Bu com.aspose.threed paket, temel matematiksel ilkelere sahiptir:

  • Vector3 – konumlar, yönler ve renkler için 3 bileşenli vektör.
  • Matrix4 – 4x4 dönüşüm matrisi.
  • Quaternion – rotasyon temsili.
  • BoundingBox – uzamsal sorgular için eksen hizalı sınırlayıcı kutu.
Vector3 a = new Vector3(1, 0, 0);
Vector3 b = new Vector3(0, 1, 0);
Vector3 c = Vector3.add(a, b); // (1, 1, 0)

Yükleme ve Kaydetme Seçenekleri

Her formatın, içe ve dışa aktarma davranışını kontrol etmenizi sağlayan özel seçenek sınıfları vardır:

BiçimSeçenekleri YükleSeçenekleri Kaydet
OBJObjLoadOptionsObjSaveOptions
STLStlLoadOptionsStlSaveOptions
glTF / GLBGltfLoadOptionsGltfSaveOptions
FBXFbxLoadOptions– (yalnızca içe aktar)

Örneğin, güzel biçimlendirilmiş JSON ve ters çevrilmiş bir koordinat sistemiyle glTF dışa aktarmak için:

GltfSaveOptions opts = new GltfSaveOptions();
opts.setFlipCoordinateSystem(true);
opts.setPrettyPrint(true);

scene.save("output.gltf", opts);

Desteklenen Biçimler

Aşağıdaki tablo, Aspose.3D FOSS for Java’nin okuyup yazabildiği biçimleri özetlemektedir.

BiçimUzantıİçe AktarDışa AktarNotlar
OBJ.objEvetEvetMTL malzemeleriyle
STL.stlEvetEvetİkili + ASCII
glTF 2.0.gltfEvetEvetJSON formatı
GLB.glbEvetEvetGltfSaveOptions aracılığıyla ikili glTF
FBX.fbxEvetHayırYalnızca içe aktar

OBJ, STL, glTF ve GLB hem yükleme hem de kaydetmeyi destekler. FBX yalnızca içe aktarma için desteklenir.

Biçim Seçim Kılavuzu

Doğru biçimi seçmek kullanım senaryonuza bağlıdır:

  • OBJ 3D araçları arasında en yüksek uyumluluğa ihtiyacınız olduğunda idealdir. Neredeyse tüm modelleme uygulamaları OBJ’yi okuyup yazabilir. Ağ veri alışverişi için iyi çalışır ancak yalnızca eşlik eden MTL dosyaları aracılığıyla temel malzeme bilgilerini taşır.
  • STL 3D baskı iş akışları için tercih edilen formattır. Malzeme veya sahne hiyerarşisi olmadan ham üçgenleştirilmiş geometri depolar, bu da dilimleyici yazılımının tam olarak beklediği şeydir. Eğer iş akışınız bir 3D yazıcıda sonlanıyorsa, STL açık bir seçimdir.
  • glTF modern web ve gerçek zamanlı 3D için standarttır. PBR malzemeleri, tam sahne hiyerarşilerini destekler ve verimli aktarım için tasarlanmıştır. Web tabanlı görüntüleyiciler oluştururken, three.js veya Babylon.js ile çalışırken veya herhangi bir gerçek zamanlı renderleme hattını hedeflerken glTF’yi kullanın.
  • FBX oyun geliştirme ve dijital içerik oluşturma iş akışlarına derinlemesine entegre edilmiştir. Hiyerarşiler ve malzemeler dahil olmak üzere zengin sahne verilerini destekler. Aspose.3D FOSS for Java FBX’i destekler. sadece içe aktar – FBX varlıklarını yüklemek ve diğer formatlara dönüştürmek için kullanın.

Bilinen Sınırlamalar

Şunu belirtmek önemlidir ki Scene.render() dır desteklenmiyor FOSS sürümünde. Bu yöntemi çağırmak bir UnsupportedOperationException. Kütüphane dosya tabanlı 3D işleme — yükleme, manipülasyon, dönüştürme ve modelleri kaydetme — için tasarlanmıştır; gerçek zamanlı bir ekrana render etmeye kıyasla.

Açık Kaynak ve Lisanslama

Aspose.3D FOSS for Java şu lisans altında yayınlanmıştır MIT License. Bu, şu anlama gelir:

  • Kütüphaneyi ticari ve tescilli uygulamalarda kullanın.
  • Kaynak kodunu ihtiyaçlarınıza göre değiştirin.
  • Kütüphaneyi kendi yazılımınızın bir parçası olarak dağıtın.

MIT lisansının belirttiği dışında hiçbir telif ücreti, kullanım sınırı ve atıf gereksinimi yoktur.

Tam kaynak kodu GitHub’da barındırılıyor ve katkılar memnuniyetle karşılanıyor: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java

Sistem Gereksinimleri

GereksinimDetay
Java sürüm21 or later
BağımlılıklarYok (saf Java)
PlatformlarJVM çalıştıran herhangi bir platform
Derleme aracıMaven (önerilen)

Başlarken

İşinize yarayacak kaynaklar şunlardır:

  • Dokümantasyon – kapsamlı kılavuzlar ve API yürütme rehberleri şurada mevcuttur Aspose.3D belgelendirme sitesi.
  • Bilgi Tabanı – pratik nasıl yapılır makaleleri ve sorun giderme ipuçları şurada Aspose.3D KB.
  • API Referansı – ayrıntılı sınıf ve yöntem referansı şurada Aspose.3D API Reference.
  • Kaynak Kodu – gözatın ve katkıda bulunun GitHub.
  • Maven Central – paket şu şekilde yayınlanmıştır com.aspose:aspose-3d-foss Maven Central’da.

Ortak Kullanım Senaryoları

İşte Aspose.3D FOSS for Java için uygun olan bazı pratik senaryolar:

Format Dönüştürme Boru Hatları

Birçok ekip 3D varlıkları bir formatta alır ancak başka bir formatta ihtiyaç duyar. Tasarım ekibi FBX ile çalışabilirken web ekibi glTF’ye ihtiyaç duyabilir. Kütüphane, otomatik dönüşüm boru hatları oluşturmanıza olanak tanır:

// Convert all incoming FBX assets to GLB for the web team
Scene scene = Scene.fromFile("asset.fbx");

GltfSaveOptions opts = new GltfSaveOptions();
opts.setContentType(FileContentType.BINARY);

scene.save("asset.glb", opts);

3D Model Inspection and Validation

Uygulamanıza bir 3D varlık entegre etmeden önce, içeriğini doğrulamak isteyebilirsiniz – düğüm sayılarını kontrol etmek, geometriyi doğrulamak veya beklenen öğelerin mevcut olduğunu onaylamak:

Scene scene = Scene.fromFile("model.obj");

int nodeCount = scene.getRootNode().getChildNodes().size();
System.out.println("Top-level nodes: " + nodeCount);

for (Node child : scene.getRootNode().getChildNodes()) {
    if (child.getEntity() instanceof Mesh) {
        Mesh mesh = (Mesh) child.getEntity();
        System.out.println(child.getName() + ": "
            + mesh.getControlPoints().size() + " vertices");
    }
}

Sahne Montajı

Birden fazla modeli yükleyebilir ve tek bir sahnede birleştirebilirsiniz:

Scene scene = new Scene();

Scene part1 = Scene.fromFile("chassis.obj");
Scene part2 = Scene.fromFile("wheels.obj");

// Add nodes from each part into the combined scene
for (Node child : part1.getRootNode().getChildNodes()) {
    scene.getRootNode().getChildNodes().add(child);
}
for (Node child : part2.getRootNode().getChildNodes()) {
    scene.getRootNode().getChildNodes().add(child);
}

scene.save("assembled.gltf");

Sırada Ne Var

Gelecek gönderilerde şunları ele alacağız:

  • Sahne grafiği API’sinin, malzemelerin ve matematik yardımcı programlarının temel özelliklerine derinlemesine bir bakış.
  • Desteklenen her 3D formatı – OBJ, STL, glTF ve FBX – ile çalışmaya yönelik pratik bir rehber; yükleme/kaydetme seçenekleri ve toplu dönüşüm desenlerini içerir.

Takipte kalın ve kütüphaneyi keşfetmekten çekinmeyin, geri bildirimlerinizi GitHub’ta paylaşın.