Aspose.3D FOSS for Java สนับสนุนรูปแบบไฟล์ 3D: OBJ, STL, กลตฟ, GLB,และ FBX (นําเข้าเท่านั้น) บทความนี้เป็นคู่มือแบบฟอร์มตามรูปแบบที่แสดงให้เห็นว่าวิธีการโหลดและบันทึกแต่ละตัวเลือกใดที่มีอยู่และวิธีแปลงระหว่างพวกเขา.
ตัวอย่างทั้งหมดใช้ com.aspose.threed.* บรรจุภัณฑ์:
import com.aspose.threed.*;
การติดยาเสพติด:
<dependency>
<groupId>org.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.5.0</version>
</dependency>รูปแบบภูมิทัศน์
ก่อนที่จะตกหลุมที่นี่เป็นรายละเอียดอย่างรวดเร็วของรูปแบบที่ได้รับการสนับสนุนและกรณีที่ใช้ทั่วไป.
| รูปแบบ | การขยายตัว | การนําเข้า | การส่งออก | การสนับสนุนวัสดุ | ฉากยิเรกชัน |
|---|---|---|---|---|---|
| OBJ | .obj | ใช่ | ใช่ | ฐาน (ไฟล์ MTL ) | ใบมีด |
| STL | .stl | ใช่ | ใช่ | ไม่มี | ใบมีด |
| GLTF 2.0 | .gltf | ใช่ | ใช่ | PBR | เต็ม |
| GLB | .glb | ใช่ | ใช่ | PBR | เต็ม |
| FBX | .fbx | ใช่ | ไม่ | ริ้วรอย | เต็ม |
OBJ, STL, glTF และ GLB สนับสนุนทั้งการนําเข้าและส่งออก FBX จะสนับสนุนสําหรับ: เท่านั้นนําเข้า.GLB (GlTF วงกลม) ผลิตโดยการผลิต GltfSaveOptions ด้วย setContentType(FileContentType.BINARY).
OBJ: โลหะหน้าวัตถุ
OBJ เป็นหนึ่งในรูปแบบ 3D mesh ที่ได้รับการสนับสนุนอย่างแพร่หลาย มันจัดเก็บจิเมตริกเป็นข้อความเรียบด้วยตัวเลือก .mtl ไฟล์สําหรับวัสดุ.
บรรจุไฟล์ OBJ
วิธีที่ง่ายที่สุดคือผ่านเส้นทางไฟล์โดยตรง:
Scene scene = Scene.fromFile("model.obj");
สําหรับการควบคุมมากขึ้นใช้ ObjLoadOptions:
ObjLoadOptions opts = new ObjLoadOptions();
Scene scene = Scene.fromFile("model.obj", opts);
เมื่อไฟล์ OBJ แสดงการอ้างอิงไปยังไฟล์ MTL (ผ่านไฟล์ A) mtllib หลักฐาน) สารสถาปัตยกรรมจะพยายามที่จะโหลดคําจํากัดความของวัสดุจากมันโดยอัตโนมัติไฟล์ MTL จะอยู่ในแผนที่เดียวกันกับไฟล์ OBJ หรือในเส้นทางที่ระบุไว้ในหลักสูตร.
การประหยัดเป็น OBJ
Scene scene = Scene.fromFile("input.fbx");
scene.save("output.obj");
OBJ ใช้กรณี
- การแลกเปลี่ยนข้อมูลเมซระหว่างเครื่องมือ 3D ที่แตกต่างกัน.
- นําเข้ารูปแบบจากสมุดสินทรัพย์ซึ่งกระจายในรูปแบบ OBJ.
- การตรวจสอบทางภูมิศาสตร์อย่างรวดเร็วโดยไม่ต้องมีการจัดเรียงแถบที่ซับซ้อน.
STL: สเตอริทโตรแกรม
STL เป็นรูปแบบมาตรฐานสําหรับการพิมพ์ 3D มันเป็นภาพพื้นผิวสามเหลี่ยมโดยไม่มีวัสดุสีหรือยิเรกชันของสถานการณ์ไฟล์ STl มาในสองตัวเลือก: ASCII (อ่านต่อมนุษย์) และไบนารี (กะทัดรัด).
ดาวน์โหลดไฟล์ STL
// Simple load
Scene scene = Scene.fromFile("part.stl");
// With explicit options
StlLoadOptions opts = new StlLoadOptions();
Scene scene = Scene.fromFile("part.stl", opts);
การประหยัดเป็น STL
Scene scene = Scene.fromFile("model.obj");
scene.save("output.stl");
เพื่อควบคุมการผลิตใช้ StlSaveOptions:
StlSaveOptions opts = new StlSaveOptions();
scene.save("output.stl", opts);
ความคิดเห็น STL
- STL เก็บเฉพาะจิโตรัม วัสดุการประมวลผลและยอเรกชันของภาพยนตร์ไม่ได้รับการสนับสนุนและถูกนําไปใช้ในการส่งออก.
- STL การส่งออก ไม่ สี่เหลี่ยมโดยอัตโนมัติ STL บินเนียร์เขียนเพียง 3 ด้านแรกของแต่ละหน้าโพลีกอน; หน้า quad และ n-gon มีการตัดเงียบ. ASCII STl เขียนทุกตัวเลขแนวตั้งต่อใบหน้า, ผลิตผลลัพธ์ที่ผิดปกติสําหรับหน้าที่ไม่เป็นสามเหลืองเสมอใช้หน้าแบบสามคน (หน้าทั้งสาม) เมื่อส่งออกไปยัง ST L.
- STL บินเนียร์มีขนาดเล็กกว่า ASCII STl สําหรับรุ่นใหญ่.
- STL เป็นรูปแบบการเลือกเมื่อเป้าหมายคือเครื่องพิมพ์ 3D หรือซอฟต์แวร์ slicer.
GLTF: รูปแบบการส่งผ่าน GL
glTF เป็นรูปแบบที่ทันสมัยออกแบบมาสําหรับการส่งและโหลดเนื้อหา 3D อย่างมีประสิทธิภาพโดยเฉพาะอย่างยิ่งบนเว็บและในแอพลิเคชันเวลาจริง มันสนับสนุนวัสดุ PBR หลักสูตรของภาพยนตร์และการเคลื่อนไหว.
ดาวน์โหลดไฟล์ glTF
Scene scene = Scene.fromFile("scene.gltf");
// With options
GltfLoadOptions opts = new GltfLoadOptions();
Scene scene = Scene.fromFile("scene.gltf", opts);
การประหยัดเป็น GLTF
การบันทึกพื้นฐานใช้การขยายไฟล์เพื่อกําหนดรูปแบบ:
scene.save("output.gltf");
สําหรับการควบคุมรายละเอียดการใช้ GltfSaveOptions:
GltfSaveOptions opts = new GltfSaveOptions();
opts.setFlipCoordinateSystem(true);
opts.setPrettyPrint(true);
scene.save("output.gltf", opts);
GltfSaveOptions รายละเอียด
| วิธีการ | เป้าหมาย |
|---|---|
setFlipCoordinateSystem(boolean) | Flip the coordinate system axis during export. ใช้เมื่อแปลงจาก Y-up ไปยัง Z-Up หรือกลับกัน. |
setPrettyPrint(boolean) | การกําหนดค่า JSON ภายนอกด้วย indentation สําหรับการอ่านได้ตั้งไว้ใน false ขนาดไฟล์ขนาดเล็กในการผลิต. |
GLTF ใช้กรณี
- เว็บฐาน 3D ชม (three.js, Babylon.js).
- การใช้งานในเวลาจริงและเครื่องยนต์เกม.
- การรักษาคําจํากัดความวัสดุ PBR ในเครื่องมือ.
FBX: Filmbox (นําเข้าเท่านั้น)
FBX เป็นรูปแบบที่เป็นเจ้าของโดย Autodesk ซึ่งใช้กันอย่างแพร่หลายในการพัฒนาเกมและการสร้างเนื้อหาดิจิตอล Aspose.3D FOSS for Java รองรับ FBx สําหรับ: เท่านั้นนําเข้า — การส่งออกไปยัง FBX ไม่สามารถใช้ได้.
บินเนียร์ FBX เท่านั้น. FBX ผู้นําเข้าอ่านไฟล์ FBx ไบนารีเท่านั้น การผ่านไฟล์ ASCII FB X จะถูกปล่อยออก
ImportException("ASCII FBX format not yet supported - only binary FBX is supported"). การยิเรกชันของนิวและการสกัดจากวัสดุจาก FBX ไม่ได้รับการตรวจสอบอย่างสมบูรณ์ ฉากที่ซับซ้อน FB X อาจไม่โหลดได้อย่างสมจริง การเคลื่อนไหวและการตัดไม่ได้ดําเนินการ.
ดาวน์โหลดไฟล์ FBX
Scene scene = Scene.fromFile("character.fbx");
// With options
FbxLoadOptions opts = new FbxLoadOptions();
Scene scene = Scene.fromFile("character.fbx", opts);
แปลง FBX ไปยังรูปแบบอื่น ๆ
เนื่องจากการส่งออก FBX ไม่ได้รับการสนับสนุน แปลงสถานการณ์ FBx ที่นําเข้าเป็น glTF, GLB, OBJ หรือ STL:
Scene scene = Scene.fromFile("character.fbx");
// Save as GLB
GltfSaveOptions opts = new GltfSaveOptions();
opts.setContentType(FileContentType.BINARY);
scene.save("character.glb", opts);
FBX ใช้กรณี
- การนําเข้าของสินทรัพย์เมซ static จากเครื่องมือ Autodesk (Maya, 3ds Max) และแปลงเป็นรูปแบบอื่น ๆ.
- บล็อกไบเนียม FBX จิเมตริกและส่งออกใหม่ไป glTF / GLB, OBJ หรือ STL.
การแปลงแบทช์
กระแสทํางานทั่วไปคือการแปลงไดเรกทอรีไฟล์ทั้งหมดจากรูปแบบหนึ่งไปยังรูปแบบอื่น ๆ นี่เป็นตัวอย่างสําหรับการแปลงชุด:
import com.aspose.threed.*;
import java.io.File;
public class BatchConvert {
public static void main(String[] args) throws Exception {
File inputDir = new File("models/obj");
File outputDir = new File("models/gltf");
outputDir.mkdirs();
GltfSaveOptions saveOpts = new GltfSaveOptions();
saveOpts.setPrettyPrint(true);
File[] objFiles = inputDir.listFiles(
(dir, name) -> name.toLowerCase().endsWith(".obj")
);
if (objFiles == null) return;
for (File objFile : objFiles) {
String baseName = objFile.getName()
.replaceFirst("\\.obj$", "");
Scene scene = Scene.fromFile(objFile.getAbsolutePath());
String outPath = new File(outputDir, baseName + ".gltf")
.getAbsolutePath();
scene.save(outPath, saveOpts);
System.out.println("Converted: " + objFile.getName()
+ " -> " + baseName + ".gltf");
}
}
}
นี้โหลดทุกคน .obj ไฟล์ในไดเรกทอรีแปลงแต่ละเป็น glTF กับการพิมพ์ที่สวยงามและบันทึกผล คุณสามารถปรับตัวอย่างนี้สําหรับรูปแบบแหล่งข้อมูลใด ๆ และแบบเป้าหมายรวมกันได้.
การแปลงแบบ Cross-Format Reference
ตารางด้านล่างแสดงให้เห็นว่าสิ่งที่จะคาดหวังเมื่อแปลงระหว่างรูปแบบ.
| จาก | เพื่อ | ภูมิศาสตร์ | วัสดุ | หลักสูตร | บันทึก |
|---|---|---|---|---|---|
| OBJ | STL | การรักษา | ละลาย | N/A | STL ไม่ได้สนับสนุนวัสดุ |
| OBJ | GLTF / GLB | การรักษา | แปลงเป็น PBR | ใบมีด | วัสดุ MTL แผนที่อยู่ใดก็ได้ที่สามารถ |
| STL | OBJ | การรักษา | ไม่มี | N/A | ไม่มีวัสดุในแหล่งข้อมูล |
| STL | GLTF / GLB | การรักษา | หมายเลขรุ่น: Default | ใบมีด | วัสดุที่กําหนดเองที่ใช้ |
| กลตฟ | OBJ | การรักษา | สะดวก | ก้น | PBR ไปยังวัสดุพื้นฐาน |
| กลตฟ | STL | การรักษา | ละลาย | ก้น | ภูมิศาสตร์เท่านั้น |
| FBX | OBJ | การรักษา | สะดวก | ก้น | การซับซ้อนวัสดุ |
| FBX | STL | การรักษา | ละลาย | ก้น | ภูมิศาสตร์เท่านั้น |
| FBX | GLTF / GLB | การรักษา | แปลงเป็น PBR | การรักษา | ความเชื่อถือที่ดี |
คู่มือการแปลงทั่วไป
- ภูมิศาสตร์ โดยทั่วไปจะถูกเก็บไว้ในรูปแบบคู่พร้อมข้อจํากัดที่สําคัญ: เมื่อส่งออกไปยัง STL, โมชต้องประกอบด้วยหน้าสามเหลี่ยม ทั้งหมด สตลไบเนียมเงียบสงบสี่และ n-gon หน้าไป 3 ด้านแรกของพวกเขา; ASCII STl ผลิตผลผลิตที่ไม่ใช่รูปสําหรับหน้าไม่สามคน.
- วัสดุ ทั่วไปที่ดีที่สุดระหว่าง glTF และ FBX ที่นําเข้าที่รวมข้อมูลวัสดุ การแปลงเป็น STL จะลดลงวัสดุกรมการแปลง เป็น OBJ ช่วยให้วัสดุดิบง่ายขึ้นเพื่อรูปแบบ MTL ฐาน.
- หลักสูตรการแสดงภาพ บันทึกระหว่างไฟล์รูปแบบ glTF OBJ และ STL ผลิตโครงสร้างเรียบ FBX หลักสูตรและวัสดุการสกัดไม่ได้รับการตรวจสอบอย่างสมบูรณ์ในรุ่นนี้.
ใส่มันทั้งหมดร่วมกัน
นี่คือตัวอย่างที่สมบูรณ์แบบซึ่งโหลดไฟล์ OBJ ตรวจสอบคิวส์ของมันและส่งออกไปยังทั้ง glTF และ GLB:
import com.aspose.threed.*;
public class FormatWorkflow {
public static void main(String[] args) throws Exception {
// Load
Scene scene = Scene.fromFile("input.obj");
// Inspect
System.out.println("Nodes in scene:");
for (Node child : scene.getRootNode().getChildNodes()) {
System.out.println(" " + child.getName());
Transform t = child.getTransform();
System.out.println(" Translation: "
+ t.getTranslation());
}
// Export to glTF with options
GltfSaveOptions gltfOpts = new GltfSaveOptions();
gltfOpts.setPrettyPrint(true);
scene.save("output.gltf", gltfOpts);
// Export to GLB (binary glTF)
GltfSaveOptions glbOpts = new GltfSaveOptions();
glbOpts.setContentType(FileContentType.BINARY);
scene.save("output.glb", glbOpts);
System.out.println("Export complete.");
}
}
คําอธิบาย
Aspose.3D FOSS for Java ให้คุณ API ที่สม่ําเสมอผ่านรูปแบบหลาย จุดสําคัญ:
- OBJ - การแลกเปลี่ยนเครื่องมือแบบเรียบง่ายกับวัสดุพื้นฐาน.
- STL –รูปแบบภูมิศาสตร์เท่านั้นสําหรับท่อพิมพ์ 3D.
- GLTF / GLB –รูปแบบ PBR แบบทันสมัยสําหรับเว็บและเวลาจริง ใช้
GltfSaveOptionsด้วยsetContentType(FileContentType.BINARY)สําหรับการผลิต GLB. - FBX – นําเข้าเท่านั้น; รูปแบบที่อุดมไปด้วยการโหลดสินทรัพย์จากเครื่องยนต์เกมและเครื่องมือ DCC.
ใช้รูปแบบเฉพาะโหลดและบันทึกการเลือกคลาส (ObjLoadOptions, StlLoadOptions, StlSaveOptions, GltfLoadOptions, GltfSaveOptions, FbxLoadOptions) เมื่อคุณต้องการการควบคุมที่ละเอียดอ่อนเกี่ยวกับกระบวนการนําเข้าหรือส่งออก.
สําหรับรายละเอียดเพิ่มเติมเยี่ยมชม Aspose.3D การจัดทําเอกสาร หรือสํารวจแหล่งที่มาบน GitHub.