Χαρακτηριστικά και λειτουργίες
Το FOSS 3D για το TypeScript είναι μια βιβλιοθήκη Node.js που έχει άδεια MIT για την φόρτωση, κατασκευή και εξαγωγή σκηνών 3d. Θα φέρει πλήρεις ορισμούς τύπου Typecript, μία μόνο εξάρτηση από τον χρόνο εκτέλεσης (xmldomΗ σελίδα αυτή είναι η κύρια αναφορά για όλες τις περιοχές χαρακτηριστικών και περιλαμβάνει εκτεταμένα παραδείγματα κωδικού TypeScript για κάθε ένα.
Εγκατάσταση και εγκατάστασης
Εγκαταστήστε το πακέτο από npm χρησιμοποιώντας μια ενιαία εντολή:
asposefoss/3d is not yet published — build from source until it ships. See the project README for build instructions.Το πακέτο στοχεύει το CommonJS και απαιτεί Node.js 18 ή αργότερα. μετά την εγκατάσταση, ελέγξτε τη λειτουργία σας tsconfig.json περιλαμβάνει τις ακόλουθες επιλογές αντιγράφου για πλήρη συμβατότητα:
{
"compilerOptions": {
"target": "ES2020",
"module": "commonjs",
"moduleResolution": "node",
"esModuleInterop": true,
"strict": true
}
}Η εισαγωγή του κύριου Scene Οι κατηγορίες επιλογών που ειδικεύονται σε μορφή εισάγονται από τις αντίστοιχες υπο-δρόμοι τους:
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
import { GltfSaveOptions, GltfFormat } from '@aspose/3d/formats/gltf';Χαρακτηριστικά και λειτουργίες
Στήριξη μορφοποίησης
Το Aspose.3D FOSS για το TypeScript διαβάζει και γράφει έξι μεγάλες μορφές αρχείων 3D. Η ανίχνευση μορφών γίνεται αυτόματα από τα δυαδικά μαγικά αριθμούς κατά την φόρτιση, οπότε δεν χρειάζεται να προσδιορίσετε ρητά τη μορφή πηγής.
| ΤΕΧΝΗ | Διαβάστε | Γράψε | Σημειώσεις |
|---|---|---|---|
| OBJ | ΝΑΙ | ΝΑΙ | Wavefront OBJ: Διαβάστε / Γράψτε .mtl υλικά · χρήση ObjLoadOptions.enableMaterials Για την εισαγωγή |
| ΓΚΛΤΦ | ΝΑΙ | ΝΑΙ | GLTF 2.0 JSON και GLB δυαδικό; υλικά PBR |
| STL | ΝΑΙ | ΝΑΙ | Βινιακό και ASCII; πλήρης επαληθεύεται γύρο |
| 3MF | ΝΑΙ | ΝΑΙ | 3D Manufacturing Format with color and material metadata |
| FBX | Όχι * | Όχι * | Εισαγωγέας/εξαγωγή υπάρχει, αλλά η αυτο-αποκάλυψη μορφής δεν είναι καλωδιακή |
| COLLADA | ΝΑΙ | ΝΑΙ | Μονάδες κλίμακας, γεωμετρία, υλικά και κινούμενα κλιπ |
Κατεβάστε OBJ με υλικά:
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
const scene = new Scene();
const options = new ObjLoadOptions();
options.enableMaterials = true;
options.flipCoordinateSystem = false;
options.scale = 1.0;
options.normalizeNormal = true;
scene.open('model.obj', options);Αποταμίευση σε GLB (binary glTF):
import { Scene } from '@aspose/3d';
import { GltfSaveOptions, GltfFormat } from '@aspose/3d/formats/gltf';
const scene = new Scene();
// ... build or load scene content
const opts = new GltfSaveOptions();
opts.binaryMode = true;
scene.save('output.glb', GltfFormat.getInstance(), opts);Σκηνή Γκράφι
Όλα τα 3D περιεχόμενα οργανώνονται ως δέντρο Node αντικείμενα που ριζώνουν σε scene.rootNode.Κάθε κόμβος μπορεί να φέρει ένα Entity (α) Α Mesh, Camera, Light,ή άλλους SceneObject) και α Transform Αυτή η θέση έχει σχέση με τους γονείς της.
Κλειδιά κλάσης γραφικών:
Scene:• Το ανώτατο επίπεδο του εμπορευματικού εξοπλισμού, το οποίο έχειrootNodeκαιanimationClipsNode:Ένα όνομα με το δέντρο πουchildNodes,entity,transform,καιmaterialsEntity:• Η κλάση των υποδομών (Mesh,Camera,Light)SceneObject:• Η βάση της τάξης μοιράζεται μεNodeκαιEntityA3DObject:• Η βάση της τάξης μεnameκαι την τσάντα ιδιοκτησίαςTransform: τοπική μετάφραση, περιστροφή (Euler και Quaternion), και κλίμακα
Πέρα από το γραφείο της σκηνής:
import { Scene, Node, Mesh } from '@aspose/3d';
const scene = new Scene();
scene.open('model.obj');
function visit(node: Node, depth: number = 0): void {
const indent = ' '.repeat(depth);
console.log(`${indent}Node: ${node.name}`);
if (node.entity) {
console.log(`${indent} Entity: ${node.entity.constructor.name}`);
}
for (const child of node.childNodes) {
visit(child, depth + 1);
}
}
visit(scene.rootNode);Δημιουργία ιεραρχίας σκηνής προγραμματικά:
import { Scene, Node } from '@aspose/3d';
const scene = new Scene();
const parent = scene.rootNode.createChildNode('chassis');
const wheel = parent.createChildNode('wheel_fl');
wheel.transform.translation.set(0.9, -0.3, 1.4);Γεωμετρία και Μέσχα
Mesh είναι το κύριο είδος γεωμετρίας. επεκτείνεται Geometry και εκθέτει σημεία ελέγχου (αποκλίες), δείκτες πολυγόνου, και στοιχεία κατώφλισης για τα φυσιολογικά, UVs, καθώς και χρώματα κατωφής.
Κλειδιά της γεωμετρικής:
Mesh:Πολυγώνιο μεcontrolPointsκαιpolygonCountGeometry:• Η διαχείριση των στοιχείων vertex-elementVertexElementNormal:• Ο κανονικός πολλαπλός/πολιγών/βερτεξVertexElementUV:• Συντονισμοί υφάσματος (ένα ή περισσότερα κανάλια UV)VertexElementVertexColor:Πληροφορίες χρωμάτων per-vertexMappingMode: ελέγχει πώς τα στοιχεία δεδομένων χάρτη σε πολυγόνους (CONTROL_POINT,POLYGON_VERTEX,POLYGON,EDGE,ALL_SAME)ReferenceMode:Η ΕΠΙΤΡΟΦΗ ΤΗΣ ΔΙΑΔΙΚΑΣΤΙΚΗΣ ΠΡΟΣΟΧΗΣ (DIRECT,INDEX,INDEX_TO_DIRECT)VertexElementType:• Αναγνωρίζει την σημαντική ενός στοιχείου vertex.TextureMapping:• Καναδάς κειμένου
Διαβάστε τα δεδομένα μασχ από μια φορτισμένη σκηνή:
import { Scene, Mesh, VertexElementType } from '@aspose/3d';
const scene = new Scene();
scene.open('model.stl');
for (const node of scene.rootNode.childNodes) {
if (node.entity instanceof Mesh) {
const mesh = node.entity as Mesh;
console.log(`Mesh "${node.name}": ${mesh.controlPoints.length} vertices, ${mesh.polygonCount} polygons`);
const normals = mesh.getElement(VertexElementType.NORMAL);
if (normals) {
console.log(` Normal mapping: ${normals.mappingMode}`);
}
}
}Υλικό σύστημα
Το Aspose.3D FOSS για το TypeScript υποστηρίζει τρεις τύπους υλικών που καλύπτουν την πλήρη ποικιλία από τη κληρονομική οθόνη Phong μέχρι τη φυσική παρακολούθηση:
LambertMaterial: διαφωτισμένο χρώμα και περιβαλλοντικό χρώματα. χάρτες σε απλούς υλικά OBJ/DAEPhongMaterial: προσθέτει το φαινομενικό χρώμα, την λάμψη και την εκπομπή· ο προεπιλεγμένος τύπος υλικού OBJPbrMaterial: σωματικά βασισμένο σκληρότητα/μεταλικό μοντέλο· χρησιμοποιείται για την εισαγωγή και εξαγωγές του glTF 2.0
Διαβάστε υλικά από μια φορτισμένη σκηνή OBJ:
import { Scene, PhongMaterial, LambertMaterial } 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) {
for (const mat of node.materials) {
if (mat instanceof PhongMaterial) {
const phong = mat as PhongMaterial;
console.log(` Phong: diffuse=${JSON.stringify(phong.diffuseColor)}, shininess=${phong.shininess}`);
} else if (mat instanceof LambertMaterial) {
console.log(` Lambert: diffuse=${JSON.stringify((mat as LambertMaterial).diffuseColor)}`);
}
}
}Εφαρμόζοντας ένα υλικό PBR κατά την κατασκευή μιας σκηνής glTF:
import { Scene, Node, PbrMaterial } from '@aspose/3d';
import { Vector3 } from '@aspose/3d';
import { GltfSaveOptions, GltfFormat } from '@aspose/3d/formats/gltf';
const scene = new Scene();
const node = scene.rootNode.createChildNode('sphere');
const mat = new PbrMaterial();
mat.albedo = new Vector3(0.8, 0.2, 0.2); // red-tinted albedo; albedo starts null, must assign
mat.metallicFactor = 0.0;
mat.roughnessFactor = 0.5;
node.material = mat;
const opts = new GltfSaveOptions();
opts.binaryMode = false;
scene.save('output.gltf', GltfFormat.getInstance(), opts);Μαθηματικά χρήματα
Η βιβλιοθήκη σκάφη με ένα πλήρες σύνολο των τύπων 3D μαθηματικών, όλα πλήρως τυποποιημένα:
Vector3:3ο τμήμα του εμβέτη, υποστηρίζειminus(),times(),dot(),cross(),normalize(),length,angleBetween()Vector4:4ο βέκτορα για ομοιογενείς συντονιστέςMatrix4:4×4 μετασχηματισμός μεconcatenate(),transpose,decompose,setTRSQuaternion:• Κύκλος περιστροφής μεfromEulerAngle()(Στοπική και μοναδική),eulerAngles()(η μέθοδος της υπόθεσης),slerp(),normalize()BoundingBox: οξυ-αλληλογημένο δεξαμενόπλοιο μεminimum,maximum,center,size,mergeFVector3:• Μοναδική επιλογή από τηνVector3Η χρήση των στοιχείων Vertex
Υπολογισμός ενός κουτιού συνόρων από τις κατώτερες σκαλοπάτες:
import { Scene, Mesh, Vector3, BoundingBox } from '@aspose/3d';
const scene = new Scene();
scene.open('model.obj');
let box = new BoundingBox();
for (const node of scene.rootNode.childNodes) {
if (node.entity instanceof Mesh) {
for (const pt of (node.entity as Mesh).controlPoints) {
box.merge(new Vector3(pt.x, pt.y, pt.z));
}
}
}
console.log('Center:', box.center);
console.log('Extents:', box.size);Δημιουργία μετασχηματισμού από τους γωνίες του Euler:
import { Quaternion, Vector3, Matrix4 } from '@aspose/3d';
const rot = Quaternion.fromEulerAngle(0, Math.PI / 4, 0); // 45° around Y
const mat = new Matrix4();
mat.setTRS(new Vector3(0, 0, 0), rot, new Vector3(1, 1, 1));Συστήματα Animation
Τα μοντέλα API animation κλιπ, κόμβοι, κανάλια και ακολουθίες κλειδιά:
AnimationClip: ονομαστική συλλογή των κόμβων animation. προσβάλλεται μέσωscene.animationClips;· Εκθέσειςanimations: AnimationNode[]AnimationNode:Ονομαστική ομάδα τωνBindPointΣ. Δημιουργήθηκε μέσωclip.createAnimationNode(name),Η πρόσβαση μέσωclip.animationsBindPoint:• Συνδέει έναAnimationNodeσε ένα συγκεκριμένο ακίνητο σε αντικείμενο σκηνής· εκθέσειςpropertyκαιchannelsCountAnimationChannel:• ΕπέκτασηKeyframeSequence;· Διατηρεί ξεχωριστόkeyframeSequence;• Διαθέσιμο μέσωbindPoint.getChannel(name)KeyFrame: ένα ζευγάρι χρόνου / αξίας, φέρει ανά κλειδίinterpolation: InterpolationKeyframeSequence:Η παραγγελία λίστα τωνKeyFrameΠληροφορίες μέσωkeyFrames;· έχειpreBehaviorκαιpostBehavior(Extrapolation)Interpolation:Ο ΕΝΟΜ:LINEAR,CONSTANT,BEZIER,B_SPLINE,CARDINAL_SPLINE,TCB_SPLINEExtrapolation:• Η τάξη μεtype: ExtrapolationTypeκαιrepeatCount: numberExtrapolationType:Ο ΕΝΟΜ:CONSTANT,GRADIENT,CYCLE,CYCLE_RELATIVE,OSCILLATE
Διαβάστε τα δεδομένα κινουμένων σχεδίων από μια φορτισμένη σκηνή:
import { Scene, AnimationNode, BindPoint } from '@aspose/3d';
const scene = new Scene();
scene.open('animated.dae'); // COLLADA animation import is supported
for (const clip of scene.animationClips) {
console.log(`Clip: "${clip.name}"`);
for (const animNode of clip.animations) { // clip.animations, not clip.nodes
console.log(` AnimationNode: ${animNode.name}`);
for (const bp of animNode.bindPoints) { // animNode.bindPoints, not animNode.channels
console.log(` BindPoint: property="${bp.property.name}", channels=${bp.channelsCount}`);
}
}
}Στήριξη Stream & Buffer
Χρησιμοποιήστε scene.openFromBuffer() να φορτίσετε μια σκηνή 3D απευθείας από ένα in-memory Buffer.Αυτό είναι το συνιστώμενο πρότυπο για λειτουργίες χωρίς διακομιστή, σωλήνες streaming και περιουσιακά στοιχεία επεξεργασίας που συλλέγονται μέσω HTTP χωρίς να γράφουν σε δίσκο.
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
import * as fs from 'fs';
// Load file into memory, then parse from buffer
const buffer: Buffer = fs.readFileSync('model.obj');
const scene = new Scene();
const options = new ObjLoadOptions();
options.enableMaterials = true;
scene.openFromBuffer(buffer, options);
for (const node of scene.rootNode.childNodes) {
if (node.entity) {
console.log(node.name, node.entity.constructor.name);
}
}Η αυτοαποκάλυψη μορφοποίησης από τα δυαδικά μαγικά αριθμούς εφαρμόζεται όταν φορτώνεται από το buffer, έτσι ώστε τα αρχεία GLB, STL binary και 3MF αναγνωρίζονται χωρίς να προσδιορίζουν μια παράμετρος μορφής.
Χρήση παραδείξεων
Παράδειγμα 1: φόρτιση OBJ και εξαγωγή στην GLB
Αυτό το παράδειγμα φορτώνει ένα αρχείο Wavefront OBJ με υλικά, στη συνέχεια επαναξέρχεται την σκηνή ως διδάσκοντα αρχεία GLTF (GLB) κατάλληλο για χρήση web και παιχνιδιών.
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
import { GltfSaveOptions, GltfFormat } from '@aspose/3d/formats/gltf';
function convertObjToGlb(inputPath: string, outputPath: string): void {
const scene = new Scene();
const loadOpts = new ObjLoadOptions();
loadOpts.enableMaterials = true;
loadOpts.flipCoordinateSystem = false;
loadOpts.normalizeNormal = true;
scene.open(inputPath, loadOpts);
// Report what was loaded
for (const node of scene.rootNode.childNodes) {
if (node.entity) {
console.log(`Loaded: ${node.name} (${node.entity.constructor.name})`);
}
}
const saveOpts = new GltfSaveOptions();
saveOpts.binaryMode = true; // write .glb instead of .gltf + .bin
scene.save(outputPath, GltfFormat.getInstance(), saveOpts);
console.log(`Exported GLB to: ${outputPath}`);
}
convertObjToGlb('input.obj', 'output.glb');Παράδειγμα 2: Στρογγυλό STL με κανονική επικύρωση
Αυτό το παράδειγμα φορτώνει ένα διδάσκον αρχείο STL, εκτυπώνει ανά στροφή κανονικές πληροφορίες, στη συνέχεια επαναξέρχεται η σκηνή ως ASCII STl και επαληθεύει την περιτομή.
import { Scene, Mesh, VertexElementNormal, VertexElementType } from '@aspose/3d';
import { StlLoadOptions, StlSaveOptions } from '@aspose/3d/formats/stl';
const scene = new Scene();
const loadOpts = new StlLoadOptions();
scene.open('model.stl', loadOpts);
let totalPolygons = 0;
for (const node of scene.rootNode.childNodes) {
if (node.entity instanceof Mesh) {
const mesh = node.entity as Mesh;
totalPolygons += mesh.polygonCount;
const normElem = mesh.getElement(VertexElementType.NORMAL) as VertexElementNormal | null;
if (normElem) {
console.log(` Normals: ${normElem.data.length} entries, mapping=${normElem.mappingMode}`);
}
}
}
console.log(`Total polygons: ${totalPolygons}`);
// Re-export as ASCII STL
const saveOpts = new StlSaveOptions();
saveOpts.binaryMode = false; // ASCII output
scene.save('output_ascii.stl', saveOpts);Παράδειγμα 3: Δημιουργήστε μια σκηνή προγραμματικά και αποθηκεύστε ως glTF
Αυτό το παράδειγμα κατασκευάζει μια σκηνή με ένα υλικό PBR από τη σφραγίδα και την αποθηκεύει ως αρχείο JSON glTF.
import { Scene, Mesh, PbrMaterial, Vector4, Vector3 } from '@aspose/3d';
import { GltfSaveOptions, GltfFormat } from '@aspose/3d/formats/gltf';
const scene = new Scene();
const node = scene.rootNode.createChildNode('floor');
// Build a simple quad mesh (two triangles)
// controlPoints are Vector4 (x, y, z, w) where w=1 for positions
const mesh = new Mesh();
mesh.controlPoints.push(
new Vector4(-1, 0, -1, 1),
new Vector4( 1, 0, -1, 1),
new Vector4( 1, 0, 1, 1),
new Vector4(-1, 0, 1, 1),
);
mesh.createPolygon([0, 1, 2]);
mesh.createPolygon([0, 2, 3]);
node.entity = mesh;
// Apply a PBR material
const mat = new PbrMaterial();
mat.albedo = new Vector3(0.6, 0.6, 0.6); // albedo starts null, must assign
mat.metallicFactor = 0.0;
mat.roughnessFactor = 0.8;
node.material = mat;
// Save as JSON glTF
const opts = new GltfSaveOptions();
opts.binaryMode = false;
scene.save('floor.gltf', GltfFormat.getInstance(), opts);
console.log('Scene written to floor.gltf');Συμβουλές και βέλτιστες πρακτικές
- Χρησιμοποιήστε
ObjLoadOptions.enableMaterials = trueΌποτε χρειάζεστε δεδομένα υλικού από αρχεία .mtl. Χωρίς αυτό, η λίστα υλικά σε κάθε κόμβο θα είναι άδειο. - Προτιμώ
binaryMode = trueΓια την GLB Όταν παράγουμε περιουσιακά στοιχεία για web ή κινητήρες παιχνιδιών.Binary GLB είναι ένα μοναδικό αυτό-συμπεριλαμβανόμενο αρχείο και φορτώνει ταχύτερα σε προγράμματα περιήγησης και μηχανές από το JSON + .bin split. - Χρησιμοποιήστε
openFromBuffer()Σε περιβάλλον χωρίς server για να αποφύγετε προσωρινά αρχεία I/O. Fetch το περιουσιακό στοιχείο, περάστε τηνBufferαπευθείας, και γράψτε την έκδοση σε ένα ρεύμα ή άλλο buffer. - Ελέγξτε
node.entityΠριν το casting:Δεν είναι όλα τα κόμβα που φέρουν μια οντότητα.Πάντα να φροντίζετε με έναinstanceofΕλέγξτε πριν από την πρόσβασηMesh- ειδικές ιδιότητες όπωςcontrolPoints. - ΣΕΤΙΔΑ
normalizeNormal = trueΣεObjLoadOptionsόταν τα αρχεία OBJ προέρχονται από μη αξιόπιστες πηγές. αυτό εμποδίζει την αποσύνδεση των κανονικών να εξαπλωθεί σε βήματα παραπομπής ή επικύρωσης. - Κρατήστε
strict: trueΣτον Τσκόρ.JSON:Η βιβλιοθήκη είναι γραμμένη μεnoImplicitAnyκαιstrictNullChecks.ΑπαλλαγήstrictΜασκάρετε τα πραγματικά σφάλματα τύπου και χάνετε την αξία του τυποποιημένου API. - Περνάμε μέσω
childNodes,Όχι ένα index loop.:• ΤοchildNodesΗ ιδιοκτησία επιστρέφει ένα μη αναγνωρίσιμο. αποφεύγοντας να βασιστείτε στην αριθμητική ενσωμάτωση για προοδευτική συμβατότητα.
κοινά ζητήματα
| Συμπτώματα | Πιθανόν αιτία | ΦΙΛΕΞΗ |
|---|---|---|
| Ο κατάλογος υλικών κενός μετά το φορτίο OBJ | enableMaterials Δεν θέτει | ΣΕΤΙΔΑ options.enableMaterials = true |
| Το αρχείο GLB περιέχει ξεχωριστό .bin sidecar | binaryMode Η παραίτηση για false | ΣΕΤΙΔΑ opts.binaryMode = true |
| Οι κανονικοί Vertex που λείπουν στην παραγωγή STL | Η λειτουργία STL ASCII παραλείπει τα κανονικά ανά πρόσωπο | Σβήσιμο στο binaryMode = true Η κανονική τιμή πριν την εξαγωγή |
node.entity Είναι πάντα null | Ταξιδεύοντας μόνο rootNode,Όχι τα παιδιά της | Επαναλάβετε στο node.childNodes |
| Ερμηνεία TypeScript: το ακίνητο δεν υπάρχει | ΓΕΝΟΣ @types Κασί | Δρομολόγηση npm install @aspose/3d ξανά, χωρίς χωρισμούς @types Χρειάζεται πακέτο |
openFromBuffer Στελίζει το σφάλμα της μορφής | Η αυτοαποκαλύψιμη μορφή από μαγεία | Πάρτε την κατηγορία επιλογών σαφούς μορφής ως δεύτερο επιχειρηματικό στοιχείο |
Συχνές ερωτήσεις
Η βιβλιοθήκη απαιτεί κάποια εγχώρια πρόσθετα ή συστημικά πακέτα;? No. Aspose.3D FOSS για TypeScript έχει μια ενιαία εξάρτηση του χρόνου εκτέλεσης: xmldom, η οποία είναι καθαρή JavaScript και εγκαθίσταται αυτόματα από npm. .node γηραιά addons και δεν υπάρχουν συστημικά πακέτα για εγκατάσταση.
Ποια εκδόσεις Node.js υποστηρίζονται;? Node.js 18, 20, and 22 LTS. The library targets CommonJS output and uses ES2020 language features internally.
Μπορώ να χρησιμοποιήσω τη βιβλιοθήκη σε ένα πακέτο προγράμματος περιήγησης (webpack/esbuild);? Η βιβλιοθήκη στοχεύει το Node.js και χρησιμοποιεί το node .js fs και Buffer Για χρήση του προγράμματος περιήγησης, φορτώστε την σκηνή στο server-side και μεταφέρετε το αποτέλεσμα (π.χ., ως GLB) στον πελάτη.
Ποια είναι η διαφορά μεταξύ GltfSaveOptions.binaryMode = true και false? binaryMode = false Παράγει το A .gltf JSON αρχείο plus ένα ξεχωριστό .bin Δυοδευτικό μπαρ. binaryMode = true Δημιουργεί ένα μοναδικό αυτοσυμπεριλαμβανόμενο .glb Ετικέτες. χρησιμοποιήστε true για την παράδοση των περιουσιακών στοιχείων παραγωγής.
Μπορώ να φορτώ ένα αρχείο από μια απάντηση HTTP χωρίς να το αποθηκεύσω στον δίσκο;? Ναι. Φέτσε την απάντηση ως α Buffer (π.χ., χρησιμοποιώντας το node-fetch ή το ενσωματωμένο fetch σε κόντρα 18+), στη συνέχεια καλέστε scene.openFromBuffer(buffer, options).
Η υποστήριξη του FBX είναι πλήρης;? Δεν υπάρχουν FBX εισαγωγείς και εξαγωγητές τάξεις στη βιβλιοθήκη, αλλά το FB X δεν είναι συνδεδεμένο σε Scene.open() ή Scene.save() Αυτοαποκαλύψεις - Καλέστε scene.open('file.fbx') δεν θα επικαλεστεί το εισαγωγέα FBX· το αρχείο θα χειριστεί από την οδό αποχώρησης STL. Χρησιμοποιήστε τις κατηγορίες εισαγορά/εξαγωγής που είναι ειδικές για το FBx απευθείας εάν χρειάζεστε το FbX I/O. Δείτε τον πίνακα υποστήριξης μορφής παραπάνω στον οποίο σημειώνεται το fbx ως: No*.
Η βιβλιοθήκη υποστηρίζει το TypeScript 4.x;? Το TypeScript 4.7+ θα πρέπει να λειτουργεί στην πράξη, αλλά η βιβλιοθήκη δοκιμάζεται και συγγραφείται έναντι του 5.0+.
Συνοπτική αναφορά API
| Κλάση | Μοντέλο | Σκοπός |
|---|---|---|
Scene | @aspose/3d | Υψηλό επίπεδο κέντρα δοχείων.; open(), openFromBuffer(), save(), rootNode, animationClips |
Node | @aspose/3d | Σενάριο γραφικών κόμβων.; childNodes, entity, transform, materials, createChildNode() |
Entity | @aspose/3d | Κλάση βάσης για αντικείμενα που μπορούν να προσκομιστούν σε σκηνή |
SceneObject | @aspose/3d | Η βάση της τάξης μοιράζεται με Node και Entity |
A3DObject | @aspose/3d | Η βάση της ρίζας με name και την τσάντα ιδιοκτησίας |
Transform | @aspose/3d | Η τοπική μετάφραση, η περιστροφή και η κλίμακα |
Mesh | @aspose/3d | Πολυγώνιο μασχί; controlPoints, polygonCount, createPolygon(),Ετικέτες Vertex |
Geometry | @aspose/3d | Κλάση βάσης για τύπους γεωμετρίας |
Camera | @aspose/3d | Οντότητα κάμερας με ρυθμίσεις πεδίου-εικόνα και προβολής |
Light | @aspose/3d | Φωτεινή οντότητα (πόντο, κατεύθυνση και σημείο) |
LambertMaterial | @aspose/3d | Διαφορετικό + περιβαλλοντικό μοντέλο |
PhongMaterial | @aspose/3d | Φονγκ που σκιέται με κερδοσκοπικό και εκπομπτικό |
PbrMaterial | @aspose/3d | Φυσικά βασισμένο σκληρότητα/μεταλικό μοντέλο για glTF |
Vector3 | @aspose/3d | 3-component double-precision vector |
Vector4 | @aspose/3d | 4-component vector for homogeneous math |
Matrix4 | @aspose/3d | 4×4 transformation matrix |
Quaternion | @aspose/3d | Καρταρίνιο Ροτάσης |
BoundingBox | @aspose/3d | Αξικό-αλληλογημένο πλαίσιο |
FVector3 | @aspose/3d | Η μοναδική προσαρμοσμένη παραλλαγή του Vector3 |
VertexElementNormal | @aspose/3d | Ο κανόνας Per-vertex ή per-polygon-verstex |
VertexElementUV | @aspose/3d | Συντονισμός του στοιχείου Vertex |
VertexElementVertexColor | @aspose/3d | Περ-βέρτεξ χρώμα Vertex στοιχείο |
MappingMode | @aspose/3d | ΕΝΟΜ : CONTROL_POINT, POLYGON_VERTEX, POLYGON, ALL_SAME |
ReferenceMode | @aspose/3d | ΕΝΟΜ : DIRECT, INDEX, INDEX_TO_DIRECT |
AnimationClip | @aspose/3d | Ετικέτες: Ανταλλαγές - Exposes animations: AnimationNode[];Δημιουργήθηκε μέσω scene.createAnimationClip(name) |
AnimationNode | @aspose/3d | Ονομαστική ομάδα των BindPointΣ. Δημιουργήθηκε μέσω clip.createAnimationNode(name) |
BindPoint | @aspose/3d | Σύνδεση ένα AnimationNode σε ένα σκηνικό αντικειμένου ιδιοκτησίας. εκθέσεις property και channelsCount |
AnimationChannel | @aspose/3d | Επέκταση KeyframeSequence;· Κρατάει το A keyframeSequence;• Διαθέσιμο μέσω bindPoint.getChannel(name) |
KeyFrame | @aspose/3d | Μοναδικό χρονοδιάγραμμα/αξία ζεύγος κλειδιού; φέρει interpolation: Interpolation |
KeyframeSequence | @aspose/3d | παραγγελία keyFrames Η λίστα; preBehavior/postBehavior Είναι Extrapolation αντικείμενα |
Interpolation | @aspose/3d | ΕΝΟΜ : LINEAR, CONSTANT, BEZIER, B_SPLINE, CARDINAL_SPLINE, TCB_SPLINE |
Extrapolation | @aspose/3d | Η τάξη με type: ExtrapolationType και repeatCount: number |
ExtrapolationType | @aspose/3d | ΕΝΟΜ : CONSTANT, GRADIENT, CYCLE, CYCLE_RELATIVE, OSCILLATE |
ObjLoadOptions | @aspose/3d/formats/obj | Εισαγωγικές επιλογές OBJ: enableMaterials, flipCoordinateSystem, scale, normalizeNormal |
GltfSaveOptions | @aspose/3d/formats/gltf | Διάφορες επιλογές εξαγωγής GLTF/GLB: binaryMode |
GltfFormat | @aspose/3d/formats/gltf | Η μορφοποίηση του κειμένου για GLTF/GLB. pass to scene.save() |
StlLoadOptions | @aspose/3d/formats/stl | Εισαγωγικές επιλογές STL |
StlSaveOptions | @aspose/3d/formats/stl | Εξαγωγικές επιλογές STL: binaryMode |
StlImporter | @aspose/3d/formats/stl | Λιγότερο επίπεδο STL αναγνώστης |
StlExporter | @aspose/3d/formats/stl | Λιγός Στλ συγγραφέας |