परिचय

जावा में 3 डी सामग्री के साथ काम करने के लिए आमतौर पर भारी वजन के बीच चुनने की आवश्यकता होती है खेल इंजन और बार-बोन गणित पुस्तकालयों. aspose-3d-foss पैकेज की पेशकश A मध्य भूमि: एक केंद्रित दृश्य-ग्राफ एपीआई जो फ़ाइल I/O, नोड दार्शनिक को संभालता है, मशीन निर्माण, और एक रेंडर में खींचने के बिना परिवर्तित को निर्देशित करें एक पाइपलाइन या एक मूल निर्भरता श्रृंखला।.

Aspose.3D FOSS for Java एक खुले स्रोत लाइब्रेरी है जो MIT लाइसेंस के तहत वितरित की जाती है. यह 80 वर्गों में स्पेन प्रबंधन, भूमेट्री, सामग्री और प्रारूप रूपांतरण प्रदान करता है। लाइव्रेजी FBX, glTF/GLB, Wavefront OBJ, और STL पढ़ती है, साथ ही GlTf/ GLB और OBG (FBX निर्यात लागू नहीं होता है) लिखती हैं, इसे सर्वर-साइड 3D प्रोसेसिंग, निर्माण-टूल इंटेलिजेंस और डेटा-कनवर्किंग पाइपलाइनों के लिए व्यावहारिक बनाता है जिन्हें जावा 21 या बाद में चलाया जाता है ।.

यह पोस्ट पुस्तकालय में दृश्य-प्रबंधन क्षमताओं के माध्यम से चलता है: कैसे एक दृष्टिकोण को स्क्रैच से बनाया जाए, इसे भूमेट्री और परिवर्तनों के साथ लोकप्रिय किया जाए और परिणाम डिस्क पर निर्यात किया जाएगा।.


क्या शामिल है

दृश्य ग्राफिक्स आधार

के लिए Scene क्लास हर 3D दस्तावेज़ के लिए रूट कंटेनर है. यह एक रोट रखता है Node, संपत्ति मेटाडेटा, एनीमेशन क्लिप और उप-स्केन. आप एक खाली बना सकते हैं दृश्य और फिर इसे लोकप्रिय करें, या एक मौजूदा फ़ाइल को लोड करें Scene.fromFile.

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

Scene scene = new Scene();
Node root = scene.getRootNode();

// Add named child nodes to build a hierarchy
Node chassis = root.createChildNode("Chassis");
Node wheel = chassis.createChildNode("FrontLeftWheel");

हर Node एक रख सकते हैं Entity (जैसा कि एक Mesh या Camera) A Transform, सामग्री की एक सूची, और अन्य बच्चे के नोड्स. पेड़ संरचना दर्पण दृश्य-ग्राफ पैटर्न का उपयोग अधिकांश 3D लेखन उपकरणों द्वारा किया जाता है।.

मशीन निर्माण

के लिए Mesh क्लास आपको नियंत्रण बिंदुओं और बहुगंति से भूमध्यसा को परिभाषित करने की अनुमति देता है आंकड़े. आप के साथ संदर्भों को जोड़ते हैं addControlPoint,फिर उन्हें चेहरे में जोड़ें। साथ में createPolygon.

import com.aspose.threed.Mesh;

Mesh box = new Mesh("Box");

// Define eight corners of a cube
box.addControlPoint(0, 0, 0);
box.addControlPoint(1, 0, 0);
box.addControlPoint(1, 1, 0);
box.addControlPoint(0, 1, 0);
box.addControlPoint(0, 0, 1);
box.addControlPoint(1, 0, 1);
box.addControlPoint(1, 1, 1);
box.addControlPoint(0, 1, 1);

// Create quad faces
box.createPolygon(0, 1, 2, 3); // back
box.createPolygon(4, 5, 6, 7); // front
box.createPolygon(0, 4, 7, 3); // left
box.createPolygon(1, 5, 6, 2); // right
box.createPolygon(3, 2, 6, 7); // top
box.createPolygon(0, 1, 5, 4); // bottom

scene.getRootNode().createChildNode("Box", box);

आग की लहरों में शामिल हैं triangulate(), optimize(removeVertices),और बोलेन ऑपरेशन (union, difference, intersectलेकिन इन तरीकों में भी अस्तित्व है। वर्तमान रिलीज - वे बिना प्रदर्शन के इनपुट मेश का एक क्लोन वापस करते हैं नामित ऑपरेशन।.

परिवर्तन और स्थिति

हर एक Node ले जाने के लिए A Transform जो अपने स्थानीय अनुवाद, घूर्णन को नियंत्रित करता है, ये इराक के माध्यम से बनाते हैं ताकि एक माता-पिता को स्थानांतरित किया जा सके। अपने सभी बच्चों को आगे बढ़ाते हैं।.

import com.aspose.threed.Transform;
import com.aspose.threed.Node;

Node node = scene.getRootNode().createChildNode("Shifted");
Transform t = node.getTransform();
t.setTranslation(5.0, 0.0, -3.0);
t.setScale(2.0, 2.0, 2.0);
t.setEulerAngles(0, 45.0, 0);

पूर्ण स्थिति के लिए प्रश्न, कॉल करें node.getGlobalTransform() रिटर्न करने के लिए बनाया गया है GlobalTransform,या node.evaluateGlobalTransform(true) प्राप्त करने के लिए एक Matrix4 इसमें भूमध्यसागरीय आउटपुट भी शामिल हैं।.

पीबीआर सामग्री

के लिए PbrMaterial क्लास भौतिक आधार पर रेंडर गुण प्रदान करता है: albedo रंग, धातु कारक, क्रूरता, उत्सर्जन रंग और पारदर्शिता।. बच्चे को बनाने के दौरान एक नोड में सामग्री निर्धारित करें।.

import com.aspose.threed.PbrMaterial;
import com.aspose.threed.Vector4;
import com.aspose.threed.Vector3;

PbrMaterial mat = new PbrMaterial("RedMetal");
mat.setAlbedo(new Vector4(0.9, 0.1, 0.1, 1.0));
mat.setMetallicFactor(0.8);
mat.setRoughnessFactor(0.3);
mat.setEmissiveColor(new Vector3(0, 0, 0));

scene.getRootNode().createChildNode("Part", box, mat);

प्रारूप का पता लगाने के लिए

के लिए FileFormat क्लास स्थैतिक खोज और पहचान उपकरण प्रदान करता है. आप कर सकते हैं फ़ाइल विस्तार के माध्यम से एक प्रारूप को हल करें या अज्ञात फ़ील्डों की पहचान करने के लिए एक प्रवाह का पता लगाएं।.

import com.aspose.threed.FileFormat;

FileFormat fmt = FileFormat.getFormatByExtension("model.glb");
boolean canRead  = fmt.getCanImport();
boolean canWrite = fmt.getCanExport();

सिस्टम संतुलन प्रणाली

AxisSystem आप ऊपर-एक्स, सामने-आक्स और हाथी की परिभाषाओं को निर्धारित कर सकते हैं। एक कोर सेट करें, फिर एक Matrix4 भूमि के बीच परिवर्तन अनुबंध (उदाहरण के लिए, एक Z-up दाहिनी हाथ से सिस्टम से लेकर एक Y-Up तक) बाएं हाथ में एक).

import com.aspose.threed.AxisSystem;
import com.aspose.threed.Axis;
import com.aspose.threed.CoordinateSystem;
import com.aspose.threed.Matrix4;

AxisSystem source = new AxisSystem(
    CoordinateSystem.RIGHT_HANDED, Axis.Z_AXIS, Axis.Y_AXIS);
AxisSystem target = new AxisSystem(
    CoordinateSystem.LEFT_HANDED, Axis.Y_AXIS, Axis.Z_AXIS);
Matrix4 conversion = source.transformTo(target);

जल्दी शुरू करें

मेनू निर्भरता के लिए जोड़ें:

<dependency>
  <groupId>org.aspose</groupId>
  <artifactId>aspose-3d-foss</artifactId>
  <version>26.5.0</version>
</dependency>

एक सरल दृश्य बनाएं और इसे निर्यात करें:

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

Scene scene = new Scene();
Mesh mesh = new Mesh("Triangle");
mesh.addControlPoint(0, 0, 0);
mesh.addControlPoint(1, 0, 0);
mesh.addControlPoint(0, 1, 0);
mesh.createPolygon(0, 1, 2);

scene.getRootNode().createChildNode("Shape", mesh);

StlSaveOptions opts = new StlSaveOptions();
opts.setContentType(FileContentType.BINARY);
scene.save("output.stl", opts);

समर्थन फ़ॉर्मेट्स

प्रारूपविस्तारपढ़ाईलिखें
FBX (ASCII और बाइनरी, 6.x-7.x).fbxहाँनहीं
ग्लोटीएफ 1.0 / 2.0.gltfहाँहाँ
GSTB बाइनरी.glbहाँहाँ
Wavefront ओबीजे.objहाँहाँ
STL (ASCII और बाइनरी).stlहाँहाँ

प्रत्येक प्रारूप में समर्पित है LoadOptions और SaveOptions उप-प्रकार (for उदाहरण के लिए, FbxLoadOptions, GltfSaveOptions, StlSaveOptions(यह जो दिखाता है प्रारूप-विशिष्ट सेटिंग्स जैसे कि समन्वय-सिस्टम फ्लिपिंग और सामग्री प्रकार चयन करें।.


Open Source और लाइसेंस

Aspose.3D FOSS for Java MIT लाइसेंस के तहत जारी किया जाता है। GitHub पर उपलब्ध है एस्पोजेस 3 डी-फॉएस-एक्सएनयूएमएच के लिए जावा. आप पुस्तकालय का उपयोग, संशोधन और पुनर्वितरण कर सकते हैं। बिना किसी प्रतिबंध के गैर-व्यावसायिक परियोजनाएं।.


शुरू करने के लिए