Savybės ir funkcionalumas
Aspose.3D FOSS for TypeScript yra MIT licencijuota Node.js biblioteka, skirta įkelti, kurti ir eksportuoti 3D scenas. Ji pateikiama su pilnomis TypeScript tipų apibrėžtimis, viena vykdymo laiko priklausomybe (xmldom), ir palaikymu šešiems pagrindiniams 3D failų formatams. Šis puslapis yra pagrindinė nuoroda visoms funkcijų sritims ir jame pateikti vykdomi TypeScript kodo pavyzdžiai kiekvienai iš jų.
Įdiegimas ir konfigūracija
Įdiekite paketą iš npm naudodami vieną komandą:
npm install @aspose/3dPaketas taikomas CommonJS ir reikalauja Node.js 18 arba naujesnės versijos. Įdiegus, patikrinkite, ar jūsų tsconfig.json įtraukia šias kompiliatoriaus parinktis, kad būtų visiškas suderinamumas:
{
"compilerOptions": {
"target": "ES2020",
"module": "commonjs",
"moduleResolution": "node",
"esModuleInterop": true,
"strict": true
}
}Importuokite pagrindinį Scene klasę iš paketo šaknies. Formatui specifinės parinkčių klasės importuojamos iš atitinkamų po‑katalogų:
import { Scene } from '@aspose/3d';
import { ObjLoadOptions } from '@aspose/3d/formats/obj';
import { GltfSaveOptions, GltfFormat } from '@aspose/3d/formats/gltf';Savybės ir funkcionalumas
Formatų palaikymas
Aspose.3D FOSS for TypeScript skaito ir rašo šešis pagrindinius 3D failų formatus. Formato aptikimas įkeliant yra automatinis, remiantis binariniais magiškais skaičiais, todėl nereikia explicitiai nurodyti šaltinio formato.
| Formatas | Skaityti | Rašyti | Pastabos |
|---|---|---|---|
| OBJ (Wavefront) | Taip | Taip | Skaito/rašo .mtl medžiagos; naudokite ObjLoadOptions.enableMaterials importui |
| glTF 2.0 | Taip | Taip | JSON tekstinis formatas; PBR medžiagos |
| GLB | Taip | Taip | Binary glTF; nustatyta GltfSaveOptions.binaryMode = true |
| STL | Taip | Taip | Binary and ASCII; pilnas ciklas patikrintas |
| 3MF | Taip | Taip | 3D Manufacturing Format with color and material metadata |
| FBX | Ne* | Ne* | Importer/exporter egzistuoja, bet formato automatinis aptikimas nesusietas |
| COLLADA (DAE) | Taip | Taip | Vienetų mastelis, geometrija, medžiagos ir animacijos klipai |
OBJ įkėlimas su medžiagomis:
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);Išsaugojimas į GLB (binarinį 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);Scenos grafas
Visas 3D turinys organizuotas kaip medžio Node objektų, kurių šaknys yra scene.rootNode. Kiekvienas mazgas gali nešti Entity (vieną Mesh, Camera, Light, arba kitą SceneObject) ir vieną Transform kuris padeda jį pozicionuoti santykinai pagal tėvą.
Svarbiausios scenos grafiko klasės:
Scene: aukščiausio lygio konteineris; talpinarootNodeiranimationClipsNode: pavadintas medžio mazgas suchildNodes,entity,transform, irmaterialsEntity: bazinė klasė prijungiamų objektų (Mesh,Camera,Light)SceneObject: bazinė klasė, kurią dalijasiNodeirEntityA3DObject: šaknies bazinė klasė sunameir savybių maišelisTransform: vietinis poslinkis, sukimas (Euler ir kvaternionas) ir mastelis
Scenos grafo perėjimas:
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);Scenos hierarchijos kūrimas programiškai:
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);Geometrija ir Mesh
Mesh yra pagrindinis geometrijos tipas. Jis išplečia Geometry ir atskleidžia valdymo taškus (viršūnes), daugiakampių indeksus ir viršūnių elementus normalioms, UV ir viršūnių spalvoms.
Pagrindinės geometrijos klasės:
Mesh: daugiakampių tinklelis sucontrolPointsirpolygonCountGeometry: bazinė klasė su viršūnių elementų valdymuVertexElementNormal: kiekvienos viršūnės arba daugiakampio viršūnės normalėsVertexElementUV: tekstūros koordinatės (vienas arba keli UV kanalai)VertexElementVertexColor: kiekvienos viršūnės spalvų duomenysMappingMode: valdo, kaip elemento duomenys susiejami su daugiakampiaisCONTROL_POINT,POLYGON_VERTEX,POLYGON,EDGE,ALL_SAME)ReferenceMode: valdo indeksavimo strategiją (DIRECT,INDEX,INDEX_TO_DIRECT)VertexElementType: nustato viršūnės elemento semantikąTextureMapping: tekstūros kanalo išvardijimas
Tinklo duomenų skaitymas iš įkelto scenos:
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}`);
}
}
}Medžiagų sistema
Aspose.3D FOSS for TypeScript palaiko tris medžiagų tipus, apimančius visą spektrą nuo senosios Phong apšvietimo iki fiziškai pagrįsto atvaizdavimo:
LambertMaterial: difuzinė spalva ir aplinkos spalva; susiejama su paprastais OBJ/DAE medžiagomisPhongMaterial: prideda spekuliarinę spalvą, blizgesį ir emisiją; numatytasis OBJ medžiagos tipasPbrMaterial: fizinio pagrindo šiurkštumo/metalų modelis; naudojamas glTF 2.0 importui ir eksportui
Medžiagų skaitymas iš įkelto OBJ scenos:
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 medžiagos taikymas kuriant glTF sceną:
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);Matematinės priemonės
Biblioteka tiekiama su pilnu 3D matematikos tipų rinkiniu, visi visiškai tipizuoti:
Vector3: 3 komponentų vektorius; palaikominus(),times(),dot(),cross(),normalize(),length,angleBetween()Vector4: 4 komponentų vektorius homogeninėms koordinatėmsMatrix4: 4×4 transformacijos matrica suconcatenate(),transpose,decompose,setTRSQuaternion: rotacijos kvaternionas sufromEulerAngle()(statinis, vienaskaitinis),eulerAngles()(instancijos metodas),slerp(),normalize()BoundingBox: ašies lygių ribų dėžutė suminimum,maximum,center,size,mergeFVector3: viengubo tikslumo variantasVector3naudojamas viršūnių elemento duomenyse
Ribinės dėžės skaičiavimas iš tinklo viršūnių:
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);Transformacijos kūrimas iš Eulerio kampų:
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));Animacijos sistema
Animacijos API modeliuoja klipus, mazgus, kanalus ir raktų kadrų sekas:
AnimationClip:pavadintas animacijos mazgų rinkinys; pasiekiamas perscene.animationClips; atskleidžiaanimations: AnimationNode[]AnimationNode: pavadinta grupėBindPoints; sukurta perclip.createAnimationNode(name), pasiekiama perclip.animationsBindPoint: susiejaAnimationNodeprie konkrečios savybės scenos objekte; atskleidžiapropertyirchannelsCountAnimationChannel: plečiaKeyframeSequence; saugo atskirąkeyframeSequence; pasiekiama perbindPoint.getChannel(name)KeyFrame: viena laiko/vertės pora; neša per raktų kadrąinterpolation: InterpolationKeyframeSequence: išrikiuotas sąrašasKeyFrameobjektus perkeyFrames; turipreBehaviorirpostBehavior(Extrapolation)Interpolation: enum:LINEAR,CONSTANT,BEZIER,B_SPLINE,CARDINAL_SPLINE,TCB_SPLINEExtrapolation: class withtype: ExtrapolationTypeirrepeatCount: numberExtrapolationType: enum:CONSTANT,GRADIENT,CYCLE,CYCLE_RELATIVE,OSCILLATE
Animacijos duomenų skaitymas iš įkelto scenos:
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}`);
}
}
}Srauto ir buferio palaikymas
Naudokite scene.openFromBuffer() įkelti 3D sceną tiesiogiai iš atminties Buffer. Tai rekomenduojamas modelis serverless funkcijoms, srautinėms duomenų konvejoms ir išteklių apdorojimui, gautiems per HTTP, be įrašymo į diską.
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);
}
}Formatų automatinis aptikimas pagal binarinius magiškus skaičius galioja įkeliant iš buferio, todėl GLB, STL binariniai ir 3MF failai yra atpažįstami be formatų parametro nurodymo.
Naudojimo pavyzdžiai
Pavyzdys 1: Įkelti OBJ ir eksportuoti į GLB
Šiame pavyzdyje įkeliamas Wavefront OBJ failas su medžiagomis, po to scena iš naujo eksportuojama kaip binarinis glTF (GLB) failas, tinkamas naudoti internete ir žaidimų varikliuose.
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');Pavyzdys 2: Pilnas STL ciklas su normalų tikrinimu
Šiame pavyzdyje įkeliamas binarinis STL failas, išvedama informacija apie normalus kiekvienam viršūnių taškui, po to scena iš naujo eksportuojama kaip ASCII STL ir patikrinamas ciklo tikslumas.
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);Pavyzdys 3: Sukurti sceną programiškai ir įrašyti kaip glTF
Šis pavyzdys sukuria sceną su PBR medžiaga nuo nulio ir įrašo ją kaip JSON glTF failą.
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');Patarimai ir geriausia praktika
- Naudokite
ObjLoadOptions.enableMaterials = truekai jums reikia medžiagų duomenų iš .mtl failų. Be to, medžiagų sąrašas kiekviename mazge bus tuščias. - Pirmenybę teikite
binaryMode = trueGLB formatui kai kuriate išteklius žiniatinkliui arba žaidimų varikliams. Binary GLB yra vienas savarankiškas failas ir įkeliamas greičiau naršyklėse ir varikliuose nei JSON + .bin suskirstymas. - Naudokite
openFromBuffer()serverless aplinkose siekiant išvengti laikino failų I/O. Atsisiųskite išteklių, perduokiteBuffertiesiogiai ir įrašykite išvestį į srautą arba kitą buferį. - Patikrinkite
node.entityprieš konvertavimą: ne visi mazgai turi objektą. Visada apsaugokite suinstanceofpatikrinimu prieš pasiekiantMesh-specifinių savybių, pvz.controlPoints. - Nustatykite
normalizeNormal = trueįObjLoadOptionskai jūsų šaltinio OBJ failai ateina iš nepatikimų šaltinių. Tai neleidžia iškraipytų normalų plisti į tolimesnius atvaizdavimo ar validacijos etapus. - Išlaikykite
strict: truetsconfig.json faile: biblioteka sukurta sunoImplicitAnyirstrictNullChecks. Išjungimasstrictmaskuoja tikras tipų klaidas ir neigiamai veikia tipizuotos API vertę. - Naršyti per
childNodes, ne indeksų ciklas:childNodessavybė grąžina iteruojamą objektą; venkite pasikliauti skaitine indeksacija, kad išlaikytumėte ateities suderinamumą.
Dažnos problemos
| Simptomas | Tikėtina priežastis | Pataisa |
|---|---|---|
| Medžiagų sąrašas tuščias po OBJ įkėlimo | enableMaterials nenustatyta | Nustatyta options.enableMaterials = true |
| GLB failas turi atskirą .bin šoninį failą | binaryMode numatytasis į false | Nustatyta opts.binaryMode = true |
| Trūksta viršūnių normalių STL išvestyje | STL ASCII režimas praleidžia paviršiaus normalius kiekvienam veidui | Perjungti į binaryMode = true arba apskaičiuokite normalus prieš eksportavimą |
node.entity visada yra null | Tik peržvalgant rootNode, ne jo vaikų | Rekursuoti į node.childNodes |
| TypeScript klaida: savybės neegzistuoja | Senas @types talpykla | Vykdyti npm install @aspose/3d vėl; nėra atskirų @types paketas būtinas |
openFromBuffer meta formatų klaidą | Formatas negali būti automatiškai nustatytas iš magijos | Perduokite aiškią format option class kaip antrą argumentą |
Dažnai užduodami klausimai
Ar biblioteka reikalauja kokių nors natūralių papildinių arba sistemos paketų? Ne. Aspose.3D FOSS for TypeScript turi vieną vykdymo laiką priklausomybę: xmldom, kuris yra grynas JavaScript ir įdiegtas automatiškai per npm. Nėra .node natūralių papildinių ir jokių sistemos paketų, kurių reikia įdiegti.
Kokios Node.js versijos palaikomos? Node.js 18, 20 ir 22 LTS. Biblioteka orientuota į CommonJS išvestį ir viduje naudoja ES2020 kalbos funkcijas.
Ar galiu naudoti biblioteką naršyklės pakete (webpack/esbuild)? Biblioteka orientuota į Node.js ir naudoja Node.js fs ir Buffer API. Naršyklės paketavimas nėra oficialiai palaikomas. Naršyklės naudojimui įkelkite sceną serverio pusėje ir perduokite rezultatą (pvz., kaip GLB) klientui.
Kuo skiriasi GltfSaveOptions.binaryMode = true ir false? binaryMode = false sukuria .gltf JSON failą ir atskirą .bin dvejetainio buferio šoninis komponentas. binaryMode = true sukuria vieną savarankišką .glb failą. Naudokite true gamybos turto pristatymui.
Ar galiu įkelti failą iš HTTP atsakymo nesaugodamas jo diske? Taip. Gaukite atsakymą kaip Buffer (pvz., naudojant node-fetch arba įmontuotą fetch Node 18+), tada iškvieskite scene.openFromBuffer(buffer, options).
Ar FBX palaikymas baigtas? Ne. FBX importavimo ir eksportavimo klasės bibliotekoje egzistuoja, tačiau FBX nėra integruotas į Scene.open() arba Scene.save() automatinį aptikimą. Iškviečiant scene.open('file.fbx') nebus iškviestas FBX importuotojas; failas bus apdorotas naudojant STL atsarginį kelią. Naudokite FBX specifines importavimo/eksportavimo klases tiesiogiai, jei jums reikia FBX I/O. Žiūrėkite formatų palaikymo lentelę aukščiau, kurioje FBX pažymėta kaip No*.
Ar biblioteka palaiko TypeScript 4.x? Rekomenduojama TypeScript 5.0+. TypeScript 4.7+ turėtų veikti praktikoje, tačiau biblioteka yra testuota ir sukurta pagal 5.0+.
API nuorodų santrauka
| Klasė | Modulis | Tikslas |
|---|---|---|
Scene | @aspose/3d | Aukščiausio lygio scenos konteineris; open(), openFromBuffer(), save(), rootNode, animationClips |
Node | @aspose/3d | Scenos grafo mazgas; childNodes, entity, transform, materials, createChildNode() |
Entity | @aspose/3d | Bazinė klasė scenos prijungiamų objektų |
SceneObject | @aspose/3d | Bazinė klasė, kurią dalijasi Node ir Entity |
A3DObject | @aspose/3d | Šakninis pagrindas su name ir savybių maišas |
Transform | @aspose/3d | Vietinis poslinkis, sukimas ir mastelis |
Mesh | @aspose/3d | Poligono tinklelis; controlPoints, polygonCount, createPolygon(), viršūnių elementai |
Geometry | @aspose/3d | Bazinė klasė geometrinių tipų |
Camera | @aspose/3d | Kameros objektas su matymo lauku ir projekcijos nustatymais |
Light | @aspose/3d | Šviesos objektas (point, directional, spot) |
LambertMaterial | @aspose/3d | Diffuse + ambient šešėliavimo modelis |
PhongMaterial | @aspose/3d | Phong šešėliavimas su specular ir emissive |
PbrMaterial | @aspose/3d | Fizinio pagrindo raukšlumo/metallic modelis 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 | Sukimo kvaternionas |
BoundingBox | @aspose/3d | Ašies lygiuota ribinė dėžė |
FVector3 | @aspose/3d | Viengubo tikslumo variantas Vector3 |
VertexElementNormal | @aspose/3d | Normalės per viršūnę arba per daugiakampio viršūnę |
VertexElementUV | @aspose/3d | Tekstūros koordinatės viršūnės elementas |
VertexElementVertexColor | @aspose/3d | Per-viršūnės spalvos viršūnės elementas |
MappingMode | @aspose/3d | Enum: CONTROL_POINT, POLYGON_VERTEX, POLYGON, ALL_SAME |
ReferenceMode | @aspose/3d | Enum: DIRECT, INDEX, INDEX_TO_DIRECT |
AnimationClip | @aspose/3d | Pavadinta animacija; atskleidžia animations: AnimationNode[]; sukurta per scene.createAnimationClip(name) |
AnimationNode | @aspose/3d | Pavadinta grupė BindPoints; sukurtas per clip.createAnimationNode(name) |
BindPoint | @aspose/3d | Susieja AnimationNode prie scenos objekto savybės; atskleidžia property ir channelsCount |
AnimationChannel | @aspose/3d | Paveldi KeyframeSequence; saugo keyframeSequence; pasiekiama per bindPoint.getChannel(name) |
KeyFrame | @aspose/3d | Vienas laiko/vertės raktinio kadro pora; neša interpolation: Interpolation |
KeyframeSequence | @aspose/3d | Surūšiuota keyFrames sąrašas; preBehavior/postBehavior yra Extrapolation objektai |
Interpolation | @aspose/3d | Enum: LINEAR, CONSTANT, BEZIER, B_SPLINE, CARDINAL_SPLINE, TCB_SPLINE |
Extrapolation | @aspose/3d | Class su type: ExtrapolationType ir repeatCount: number |
ExtrapolationType | @aspose/3d | Enum: CONSTANT, GRADIENT, CYCLE, CYCLE_RELATIVE, OSCILLATE |
ObjLoadOptions | @aspose/3d/formats/obj | OBJ importavimo parinktys: enableMaterials, flipCoordinateSystem, scale, normalizeNormal |
GltfSaveOptions | @aspose/3d/formats/gltf | glTF/GLB eksportavimo parinktys: binaryMode |
GltfFormat | @aspose/3d/formats/gltf | Formato egzempliorius glTF/GLB; perduokite į scene.save() |
StlLoadOptions | @aspose/3d/formats/stl | STL importavimo parinktys |
StlSaveOptions | @aspose/3d/formats/stl | STL eksportavimo parinktys: binaryMode |
StlImporter | @aspose/3d/formats/stl | Žemo lygio STL skaitytuvas |
StlExporter | @aspose/3d/formats/stl | Žemo lygio STL rašytojas |