Java में 3D मॉडल कैसे लोड करें
aspose-3d-foss Java के लिए 3D फ़ाइलें खोलने के लिए एक सरल API प्रदान करता है। फ़ाइल को लोड करने के बाद एक 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");या स्थैतिक फ़ैक्ट्री का उपयोग करें:
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: मेष डेटा तक पहुँचें
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
हर नोड में ज्यामिति नहीं होती। हमेशा जांचें 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 इंस्टेंस स्वतंत्र है। अलग-अलग थ्रेड्स से अलग-अलग इंस्टेंस में अलग-अलग फ़ाइलें लोड करना सुरक्षित है।.