Aspose.3D FOSS for Java पाँच 3D फ़ाइल फ़ॉर्मेट्स का समर्थन करता है: OBJ, STL, glTF, GLB, और FBX (केवल आयात)।.

सभी उदाहरण उपयोग करते हैं com.aspose.threed.* पैकेज:

import com.aspose.threed.*;

Maven निर्भरता:

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

फ़ॉर्मेट परिदृश्य

डुबकी लगाने से पहले, यहाँ चार समर्थित फ़ॉर्मैट्स और उनके सामान्य उपयोग मामलों का एक त्वरित अवलोकन दिया गया है।.

फ़ॉर्मेटएक्सटेंशनआयातनिर्यातसामग्री समर्थनदृश्य पदानुक्रम
OBJ.objहाँहाँबुनियादी (MTL फ़ाइलें)सपाट
STL.stlहाँहाँकोई नहींसमतल
glTF 2.0.gltfहाँहाँPBRपूर्ण
GLB.glbहाँहाँPBRपूर्ण
FBX.fbxहाँनहींधनीपूर्ण

OBJ, STL, glTF, और GLB दोनों आयात और निर्यात का समर्थन करते हैं। FBX के लिए समर्थित है केवल आयात. GLB (binary glTF) के द्वारा उत्पन्न किया जाता है GltfSaveOptions के साथ setContentType(FileContentType.BINARY).

OBJ: वेवफ़्रंट ऑब्जेक्ट

OBJ सबसे अधिक व्यापक रूप से समर्थित 3D मेष फ़ॉर्मैट्स में से एक है। यह ज्यामिति को सादे पाठ के रूप में संग्रहीत करता है, एक वैकल्पिक के साथ .mtl सामग्रियों के लिए सहायक फ़ाइल।.

OBJ फ़ाइलें लोड करना

सबसे सरल तरीका है फ़ाइल पथ को सीधे पास करना:

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

अधिक नियंत्रण के लिए, उपयोग करें ObjLoadOptions:

ObjLoadOptions opts = new ObjLoadOptions();
Scene scene = Scene.fromFile("model.obj", opts);

जब OBJ फ़ाइल MTL फ़ाइल को संदर्भित करती है (के माध्यम से एक 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 बड़े मॉडलों के लिए ASCII STL की तुलना में काफी छोटा होता है।.
  • जब लक्ष्य 3D प्रिंटर या स्लाइसर सॉफ़्टवेयर हो, तो STL पसंदीदा फ़ॉर्मेट है।.

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)निर्यात के दौरान निर्देशांक प्रणाली की धुरी को उलटें। Y‑up से Z‑up या इसके विपरीत रूपांतरण के समय उपयोगी।.
setPrettyPrint(boolean)पढ़ने में आसान बनाने के लिए आउटपुट JSON को इंडेंटेशन के साथ फ़ॉर्मेट करें। इसे सेट करें false उत्पादन में छोटे फ़ाइल आकार के लिए।.

glTF उपयोग मामलों

  • वेब-आधारित 3D व्यूअर्स (three.js, Babylon.js).
  • रियल-टाइम एप्लिकेशन और गेम इंजन।.
  • टूल्स के बीच PBR सामग्री परिभाषाओं को संरक्षित करना।.

FBX: Filmbox (केवल आयात)

FBX Autodesk द्वारा एक स्वामित्व वाला फ़ॉर्मेट है जो गेम विकास और डिजिटल कंटेंट निर्माण में व्यापक रूप से उपयोग होता है। यह समृद्ध सीन पदानुक्रम, सामग्री, और एनीमेशन का समर्थन करता है। Aspose.3D FOSS for Java FBX को समर्थन देता है केवल import – FBX में निर्यात उपलब्ध नहीं है।.

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 उपयोग मामलों

  • Autodesk टूल्स (Maya, 3ds Max) से एसेट्स आयात करना और उन्हें अन्य फ़ॉर्मेट्स में परिवर्तित करना।.
  • री-एक्सपोर्ट के लिए rigged characters और animated scenes को glTF/GLB में लोड किया जा रहा है।.

बैच रूपांतरण

एक सामान्य कार्यप्रवाह एक फ़ाइलों की पूरी डायरेक्टरी को एक फ़ॉर्मेट से दूसरे फ़ॉर्मेट में बदलना है। यहाँ बैच रूपांतरण के लिए एक पैटर्न दिया गया है:

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 में सुंदर-प्रिंटेड आउटपुट के साथ परिवर्तित करता है, और परिणाम सहेजता है। आप इस पैटर्न को किसी भी स्रोत और लक्ष्य फ़ॉर्मेट संयोजन के लिए अनुकूलित कर सकते हैं।.

क्रॉस-फ़ॉर्मेट रूपांतरण संदर्भ

निम्न तालिका दिखाती है कि फ़ॉर्मेट्स के बीच रूपांतरण करते समय क्या अपेक्षित है।.

सेतकGeometryMaterialsक्रमबद्धतानोट्स
OBJSTLसंरक्षितखोयाN/ASTL में कोई सामग्री समर्थन नहीं है
OBJglTF/GLBसंरक्षितPBR में परिवर्तितसमतलजहाँ संभव हो, MTL सामग्री को मैप किया गया
STLOBJसंरक्षितकोई नहींN/Aस्रोत में कोई सामग्री नहीं
STLglTF/GLBसंरक्षितडिफ़ॉल्टसमतलडिफ़ॉल्ट सामग्री लागू की गई
glTFOBJसंरक्षितसरलीकृतसमतल किया गयाPBR को बुनियादी सामग्री में
glTFSTLसंरक्षितखो गयासमतल किया गयाकेवल ज्यामिति
FBXOBJसंरक्षितसरलीकृतसमतल किया गयासामग्री सरलीकरण
FBXSTLसंरक्षितखोयासमतल किया गयाकेवल ज्यामिति
FBXglTF/GLBसंरक्षितPBR में परिवर्तितसंरक्षितअच्छी सटीकता

सामान्य रूपांतरण दिशानिर्देश

  • ज्यामिति सभी फ़ॉर्मेट जोड़ों में हमेशा संरक्षित रहता है।.
  • सामग्री glTF और FBX के बीच सबसे अच्छा कौन है, जो दोनों समृद्ध सामग्री मॉडल का समर्थन करते हैं। STL में बदलने से हमेशा सामग्री हट जाती है। OBJ में बदलने से सामग्री को बुनियादी MTL मॉडल में सरल बना दिया जाता है।.
  • सीन पदानुक्रम glTF और FBX के बीच संरक्षित रहता है। OBJ और STL सपाट संरचनाएँ उत्पन्न करते हैं।.

सभी को एक साथ जोड़ना

यहाँ एक पूर्ण उदाहरण है जो OBJ फ़ाइल को लोड करता है, उसके nodes की जाँच करता है, और 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-सक्षम स्वरूप। Use GltfSaveOptions के साथ setContentType(FileContentType.BINARY) GLB आउटपुट के लिए।.
  • FBX — केवल आयात; गेम इंजन और DCC टूल्स से एसेट लोड करने के लिए समृद्ध फ़ॉर्मेट।.

फ़ॉर्मेट-विशिष्ट लोड और सेव विकल्प क्लासेज़ का उपयोग करें (ObjLoadOptions, StlLoadOptions, StlSaveOptions, GltfLoadOptions, GltfSaveOptions, FbxLoadOptions) जब आपको आयात या निर्यात प्रक्रिया पर सूक्ष्म नियंत्रण चाहिए।.

अधिक विवरण के लिए, देखें Aspose.3D दस्तावेज़ीकरण या स्रोत को देखें GitHub.