Class Node
Paket: @aspose/3d (v24.12.0)
Čvor predstavlja imenovani element u hijerarhiji grafova scene. Svaki čvor ima lokalnu transformaciju, može sadržavati podčvorove i nosi nula ili više Entity objekata poput mreža, kamera ili svjetala.
export class Node extends SceneObjectA3DObject ← SceneObject ← Node
Stvori roditeljski čvor, prikači mu dva podčvora i prođi kroz cijelu hijerarhiju po imenu.
import { Scene, Node } from '@aspose/3d';
const scene = new Scene();
const root = scene.rootNode;
const vehicle = root.createChildNode('vehicle');
const body = vehicle.createChildNode('body');
const wheel = vehicle.createChildNode('wheel_front_left');
function traverse(node: Node, depth = 0): void {
console.log(' '.repeat(depth * 2) + node.name);
for (const child of node.childNodes) {
traverse(child, depth + 1);
}
}
traverse(root);
// Output:
// vehicle
// body
// wheel_front_left
name | string | Naziv ovog čvora. Koristi se za identifikaciju čvora unutar grafova scene. |
parentNode | `Node | null` |
childNodes | Node[] | Niz izravnih podčvorova pridruženih ovom čvoru. |
entities | Entity[] | Popis entiteta (mreža, kamera, svjetala, itd.) pridruženih ovom čvoru. |
materials | Material[] | Popis materijala povezanih s ovim čvorom. |
transform | Transform | Lokalna transformacija ovog čvora, s translation: Vector3, rotation: Quaternion, i scaling: Vector3 komponentama. |
globalTransform | GlobalTransform | Samo za čitanje. Transformacija u svjetskom prostoru, izračunata množenjem svih transformacija pretka do korijena. |
visible | boolean | Određuje hoće li se ovaj čvor i njegov podstablo renderirati. Zadano je true. |
excluded | boolean | true, čvor i njegovo podstablo su isključeni iz izvoza. Zadano je false. |
entity | `Entity | undefined` |
addChildNode(node)
Dodaje postojeći Node instancu kao izravno dijete ovog čvora.
addChildNode(node: Node): voidnode Node
Čvor koji se prikači. Čvor se premješta iz svog trenutnog roditelja u ovaj čvor.
void
import { Scene, Node } from '@aspose/3d';
const scene = new Scene();
const parent = scene.rootNode.createChildNode('parent');
const child = new Node('child');
parent.addChildNode(child);
console.log(`Children of parent: ${parent.childNodes.length}`); // 1
createChildNode(name?, entity?, material?)
Stvara novi Node, opcionalno s imenom, entitetom i materijalom, i dodaje ga kao dijete ovog čvora.
createChildNode(name?: string, entity?: Entity, material?: Material): Nodename string (opcionalno)
Ime za novi podčvor.
entity Entity (opcionalno)
Entitet za pričvršćivanje na novi čvor, na primjer Mesh instanca.
material Material (opcionalno)
Materijal koji se povezuje s novim čvorom.
Node
Novi stvoreni podčvor.
import { Scene } from '@aspose/3d';
import { Mesh } from '@aspose/3d/entities';
const scene = new Scene();
const mesh = new Mesh();
// ... populate mesh ...
const meshNode = scene.rootNode.createChildNode('geometry', mesh);
console.log(`Node name: ${meshNode.name}`);
console.log(`Entities attached: ${meshNode.entities.length}`);evaluateGlobalTransform(withGeometricTransform)
Izračunava i vraća matricu transformacije u svjetskom prostoru za ovaj čvor. Proslijedite true za uključivanje geometrijskog pomaka transformacije pohranjenog na čvoru (koristi ga neki FBX izvoznici).
evaluateGlobalTransform(withGeometricTransform: boolean): Matrix4withGeometricTransform boolean
true, uključuje geometrijsku transformaciju u rezultat.Matrix4
4×4 matrica transformacije u svjetskom prostoru.
import { Scene } from '@aspose/3d';
const scene = new Scene();
scene.open('model.fbx');
const node = scene.rootNode.childNodes[0];
const matrix = node.evaluateGlobalTransform(false);
console.log('World transform matrix computed.');getBoundingBox()
Izračunava osi‑poravnati okvir (bounding box) ovog čvora i svih njegovih potomaka u svjetskom prostoru.
getBoundingBox(): BoundingBoxBoundingBox
Osno poravnati okvir (bounding box) koji obuhvaća svu geometriju ispod ovog čvora.
import { Scene } from '@aspose/3d';
const scene = new Scene();
scene.open('model.obj');
const bbox = scene.rootNode.getBoundingBox();
console.log(`Min: ${JSON.stringify(bbox.minimum)}`);
console.log(`Max: ${JSON.stringify(bbox.maximum)}`);merge(node)
Spaja sadržaj drugog čvora (njegove entitete, materijale i podčvorove) u ovaj čvor i uklanja izvorni čvor iz scene.
merge(node: Node): voidnode Node
Izvorni node čiji se sadržaj spaja u ovaj node.
void
import { Scene } from '@aspose/3d';
const scene = new Scene();
scene.open('multi_part.fbx');
const root = scene.rootNode;
if (root.childNodes.length >= 2) {
root.childNodes[0].merge(root.childNodes[1]);
console.log(`Children after merge: ${root.childNodes.length}`);
}