Giriş

Java’da 3D içeriği ile çalışmak genellikle ağırlık arasındaki seçim gerektirir. Oyun motoru ve bar-bones matematik kütüphaneleri. aspose-3d-foss paket teklif A orta zemin: I/O dosyalarını, düğüm hierarşilerini işleyen odaklanmış bir sahne-grafik API, mesh inşaat, ve koordinasyon dönüşümler bir rendering çekmeden Bir boru hattı veya bir bağımlılık zinciri.

Java için Aspose.3D FOSS, MIT lisansı altında dağıtılan açık kaynaklı bir kütüphane. 80 sınıf alan sahne yönetimi, geometri, malzeme ve format dönüşümü sağlar. Kütüfe FBX, glTF/GLB, Wavefront OBJ ve STL okuyor ve yazıyor gltF / GLB , OBG ve StL (FBX ihracatı uygulanmıyor), sunucuda 3D işleme, yapı-yapı bütünleşmeleri ve Java 21 veya daha sonra çalışan veri-konversiyon borular için pratik yapar.

Bu yazı kütüphanedeki sahne yönetimi yeteneklerini inceler: bir sahnenin çarpışmadan nasıl yapılacağını, geometri ve dönüşümlerle nasıl nüfuz edileceğini ve sonucu diske nasıl ihraç edilebileceğini.


Ne içeriyor

Graph Basics sahne

O zamanlar Scene sınıf her 3D belge için kök konteyneridir. Node, varlık metadata, animasyon klipleri ve alt sahneler. boş bir oluşturabilirsiniz sahne ve sonra popülat, ya da mevcut bir dosyayı yüklemek ile Scene.fromFile.

import com.aspose.threed.Scene;
import com.aspose.threed.Node;

Scene scene = new Scene();
Node root = scene.getRootNode();

// Add named child nodes to build a hierarchy
Node chassis = root.createChildNode("Chassis");
Node wheel = chassis.createChildNode("FrontLeftWheel");

Herkesin Node Bir tutabilirim Entity (A gibi bir Mesh veya CameraA ) Transform, malzemelerin bir listesi ve daha fazla çocuk düğümleri. ağaç yapısı Çoğu 3D yazma aracı tarafından kullanılan sahne-grafik desenini ayna eder.

Mesh İnşaat

O zamanlar Mesh Sınıf, geometri kontrol noktalarından ve poligonlardan tanımlamanıza izin verir. İndirimler: Vertikal eklemek için addControlPoint,Sonra yüzlerine bağlayın. ile createPolygon.

import com.aspose.threed.Mesh;

Mesh box = new Mesh("Box");

// Define eight corners of a cube
box.addControlPoint(0, 0, 0);
box.addControlPoint(1, 0, 0);
box.addControlPoint(1, 1, 0);
box.addControlPoint(0, 1, 0);
box.addControlPoint(0, 0, 1);
box.addControlPoint(1, 0, 1);
box.addControlPoint(1, 1, 1);
box.addControlPoint(0, 1, 1);

// Create quad faces
box.createPolygon(0, 1, 2, 3); // back
box.createPolygon(4, 5, 6, 7); // front
box.createPolygon(0, 4, 7, 3); // left
box.createPolygon(1, 5, 6, 2); // right
box.createPolygon(3, 2, 6, 7); // top
box.createPolygon(0, 1, 5, 4); // bottom

scene.getRootNode().createChildNode("Box", box);

Mersin ateşi de dahil olmak üzere triangulate(), optimize(removeVertices),ve Boolean İşlemler (union, difference, intersectAncak bu yöntemler çürük bir şekilde mevcut serbest bırakma — onlar performans olmadan giriş mesh bir klon geri verirler adı verilen operasyon.

Transformasyon ve pozisyon

Her biri Node A taşıyıcı Transform yerel çevirisini, dönüşünü kontrol eder., Bu, bir ana düğmeyi hareket ettirmek için hierarşiden oluşur. Tüm çocuklarını hareket ettirir.

import com.aspose.threed.Transform;
import com.aspose.threed.Node;

Node node = scene.getRootNode().createChildNode("Shifted");
Transform t = node.getTransform();
t.setTranslation(5.0, 0.0, -3.0);
t.setScale(2.0, 2.0, 2.0);
t.setEulerAngles(0, 45.0, 0);

*Açık pozisyon soruları için, arama node.getGlobalTransform() geri almak için Kompozit olan GlobalTransform,veya node.evaluateGlobalTransform(true) almak için a Matrix4 Bu da geometrik offsetler içerir.

PBR Malzemeleri

O zamanlar PbrMaterial Sınıf fiziksel olarak dayalı render özellikleri sağlar: albedo renk, metal faktör, sertlik, emisyonlu renk ve şeffaflık. Çocuğu oluştururken bir düğmeye malzeme atın.

import com.aspose.threed.PbrMaterial;
import com.aspose.threed.Vector4;
import com.aspose.threed.Vector3;

PbrMaterial mat = new PbrMaterial("RedMetal");
mat.setAlbedo(new Vector4(0.9, 0.1, 0.1, 1.0));
mat.setMetallicFactor(0.8);
mat.setRoughnessFactor(0.3);
mat.setEmissiveColor(new Vector3(0, 0, 0));

scene.getRootNode().createChildNode("Part", box, mat);

Format Deteksiyonu

O zamanlar FileFormat Sınıf statik arama ve tespit araçları sağlar. Bir dosya uzantısı ile bir biçimi çözmek veya bilinmeyen dosyaları tanımlamak için bir akış denemek.

import com.aspose.threed.FileFormat;

FileFormat fmt = FileFormat.getFormatByExtension("model.glb");
boolean canRead  = fmt.getCanImport();
boolean canWrite = fmt.getCanExport();

Koordinat Sistem Dönüşümleri

AxisSystem Yukarıdaki eksen, ön ekseni ve bir koordinasyon sistemi, sonra hesaplama a Matrix4 Geometre’nin dönüşümü arasında Konvansiyonlar (örneğin, bir Z-up sağ el sistemi ile Y-Up’a kadar) sol elden bir tane.

import com.aspose.threed.AxisSystem;
import com.aspose.threed.Axis;
import com.aspose.threed.CoordinateSystem;
import com.aspose.threed.Matrix4;

AxisSystem source = new AxisSystem(
    CoordinateSystem.RIGHT_HANDED, Axis.Z_AXIS, Axis.Y_AXIS);
AxisSystem target = new AxisSystem(
    CoordinateSystem.LEFT_HANDED, Axis.Y_AXIS, Axis.Z_AXIS);
Matrix4 conversion = source.transformTo(target);

Hızlı Başlangıç

Maven bağımlılığı eklemek için:

<dependency>
  <groupId>org.aspose</groupId>
  <artifactId>aspose-3d-foss</artifactId>
  <version>26.5.0</version>
</dependency>

Basit bir sahne oluşturun ve ihraç edin:

import com.aspose.threed.Scene;
import com.aspose.threed.Mesh;
import com.aspose.threed.Node;
import com.aspose.threed.StlSaveOptions;
import com.aspose.threed.FileContentType;

Scene scene = new Scene();
Mesh mesh = new Mesh("Triangle");
mesh.addControlPoint(0, 0, 0);
mesh.addControlPoint(1, 0, 0);
mesh.addControlPoint(0, 1, 0);
mesh.createPolygon(0, 1, 2);

scene.getRootNode().createChildNode("Shape", mesh);

StlSaveOptions opts = new StlSaveOptions();
opts.setContentType(FileContentType.BINARY);
scene.save("output.stl", opts);

Desteklenen Formatlar

Format YapılarıGenişletmeOkumaya devam etyazın
FBX (ASCII ve Binary, 6.x-7.x).fbxEvetHayır
GTTF 1.0 / 2.0 için.gltfEvetEvet
GTTF Binary İndirme.glbEvetEvet
Wavefront OBJ İndirme.objEvetEvet
STL (ASCII ve Binary).stlEvetEvet

Her formülde özel olarak LoadOptions ve SaveOptions Sınıflar ( için Örnek olarak, FbxLoadOptions, GltfSaveOptions, StlSaveOptionsBu da ortaya çıkıyor Format-sözlü ayarlar, örneğin koordinat-system flipping ve içerik tipi Seçim için.


Açık Kaynak & Lisans

Aspose.3D FOSS for Java MIT lisansı altında yayınlanır. kaynak kodu GitHub’da mevcut olan Aspose.3D-FOSS için Java. Kütüphanesi ticari ve çevrimiçi olarak kullanabilir, değiştirebilir ve yeniden dağıtabilirsiniz. Sınırsız ticari projeler.


Başlatmak için