परिचय
Aspose.3D FOSS TypeScript के लिए (@aspose/3d) यह एक ओपन-सोर्स, MIT-लाइसेंस वाला 3D फ़ाइल फ़ॉर्मेट लाइब्रेरी है Node.js और आधुनिक ब्राउज़र वातावरणों के लिए। डेवलपर्स जो 3D मॉडल व्यूअर्स, फ़ॉर्मेट कन्वर्टर्स, ज्यामिति प्रोसेसिंग टूल्स, या सर्वर-साइड 3D पाइपलाइन्स बनाते हैं, वे इसे एक ही npm install @aspose/3d command और तुरंत लोडिंग, निर्माण, तथा 3D सामग्री का निर्यात शुरू करें।.
लाइब्रेरी प्रमुख इंटरचेंज फ़ॉर्मेट्स — glTF 2.0 / GLB, STL, 3MF, और COLLADA को आयात और निर्यात दोनों के लिए, तथा OBJ को केवल आयात के लिए समर्थन करती है। FBX importer/exporter classes मौजूद हैं लेकिन अभी तक फ़ॉर्मेट ऑटो‑डिटेक्शन में जोड़ी नहीं गई हैं। The scene graph API 3D ऑथरिंग टूल्स से परिचित मॉडल को प्रतिबिंबित करता है: a Scene एक को रखता है rootNode, प्रत्येक Node बच्चा नोड्स और एंटिटी ऑब्जेक्ट्स ले जा सकता है (Mesh, Camera, Light), और ट्रांसफ़ॉर्म पदानुक्रम पूरी तरह से पढ़ने और लिखने के लिए सुलभ है।.
मुख्य विशेषताएँ
- मल्टी-फ़ॉर्मेट I/O: इम्पोर्ट OBJ (with
.mtlसामग्री, केवल इम्पोर्ट), glTF 2.0 / GLB, STL (बाइनरी और ASCII), 3MF, और COLLADA दोनों फ़ाइल पाथ्स और इन‑मेमारी सेBufferऑब्जेक्ट्स। glTF, STL, 3MF, और COLLADA भी निर्यात का समर्थन करते हैं। FBX समर्थन अभी तक ऑटो‑डिटेक्शन में जोड़ा नहीं गया है।. - सीन ग्राफ API:
Scene,Node,Mesh,Camera,Lightपूर्ण parent/child प्रबंधन के साथ पदानुक्रम; नोड्स को पुनरावर्ती रूप से ट्रैवर्स करेंnode.childNodes - PBR मैटेरियल सिस्टम: लैम्बर्ट, फॉन्ग, और PBR (metallic/roughness) मैटेरियल्स तक पहुंच संभव है
node.entity.material - मेश संचालन: कच्चा वर्टेक्स डेटा तक पहुँचें के माध्यम से
mesh.controlPoints(ऐरे ऑफVector4), बहुभुज सूचकांक के माध्यम सेmesh.polygonCount, और वर्टेक्स तत्व चैनलों के माध्यम सेmesh.getElement() - गणितीय उपयोगिताएँ:
Vector2,Vector3,Vector4,Matrix4,Quaternion, और स्थानिक गणनाओं के लिए बाउंडिंग बॉक्स प्रकार - एनीमेशन सिस्टम: कीफ़्रेम एनीमेशन के साथ
AnimationClip,AnimationChannel, और इंटरपोलेशन कर्व (रैखिक, बेज़ियर, TCB स्प्लाइन) - फ़ॉर्मेट-विशिष्ट विकल्प: प्रति-फ़ॉर्मेट
LoadOptions/SaveOptionsक्लासेज़ निर्देशांक फ़्लिपिंग, स्केल, मैटेरियल लोडिंग, और अधिक को नियंत्रित करती हैं
शुरू करना
npm से इंस्टॉल करें। Node.js 18 या उसके बाद का संस्करण आवश्यक है; TypeScript 5.0+ की सिफारिश की जाती है।.
npm install @aspose/3d
एक OBJ फ़ाइल लोड करें और सीन का निरीक्षण करें:
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
const scene = new Scene();
const options = new ObjLoadOptions();
options.enableMaterials = true;
scene.open('model.obj', options);
for (const node of scene.rootNode.childNodes) {
if (node.entity && 'controlPoints' in node.entity) {
const mesh = node.entity as any;
console.log(`Mesh "${node.name}": ${mesh.controlPoints.length} vertices`);
}
}
glTF में निर्यात करें
लोड किए गए या निर्मित किसी भी सीन को glTF 2.0 बाइनरी (GLB) में सहेजें:
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
const scene = new Scene();
scene.open('input.obj', new ObjLoadOptions());
scene.save('output.glb');
console.log('Exported to output.glb');
लाइब्रेरी फ़ाइल एक्सटेंशन से आउटपुट फ़ॉर्मेट को स्वतः पहचानती है। एक GltfSaveOptions उदाहरण PBR मैटेरियल एम्बेडिंग, टेक्सचर, और बाइनरी बनाम JSON एन्कोडिंग पर नियंत्रण के लिए।.
सीन निर्माण
प्रोग्रामेटिक रूप से एक सीन बनाएं और उसे निर्यात करें:
import { Scene, Node } from '@aspose/3d';
import { Mesh } from '@aspose/3d/entities';
const scene = new Scene();
const mesh = new Mesh();
// ... populate mesh.controlPoints and polygons ...
const node = new Node('myMesh');
node.entity = mesh;
scene.rootNode.addChildNode(node);
scene.save('programmatic.glb');