วิธีโหลดโมเดล 3 มิติใน Java

วิธีโหลดโมเดล 3 มิติใน Java

aspose-3d-foss สำหรับ Java มี API ที่ใช้งานง่ายสำหรับการเปิดไฟล์ 3D หลังจากโหลดไฟล์เข้าสู่ Scene อ็อบเจ็กต์ คุณสามารถเดินทางผ่านลำดับชั้นของโหนดและอ่านข้อมูลเรขาคณิตได้.

คู่มือแบบขั้นตอนต่อขั้นตอน

ขั้นตอนที่ 1: ติดตั้งแพ็กเกจ

เพิ่มการพึ่งพา Maven:

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

ขั้นตอนที่ 2: นำเข้าคลาส Scene

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

ขั้นตอนที่ 3: โหลดไฟล์

Scene scene = new Scene();
scene.open("model.obj");

หรือใช้ฟังก์ชัน factory แบบสถิต:

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

รูปแบบที่รองรับ: OBJ, STL, glTF 2.0 / GLB, FBX (เฉพาะไบนารี — ASCII FBX ไม่รองรับและจะทำให้เกิด ImportException).


ขั้นตอนที่ 4: เดินทางผ่านโหนดของ Scene

void walk(Node node, int depth) {
    String indent = " ".repeat(depth * 2);
    System.out.println(indent + "Node: " + node.getName());
    for (Node child : node.getChildNodes()) {
        walk(child, depth + 1);
    }
}

walk(scene.getRootNode(), 0);

ขั้นตอนที่ 5: เข้าถึงข้อมูล Mesh

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

ปัญหาทั่วไปและวิธีแก้

ข้อยกเว้นขณะโหลด

ตรวจสอบว่าไฟล์ไม่เสียหายและรูปแบบที่ใช้ได้รับการสนับสนุน (OBJ, STL, glTF, FBX).

NullPointerException ขณะเข้าถึง entity

ไม่ใช่ทุกโหนดจะมีเรขาคณิต ตรวจสอบเสมอ node.getEntity() instanceof Mesh ก่อนทำการแคสท์.

ระบบพิกัดไม่ตรงกัน

ใช้ ObjLoadOptions.setFlipCoordinateSystem(true) หรือใช้การหมุนหลังจากโหลด.


คำถามที่พบบ่อย (FAQ)

ฉันสามารถโหลดรูปแบบใดได้บ้าง?

OBJ, STL (ไบนารีและ ASCII), glTF 2.0 / GLB, และ FBX สำหรับ FBX มีเพียง FBX ไบนารี ที่รองรับ ไฟล์ ASCII FBX จะทำให้เกิด ImportException("ASCII FBX format not yet supported - only binary FBX is supported").

ฉันสามารถโหลดจาก InputStream ได้หรือไม่?

ใช่. scene.open() รับค่าเป็น InputStream.

ไลบรารีนี้ปลอดภัยต่อการทำงานหลายเธรดหรือไม่?

แต่ละ Scene อินสแตนซ์เป็นอิสระ การโหลดไฟล์แยกต่างหากเข้าสู่อินสแตนซ์แยกต่างหากจากเธรดแยกต่างหากนั้นปลอดภัย.

 ภาษาไทย