Aspose.3D FOSS for Java 5 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हाँहाँकोई नहींफ्लैट
ग्लोबल 2.0.gltfहाँहाँPBRपूर्ण
GLB.glbहाँहाँPBRपूर्ण
FBX.fbxहाँनहींअमीरपूर्ण

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

ओबीजे: वॉवफ्रंट ऑब्जेक्ट

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 निर्देश), पुस्तकालय स्वचालित रूप से सामग्री परिभाषाओं को लोड करने का प्रयास करेगा. एमटीएल फ़ाइल ओबीजे फ़ील्ड के समान निर्देशिका में या दिशा में निर्दिष्ट मार्ग पर होनी चाहिए.

ओबीजे के रूप में बचत

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

ओबीजे का उपयोग मामलों में

  • विभिन्न 3D उपकरणों के बीच मस्च डेटा का आदान-प्रदान करें।.
  • ऑब्जेड फार्मेट में वितरित संपत्ति पुस्तकालयों से मॉडल आयात करना।.
  • जटिल दृश्य दार्शनिक के बिना भूमध्यसागरी की त्वरित निरीक्षण।.

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 रस्सियों को लिखता है; क्वाड और एन-गोन चेहरा चुपचाप ट्रिंकित होते हैं. ASCII STl सभी रॉकेट इंडेक्स प्रति चेहर लिखते हैं, गैर-ट्रिंगल चेहों के लिए खराब आउटपुट का उत्पादन करते हैं। हमेशा पूर्व-त्रिंघुल मेसेज (सभी-तीनू चेहन) का उपयोग करें जब एसटीएल में निर्यात किया जाता है.
  • बाइनरी STL बड़े मॉडलों के लिए ASCII STl की तुलना में काफी छोटा है।.
  • STL विकल्प का प्रारूप है जब लक्ष्य एक 3D प्रिंटर या स्लाइजर सॉफ्टवेयर है।.

GLTF: ग्लोबल ट्रांसमिशन प्रारूप

glTF एक आधुनिक प्रारूप है जो 3D सामग्री के प्रसारण और लोड को कुशलतापूर्वक करने के लिए डिज़ाइन किया गया है, विशेष रूप से वेब पर और वास्तविक समय अनुप्रयोगों में।.

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 उत्पादन में छोटे फ़ाइल आकार के लिए।.

GST का उपयोग करने के लिए मामले

  • वेब-आधारित 3 डी दर्शकों (three.js, Babylon.js).
  • वास्तविक समय के अनुप्रयोगों और गेमिंग इंजन।.
  • उपकरणों के माध्यम से PBR सामग्री परिभाषाओं को बनाए रखना।.

FBX: फिल्म बॉक्स (आयात केवल)

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 का उपयोग करें

  • 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 में प्रत्येक को परिवर्तित करता है, और परिणामों को बचाता है. आप किसी भी स्रोत और लक्ष्य प्रारूप संयोजन के लिए इस पैटर्न को अनुकूलित कर सकते हैं.

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

निम्न तालिका में दिखाया गया है कि प्रारूपों के बीच परिवर्तित करते समय क्या उम्मीद की जाती है।.

सेके लिएGeometry के बारे मेंसामग्रीHierarchy के बारे मेंनोट्स
OBJSTLसंरक्षितखोयाN/ASTL में कोई सामग्री समर्थन नहीं है
OBJग्लोबल / GLBसंरक्षितPBR में परिवर्तितफ्लैटMTL सामग्री जहां संभव हो मैप किया गया है
STLOBJसंरक्षितकोई नहींN/Aस्रोत में कोई सामग्री नहीं है
STLग्लोबल / GLBसंरक्षितडिफ़ॉल्टफ्लैटडिफ़ॉल्ट सामग्री लागू
ग्लोबलOBJसंरक्षितसरलताफ्लैटPBR के लिए आधार सामग्री
ग्लोबलSTLसंरक्षितखोयाफ्लैटकेवल भूमि
FBXOBJसंरक्षितसरलताफ्लैटसामग्री सरलता
FBXSTLसंरक्षितखोयाफ्लैटकेवल भूमि
FBXग्लोबल / GLBसंरक्षितPBR में परिवर्तितसंरक्षितअच्छी वफादारी

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

  • Geometry के बारे में आम तौर पर प्रारूप जोड़े के बीच संरक्षित किया जाता है, एक महत्वपूर्ण अपवाद के साथ: जब STL में निर्यात किया जा रहा है तो मेसेस को पूरी तरह से त्रिकोण चेहरे से बना होना चाहिए. बाइनरी ST L चुपचाप अपने पहले 3 रस्सी तक चौड़ा और n-gon चेहरा ट्रिंक करता है; ASCII STl गैर-ट्रिंग चेहरों के लिए खराब उत्पादन उत्पन्न करता हैं।.
  • सामग्री जीडीएफ और FBX-आयातित दृश्यों के बीच सबसे अच्छा जीवित रहें जिसमें सामग्री डेटा शामिल है. STL में परिवर्तित करना हमेशा सामग्री को ड्रॉप करता है। OBJ में परिवर्तन मूल MTL मॉडल में सामग्री सरल बनाता है.
  • दृश्यों की रीति-रिवाज जीटीएफ-आकार फ़ाइलों के बीच संरक्षित है. OBJ और STL फ्लैट संरचनाओं का उत्पादन करते हैं. FBX दार्शनिक और सामग्री निकालने इस संस्करण में पूरी तरह से सत्यापित नहीं हैं।.

इसे सब एक साथ रखें

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

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 आपको कई प्रारूपों के माध्यम से एक लगातार एपीआई प्रदान करता है. मुख्य बिंदु:

  • OBJ - सरल मशीन मूल सामग्री के साथ आदान-प्रदान।.
  • STL - केवल 3D प्रिंटिंग पाइपलाइनों के लिए भूमेट्री प्रारूप।.
  • ग्लोबल / GLB - आधुनिक पीबीआर-सक्षम प्रारूप वेब और वास्तविक समय उपयोग के लिए। GltfSaveOptions साथ में setContentType(FileContentType.BINARY) जीपीएस के लिए उत्पाद।.
  • FBX - केवल आयात; गेमिंग इंजन और डीसीसी उपकरणों से लोड संपत्ति के लिए समृद्ध प्रारूप।.

फ़ाइल-विशिष्ट लोड का उपयोग करें और विकल्प वर्गों को बचाएं (ObjLoadOptions, StlLoadOptions, StlSaveOptions, GltfLoadOptions, GltfSaveOptions, FbxLoadOptionsजब आपको आयात या निर्यात प्रक्रिया पर शुद्ध-ग्रेन नियंत्रण की आवश्यकता होती है।.

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