Fitur dan fungsi

Fitur dan fungsi

Halaman ini mencakup setiap area utama dari Aspose 3D-Foss pada 26.1 dengan contoh Java yang bekerja.


Mengisi dan Menjimatkan Adegan

scene.open() mengisi file; scene.save() Ekspornya adalah :

import com.aspose.threed.Scene;

Scene scene = new Scene();
scene.open("input.obj");
scene.save("output.glb");

Alternatif untuk pabrik:

Scene scene = Scene.fromFile("input.fbx");
scene.save("output.stl");

Format-Seperti Pilihan

Pasal LoadOptions atau SaveOptions Sub-kelas untuk kontrol halus:

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

Catatan : FBX hanya didukung untuk impor; ekspor FB X tidak dilaksanakan dalam versi FOSS. Binary FBX file yang didukung untuk impor — ASCII FBX membuang ImportException.


Membangun Scene Graph

Mencipta nodus dan menyambung entitas:

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

Operasi Mesh

Mencipta A Mesh dengan titik kontrol dan polygon:

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

Transformasi

Setiap orang Node Menggunakan A Transform:

Node node = scene.getRootNode().createChildNode("moved", new Mesh());
node.getTransform().setTranslation(10, 0, 5);
node.getTransform().setScale(2, 2, 2);

Baca Dunia melalui node.getGlobalTransform().getMatrix().


Bahan

Mengatur materi untuk nodus:

import com.aspose.threed.*;

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

Jenis bahan : Material dan dasarnya, PbrMaterial (PBR adalah logam yang keras).


Tips dan Praktik Terbaik

  • Penggunaan Scene.fromFile() untuk beban satu baris ketika pilihan tersuai tidak diperlukan
  • Membangun program dengan createPolygon() Untuk geometri yang teratur
  • Penggunaan .glb Perpanjangan untuk kompak biner glTF output
  • Periksa node.getEntity() != null Sebelum casting
  • Ekspor dari STL Tidak binary STL export hanya menulis 3 vertikal pertama dari setiap polygon face — quad atau n-gon wajah diam-diam tertutup. ASCII STl expor menulis semua indeks vertex, yang menghasilkan blok sisi yang rosak untuk non-triangle muka. Selalu melewati pre-triangulated mesh (all-trangles muka) ke ST L eksport untuk menghindari kehilangan data atau output tidak sah.

Masalah umum

MasalahnyaPenyebabnyaFiksasi
Pengecualian pada bebanFile yang tidak disokong atau rusakPeriksa file terbuka dalam 3D viewer
Bahan yang hilang setelah OBJ load.mtl file tidak ditemukanTempatnya .mtl Di samping itu .obj;• Memastikan bahan-bahan yang tersedia
Keterbatasan skala setelah imporSistem unit yang berbedaMenggunakan A Transform Skala setelah muatan

FAQ

Bagaimana saya dapat mengidentifikasi format file?

FileFormat format = FileFormat.detect("unknown.bin");
System.out.println(format.getExtension());

Bisakah saya mengisi dari satu aliran?

Ya ya. scene.open() menerima satu InputStream.

Format apa yang mendukung kedua import dan eksport?

OBJ, STL dan glTF/GLB mendukung keduanya. FBX hanya diimpor; ekspor tidak dilaksanakan dalam versi FOSS.


Simpli Referensi API

Kelas / MetodePenerangan
SceneKontainer 3D Top Level
scene.open()Mengunggah file 3D dengan jalur atau aliran
scene.save()Ekspor scene ke file atau stream
Scene.fromFile()Pabrik statik untuk mengisi dan mengembalikan a Scene
NodeKeterangan hierarki node
node.createChildNode()Mencipta dan menyambung anak nodus
MeshPolygon mesh dengan titik kontrol dan daftar wajah
mesh.createPolygon()Menentukan wajah polygon
Mesh.toMesh()Konversi atau klon Mesh Geometri
TransformTerjemahan, rotasi dan skala lokal
FileFormatRegistry dan detektor untuk format
 Bahasa Indonesia