Class Node
Pakke: @aspose/3d (v24.12.0)
Node repræsenterer et navngivet element i scenegrafens hierarki. Hver node har en lokal transformation, kan indeholde underordnede noder og bærer nul eller flere Entity objekter såsom mesh’er, kameraer eller lys.
export class Node extends SceneObjectA3DObject ← SceneObject ← Node
Opret en overordnet node, tilknyt to underordnede noder til den, og gennemløb hele hierarkiet efter navn.
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 | Navnet på denne node. Bruges til at identificere noden inden for scenegrafen. |
parentNode | `Node | null` |
childNodes | Node[] | Et array af direkte underordnede noder knyttet til denne node. |
entities | Entity[] | Listen over enheder (mesh’er, kameraer, lys osv.) knyttet til denne node. |
materials | Material[] | Listen over materialer, der er tilknyttet denne node. |
transform | Transform | Den lokale transformation af denne node, med translation: Vector3, rotation: Quaternion, og scaling: Vector3 komponenter. |
globalTransform | GlobalTransform | Skrivebeskyttet. Verdensrumstransformationen, beregnet ved at multiplicere alle forfædres transformationer op til roden. |
visible | boolean | Om denne node og dens undertræ er gengivet. Standard er true. |
excluded | boolean | true, noden og dens undertræ er udelukket fra eksport. Standard er false. |
entity | `Entity | undefined` |
addChildNode(node)
Tilføjer en eksisterende Node instans som et direkte barn af denne node.
addChildNode(node: Node): voidnode Node
Noden der skal tilknyttes. Noden flyttes fra sin nuværende forælder til denne node.
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?)
Opretter en ny Node, eventuelt med et navn, en entitet og et materiale, og tilføjer den som et barn af denne node.
createChildNode(name?: string, entity?: Entity, material?: Material): Nodename string (valgfri)
Navnet på den nye underordnede node.
entity Entity (valgfri)
En entitet, der skal vedhæftes den nye node, for eksempel en Mesh instans.
material Material (valgfri)
Et materiale, der skal knyttes til den nye node.
Node
Den nyoprettede undernode.
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)
Beregner og returnerer transformationsmatricen i verdensrum for denne node. Angiv true for at inkludere den geometriske transformationsforskydning, der er gemt på noden (brugt af nogle FBX-eksportører).
evaluateGlobalTransform(withGeometricTransform: boolean): Matrix4withGeometricTransform boolean
true, inkluderer den geometriske transform i resultatet.Matrix4
Den 4×4 transformationsmatrix i verdensrummet.
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()
Beregner den aksejusterede begrænsningsboks for denne node og alle dens efterkommere i verdensrummet.
getBoundingBox(): BoundingBoxBoundingBox
Den aksejusterede begrænsningsboks, der omslutter al geometri under denne node.
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)
Fletter indholdet af en anden node (dens enheder, materialer og undernoder) ind i denne node og fjerner kilde‑noden fra scenen.
merge(node: Node): voidnode Node
Kildeknuden, hvis indhold er flettet ind i denne 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}`);
}