परिचय

Aspose.3D FOSS for TypeScript (@aspose/3d) एक ओपन-सोर्स, MIT-लाइसेंस वाला 3D फ़ाइल फ़ॉर्मेट लाइब्रेरी है जो मुख्य रूप से Node.js के लिए डिज़ाइन किया गया है। डेवलपर्स 3D मॉडल व्यूअर, फ़ॉर्मेट कनवर्टर, जियोमेट्री प्रोसेसिंग टूल्स, या सर्वर-साइड 3D पाइपलाइन बनाते समय इसे एक ही कमांड से इंस्टॉल कर सकते हैं (देखें Installation guide) और तुरंत 3D कंटेंट को लोड करना, निर्माण करना और एक्सपोर्ट करना शुरू कर सकते हैं। लाइब्रेरी Node.js से require('fs') और Buffer का उपयोग करती है; ब्राउज़र उपयोग के लिए उन APIs के उचित शिम्स की आवश्यकता होती है और यह आधिकारिक रूप से समर्थित नहीं है।

लाइब्रेरी प्रमुख इंटर्चेंज फ़ॉर्मेट्स — OBJ, glTF 2.0 / GLB, STL, 3MF, और COLLADA को इम्पोर्ट और एक्सपोर्ट दोनों के लिए समर्थन करती है। FBX इम्पोर्टर/एक्सपोर्टर क्लासेज़ मौजूद हैं लेकिन अभी तक फ़ॉर्मेट ऑटो-डिटेक्शन में जोड़ी नहीं गई हैं। सीन ग्राफ API 3D ऑथरिंग टूल्स से परिचित मॉडल को प्रतिबिंबित करता है: एक Scene में एक rootNode होता है, प्रत्येक Node चाइल्ड नोड्स और एंटिटी ऑब्जेक्ट्स (Mesh, Camera, Light) ले जा सकता है, और ट्रांसफॉर्म हायरार्की पढ़ने और लिखने के लिए पूरी तरह से सुलभ है।

मुख्य विशेषताएँ

  • बहु-फ़ॉर्मेट I/O: आयात और निर्यात OBJ (साथ .mtl सामग्री), glTF 2.0 / GLB, STL (binary और ASCII), 3MF, और COLLADA दोनों फ़ाइल पथों और in-memory Buffer ऑब्जेक्ट्स। FBX समर्थन अभी तक ऑटो-डिटेक्शन में जोड़ा नहीं गया है।
  • सीन ग्राफ API: Scene, Node, Mesh, Camera, Light हाइरार्की पूर्ण parent/child प्रबंधन के साथ; नोड्स को पुनरावर्ती रूप से traverse करें द्वारा node.childNodes
  • PBR सामग्री प्रणाली: Lambert, Phong, और PBR (metallic/roughness) सामग्री तक पहुंचा जा सकता है द्वारा node.material
  • मेश संचालन: कच्चा वर्टेक्स डेटा तक पहुँचें द्वारा mesh.controlPoints (ऐरे ऑफ Vector4), बहुभुज सूचकांक द्वारा mesh.polygonCount, और वर्टेक्स तत्व चैनलों द्वारा mesh.getElement()
  • गणितीय उपयोगिताएँ: Vector2, Vector3, Vector4, Matrix4, Quaternion, और स्थानिक गणनाओं के लिए बाउंडिंग बॉक्स प्रकार
  • एनीमेशन सिस्टम: कीफ़्रेम एनीमेशन के साथ AnimationClip, AnimationChannel, और इंटरपोलेशन कर्व्स (linear, Bezier, TCB spline)
  • फ़ॉर्मेट-विशिष्ट विकल्प: प्रति-फ़ॉर्मेट LoadOptions / SaveOptions क्लासेज़ कोऑर्डिनेट फ़्लिपिंग, स्केल, मैटेरियल लोडिंग, और अधिक को नियंत्रित करती हैं

शुरू करना

स्रोत से पैकेज बनाएं। Node.js 18 या इससे नया आवश्यक है; TypeScript 5.0+ की सिफारिश की जाती है।

git clone https://github.com/aspose-3d-foss/Aspose.3D-FOSS-for-TypeScript.git
cd Aspose.3D-FOSS-for-TypeScript
npm install
npm run build

एक 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`);
    }
}

सीन ग्राफ API

हर दृश्य Node वस्तुओं का एक वृक्ष है जो scene.rootNode पर मूलित है। addChildNode() के साथ पदानुक्रम बनाएं, entity गुण के माध्यम से किसी नोड पर Camera या Light जैसी इकाइयों को संलग्न करें, और प्रत्येक नोड के स्थानीय या विश्व-स्थान रूपांतरण को transform और globalTransform के माध्यम से पढ़ें।

import { Scene, Node, Camera, Light } from '@aspose/3d';

const scene = new Scene();

const cameraNode = new Node('MainCamera');
cameraNode.entity = new Camera('MainCamera');
scene.rootNode.addChildNode(cameraNode);

const lightNode = new Node('KeyLight');
lightNode.entity = new Light('KeyLight');
scene.rootNode.addChildNode(lightNode);

for (const child of scene.rootNode.childNodes) {
    console.log(`${child.name}: ${child.entity?.constructor.name}`);
}

गणित उपयोगिताएँ

Vector3, Vector4, Matrix4, और Quaternion लाइब्रेरी में प्रत्येक ज्यामितीय ऑपरेशन को समर्थन देते हैं। Vector3 और Vector4 x/y/z(/w) घटकों के साथ length, dot(), और cross() को उजागर करते हैं; Matrix4 एक 4×4 ग्रिड है जिसे m00–m33 के माध्यम से transpose() और concatenate() के साथ एक्सेस किया जाता है; Quaternion घूर्णन गणित के लिए normalize(), conjugate(), inverse(), और dot() प्रदान करता है।

import { Vector3, Quaternion, Matrix4 } from '@aspose/3d/utilities';

const position = new Vector3(1.0, 2.0, 3.0);
const rotation = new Quaternion(1.0, 0.0, 0.0, 0.0);
const transform = new Matrix4();

console.log(`length=${position.length} determinant=${transform.determinant}`);
console.log(`rotation w=${rotation.w} x=${rotation.x} y=${rotation.y} z=${rotation.z}`);

यह भी देखें

संबंधित संसाधन