हमें यह घोषणा करते हुए उत्साहित हैं कि उपलब्धता है Aspose.3D FOSS के लिए Java – एक मुफ्त, ओपन-सोर्स लाइब्रेरी जो Java अनुप्रयोगों में 3D फ़ाइल फ़ॉर्मेट्स के साथ काम करने के लिए है। इसे एक शुद्ध Java समाधान के रूप में बनाया गया है, जिसमें कोई नेटिव निर्भरताएँ नहीं हैं, लाइब्रेरी Java 21 और बाद के संस्करणों पर चलती है, जिससे यह विभिन्न प्रोजेक्ट्स और पर्यावरणों के लिए सुलभ बनती है।.
यह पोस्ट लाइब्रेरी की पेशकशों, शुरुआत करने के तरीके, और आगे की दिशा को समझाती है।.
क्या है Aspose.3D FOSS for Java?
Aspose.3D FOSS Java के लिए एक हल्की 3D फ़ाइल प्रोसेसिंग लाइब्रेरी है, जो के तहत प्रकाशित MIT license. यह एक सीन-ग्राफ API प्रदान करता है जो आपको कई व्यापक रूप से उपयोग किए जाने वाले फ़ॉर्मेट्स में 3D मॉडल लोड, निरीक्षण, रूपांतरण और सहेजने की अनुमति देता है। लाइब्रेरी पूरी तरह से Java में लिखी गई है और इसे कोई बाहरी नेटिव बाइनरी या प्लेटफ़ॉर्म-विशिष्ट कॉन्फ़िगरेशन की आवश्यकता नहीं है।.
स्रोत कोड GitHub पर उपलब्ध है: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java
मुख्य विशेषताएँ
- शुद्ध Java – कोई JNI नहीं, कोई मूल लाइब्रेरी नहीं, कोई प्लेटफ़ॉर्म प्रतिबंध नहीं।.
- Java 21+ संगत।.
- MIT लाइसेंस प्राप्त – इसे व्यक्तिगत, व्यावसायिक, या स्वामित्व वाले प्रोजेक्ट्स में बिना किसी प्रतिबंध के उपयोग करें।.
- सीन-ग्राफ आर्किटेक्चर – नोड्स, मेषेज़, कैमरों और सामग्रियों का परिचित वृक्ष।.
- मल्टी-फ़ॉर्मेट समर्थन – OBJ, STL, glTF 2.0, और GLB फ़ाइलें पढ़ें और लिखें; FBX फ़ाइलें पढ़ें।.
त्वरित प्रारंभ
Maven स्थापना
अपनी निम्नलिखित निर्भरता जोड़ें pom.xml:
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-3d-foss</artifactId>
<version>26.1.0</version>
</dependency>
आपका पहला रूपांतरण
सबसे सरल उपयोग मामला एक फ़ॉर्मेट में 3D फ़ाइल को लोड करना और उसे दूसरे फ़ॉर्मेट में सहेजना है। यहाँ OBJ से STL में दो पंक्तियों का रूपांतरण दिया गया है:
import com.aspose.threed.*;
public class QuickConvert {
public static void main(String[] args) throws Exception {
Scene scene = Scene.fromFile("cube.obj");
scene.save("output.stl");
}
}
यह Scene class केंद्रीय प्रवेश बिंदु है। कॉल Scene.fromFile() file path के साथ मॉडल लोड करने के लिए, फिर कॉल save() target path के साथ। लाइब्रेरी फ़ाइल एक्सटेंशन से फ़ॉर्मेट का अनुमान लगाती है।.
शुरुआत से एक सीन बनाना
आप प्रोग्रामेटिक रूप से भी सीन बना सकते हैं:
import com.aspose.threed.*;
public class BuildScene {
public static void main(String[] args) throws Exception {
Scene scene = new Scene();
Node node = scene.getRootNode().createChildNode("Box");
Transform t = node.getTransform();
t.setTranslation(1, 2, 3);
scene.save("scene.gltf");
}
}
यह एक नया सीन बनाता है, रूट के तहत “Box” नामक एक चाइल्ड नोड जोड़ता है, इसे निर्देशांक (1, 2, 3) पर स्थित करता है, और परिणाम को glTF फ़ाइल के रूप में निर्यात करता है।.
फ़ॉर्मेट-विशिष्ट विकल्पों के साथ लोडिंग
जब आपको लोडिंग प्रक्रिया पर अधिक सूक्ष्म नियंत्रण चाहिए, तो प्रत्येक फ़ॉर्मेट एक समर्पित विकल्प क्लास प्रदान करता है। उदाहरण के लिए, स्पष्ट विकल्पों के साथ एक STL फ़ाइल लोड करना:
import com.aspose.threed.*;
public class LoadWithOptions {
public static void main(String[] args) throws Exception {
StlLoadOptions opts = new StlLoadOptions();
Scene scene = Scene.fromFile("part.stl", opts);
// Inspect the loaded scene
System.out.println("Root children: "
+ scene.getRootNode().getChildNodes().size());
// Re-export as OBJ
scene.save("part.obj");
}
}
यह Scene.fromFile() static method लोड विकल्प प्रकारों में से किसी भी को स्वीकार करता है: ObjLoadOptions, StlLoadOptions, GltfLoadOptions, या FbxLoadOptions.
सीन ग्राफ़ का अन्वेषण
एक बार सीन लोड हो जाने के बाद, आप नोड ट्री को पार करके उसकी सामग्री की जाँच या संशोधन कर सकते हैं:
import com.aspose.threed.*;
public class TraverseScene {
public static void main(String[] args) throws Exception {
Scene scene = Scene.fromFile("model.gltf");
for (Node child : scene.getRootNode().getChildNodes()) {
System.out.println("Node: " + child.getName());
Transform t = child.getTransform();
System.out.println(" Translation: " + t.getTranslation());
Entity entity = child.getEntity();
if (entity instanceof Mesh) {
Mesh mesh = (Mesh) entity;
System.out.println(" Vertices: "
+ mesh.getControlPoints().size());
}
}
}
}
यह पैटर्न डिबगिंग, मॉडल सामग्री के बारे में रिपोर्ट बनाने, या पुनः निर्यात करने से पहले सीन के भागों को चयनात्मक रूप से संशोधित करने के लिए उपयोगी है।.
ट्रांसफ़ॉर्म लागू करना
3D स्पेस में नोड्स को स्थित करना … के माध्यम से Transform object प्रत्येक पर Node:
import com.aspose.threed.*;
public class TransformExample {
public static void main(String[] args) throws Exception {
Scene scene = new Scene();
Node parent = scene.getRootNode().createChildNode("Parent");
parent.getTransform().setTranslation(10, 0, 0);
Node child = parent.createChildNode("Child");
child.getTransform().setTranslation(5, 0, 0);
child.getTransform().setScale(2, 2, 2);
// Child's world position is (15, 0, 0) due to
// parent-child transform inheritance
scene.save("transformed.gltf");
}
}
ट्रांसफ़ॉर्म्स मानक पैरेंट-चाइल्ड इनहेरिटेंस मॉडल का पालन करते हैं: किसी बच्चे की वर्ल्ड-स्पेस स्थिति उसके स्थानीय ट्रांसफ़ॉर्म और मूल तक के सभी पूर्वज ट्रांसफ़ॉर्म्स के संयोजन से बनती है।.
क्या शामिल है
यह लाइब्रेरी 3D सीन-ग्राफ मॉडल के आसपास डिज़ाइन की गई एक केंद्रित क्षमताओं के सेट के साथ आती है।.
सीन ग्राफ
सीन ग्राफ API की रीढ़ है। प्रत्येक 3D फ़ाइल को एक ट्री संरचना के रूप में दर्शाया जाता है:
| क्लास | भूमिका |
|---|---|
Scene | शीर्ष-स्तरीय कंटेनर; सीन ग्राफ का मूल |
Node | वृक्ष में एक नामित स्थिति; ट्रांसफ़ॉर्म और चाइल्ड नोड्स को रखता है |
Entity | नोड्स से जुड़ी दृश्य वस्तुओं के लिए सारभूत आधार |
Mesh | बहुभुज ज्यामिति – शीर्ष बिंदु, सतहें, सामान्य |
Camera | वर्चुअल कैमरा परिभाषा |
Transform | एक नोड के लिए स्थानीय अनुवाद, घूर्णन, और स्केल |
GlobalTransform | गणना किया गया विश्व-स्थान ट्रांसफ़ॉर्म |
मैटेरियल्स
यह लाइब्रेरी एक PBR (फ़िज़िकली बेस्ड रेंडरिंग) मैटेरियल मॉडल प्रदान करती है:
- PbrMaterial – भौतिक रूप से आधारित रेंडरिंग सामग्री जिसमें अल्बेडो, मेटलनेस, रफ़नेस, उत्सर्जित रंग, और पारदर्शिता शामिल हैं। यह Java संस्करण में उपलब्ध एकमात्र ठोस सामग्री वर्ग है।.
गणित उपयोगिताएँ
यह com.aspose.threed पैकेज में आवश्यक गणितीय प्रिमिटिव्स शामिल हैं:
- Vector3 – स्थितियों, दिशाओं और रंगों के लिए 3-घटक वेक्टर।.
- Matrix4 – 4x4 रूपांतरण मैट्रिक्स।.
- Quaternion – घूर्णन प्रतिनिधित्व।.
- BoundingBox – स्थानिक क्वेरीज़ के लिए अक्ष-संरेखित बाउंडिंग बॉक्स।.
Vector3 a = new Vector3(1, 0, 0);
Vector3 b = new Vector3(0, 1, 0);
Vector3 c = Vector3.add(a, b); // (1, 1, 0)
लोड और सहेज विकल्प
प्रत्येक फ़ॉर्मेट में समर्पित विकल्प क्लासेज़ होते हैं जो आपको आयात और निर्यात व्यवहार को नियंत्रित करने की अनुमति देते हैं:
| Format | विकल्प लोड करें | विकल्प सहेजें |
|---|---|---|
| OBJ | ObjLoadOptions | ObjSaveOptions |
| STL | StlLoadOptions | StlSaveOptions |
| glTF / GLB | GltfLoadOptions | GltfSaveOptions |
| FBX | FbxLoadOptions | – (केवल आयात) |
उदाहरण के लिए, pretty-printed JSON और उलटे कोऑर्डिनेट सिस्टम के साथ glTF निर्यात करने के लिए:
GltfSaveOptions opts = new GltfSaveOptions();
opts.setFlipCoordinateSystem(true);
opts.setPrettyPrint(true);
scene.save("output.gltf", opts);
समर्थित फ़ॉर्मेट्स
निम्न तालिका उन फ़ॉर्मेट्स का सारांश देती है जिन्हें Aspose.3D FOSS for Java पढ़ और लिख सकता है।.
| फ़ॉर्मेट | एक्सटेंशन | आयात | निर्यात | नोट्स |
|---|---|---|---|---|
| OBJ | .obj | हाँ | हाँ | MTL सामग्री के साथ |
| STL | .stl | हाँ | हाँ | बाइनरी + ASCII |
| glTF 2.0 | .gltf | हाँ | हाँ | JSON फ़ॉर्मेट |
| GLB | .glb | हाँ | हाँ | Binary glTF के माध्यम से GltfSaveOptions |
| FBX | .fbx | हाँ | नहीं | केवल आयात |
OBJ, STL, glTF, और GLB दोनों लोडिंग और सेविंग को समर्थन देते हैं। FBX केवल आयात के लिए समर्थित है।.
फ़ॉर्मेट चयन गाइड
सही फ़ॉर्मेट चुनना आपके उपयोग केस पर निर्भर करता है:
- OBJ जब आपको 3D टूल्स के बीच अधिकतम संगतता चाहिए तो यह आदर्श है। लगभग हर मॉडलिंग एप्लिकेशन OBJ को पढ़ और लिख सकता है। यह मेष डेटा एक्सचेंज के लिए अच्छा काम करता है लेकिन केवल बुनियादी सामग्री जानकारी को साथ की MTL फ़ाइलों के माध्यम से ले जाता है।.
- STL 3D प्रिंटिंग वर्कफ़्लो के लिए यह पसंदीदा फ़ॉर्मेट है। यह कच्ची त्रिकोणीय ज्यामिति को बिना सामग्री या सीन हाइरार्की के संग्रहीत करता है, जो बिल्कुल वही है जो स्लाइसर सॉफ़्टवेयर अपेक्षा करता है। यदि आपका पाइपलाइन 3D प्रिंटर पर समाप्त होता है, तो STL सीधा विकल्प है।.
- glTF वेब और रीयल-टाइम 3D के लिए आधुनिक मानक है। यह PBR सामग्री, पूर्ण सीन पदानुक्रमों का समर्थन करता है, और कुशल ट्रांसमिशन के लिए डिज़ाइन किया गया है। वेब-आधारित व्यूअर्स बनाते समय, three.js या Babylon.js के साथ काम करते समय, या किसी भी रीयल-टाइम रेंडरिंग पाइपलाइन को लक्षित करते समय glTF का उपयोग करें।.
- FBX गेम विकास और डिजिटल कंटेंट निर्माण वर्कफ़्लो में गहराई से एकीकृत है। यह पदानुक्रमों और सामग्रियों सहित समृद्ध सीन डेटा का समर्थन करता है। Aspose.3D FOSS for Java FBX को समर्थन देता है। केवल आयात – इसका उपयोग FBX एसेट्स को लोड करने और उन्हें अन्य फ़ॉर्मैट्स में परिवर्तित करने के लिए करें।.
ज्ञात सीमाएँ
ध्यान देना महत्वपूर्ण है कि Scene.render() है समर्थित नहीं है FOSS संस्करण में। इस मेथड को कॉल करने पर एक अपवाद फेंका जाएगा UnsupportedOperationException. लाइब्रेरी फ़ाइल-आधारित 3D प्रोसेसिंग के लिए डिज़ाइन की गई है — लोडिंग, मैनिपुलेशन, ट्रांसफ़ॉर्मिंग, और मॉडल को सहेजना — न कि डिस्प्ले पर रीयल‑टाइम रेंडरिंग के लिए।.
ओपन सोर्स और लाइसेंसिंग
Aspose.3D FOSS for Java को इस के तहत जारी किया गया है MIT License. इसका अर्थ है कि आप स्वतंत्र हैं:
- व्यावसायिक और स्वामित्व वाले अनुप्रयोगों में लाइब्रेरी का उपयोग करें।.
- अपनी आवश्यकताओं के अनुसार स्रोत कोड को संशोधित करें।.
- लाइब्रेरी को अपने स्वयं के सॉफ़्टवेयर का हिस्सा बनाकर वितरित करें।.
MIT लाइसेंस में निर्दिष्ट शर्तों के अलावा कोई रॉयल्टी शुल्क, उपयोग सीमा, या एट्रिब्यूशन आवश्यकताएँ नहीं हैं।.
पूरा स्रोत कोड GitHub पर होस्ट किया गया है, और योगदान का स्वागत है: https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-Java
सिस्टम आवश्यकताएँ
| आवश्यकता | विवरण |
|---|---|
| Java संस्करण | 21 or later |
| निर्भरताएँ | कोई नहीं (शुद्ध Java) |
| प्लेटफ़ॉर्म | कोई भी प्लेटफ़ॉर्म जो JVM चलाता है |
| बिल्ड टूल | Maven (सिफ़ारिश किया गया) |
शुरू करना
यहाँ वे संसाधन हैं जो आपको शुरू करने में मदद करेंगे:
- दस्तावेज़ीकरण – व्यापक गाइड और API वॉकथ्रू इस पर उपलब्ध हैं Aspose.3D डॉक्यूमेंटेशन साइट.
- नॉलेज बेस – व्यावहारिक कैसे‑करें लेख और समस्या निवारण टिप्स इस में Aspose.3D KB.
- API रेफ़रेंस – विस्तृत क्लास और मेथड रेफ़रेंस यहाँ Aspose.3D API रेफ़रेंस.
- स्रोत कोड – ब्राउज़ करें और योगदान दें GitHub.
- Maven Central – पैकेज इस रूप में प्रकाशित किया गया है
com.aspose:aspose-3d-fossMaven Central पर।.
Common Use Cases
Here are some practical scenarios where Aspose.3D FOSS for Java fits well:
Format Conversion Pipelines
Many teams receive 3D assets in one format but need them in another. A design team might work in FBX while the web team needs glTF. The library lets you build automated conversion pipelines:
// Convert all incoming FBX assets to GLB for the web team
Scene scene = Scene.fromFile("asset.fbx");
GltfSaveOptions opts = new GltfSaveOptions();
opts.setContentType(FileContentType.BINARY);
scene.save("asset.glb", opts);
3D Model Inspection and Validation
अपने एप्लिकेशन में 3D एसेट को इंटीग्रेट करने से पहले, आप इसकी सामग्री को वैलिडेट करना चाह सकते हैं — नोड काउंट की जाँच, जियोमेट्री की पुष्टि, या यह सुनिश्चित करना कि अपेक्षित तत्व मौजूद हैं:
Scene scene = Scene.fromFile("model.obj");
int nodeCount = scene.getRootNode().getChildNodes().size();
System.out.println("Top-level nodes: " + nodeCount);
for (Node child : scene.getRootNode().getChildNodes()) {
if (child.getEntity() instanceof Mesh) {
Mesh mesh = (Mesh) child.getEntity();
System.out.println(child.getName() + ": "
+ mesh.getControlPoints().size() + " vertices");
}
}
सीन असेंबली
आप कई मॉडल लोड कर सकते हैं और उन्हें एक सिंगल सीन में संयोजित कर सकते हैं:
Scene scene = new Scene();
Scene part1 = Scene.fromFile("chassis.obj");
Scene part2 = Scene.fromFile("wheels.obj");
// Add nodes from each part into the combined scene
for (Node child : part1.getRootNode().getChildNodes()) {
scene.getRootNode().getChildNodes().add(child);
}
for (Node child : part2.getRootNode().getChildNodes()) {
scene.getRootNode().getChildNodes().add(child);
}
scene.save("assembled.gltf");
आगे क्या है
आगामी पोस्टों में, हम कवर करेंगे:
- सीन-ग्राफ API, मैटीरियल्स, और गणितीय यूटिलिटीज़ की मुख्य विशेषताओं में गहरी डुबकी।.
- प्रत्येक समर्थित 3D फ़ॉर्मेट — OBJ, STL, glTF, और FBX — के साथ काम करने के लिए एक व्यावहारिक गाइड, जिसमें लोड/सेव विकल्प और बैच कन्वर्ज़न पैटर्न शामिल हैं।.
जुड़े रहें, और लाइब्रेरी को एक्सप्लोर करने व GitHub पर अपना फीडबैक साझा करने में संकोच न करें।.