Class Node

Пакет: @aspose/3d (v24.12.0)

Възелът представлява именуван елемент в йерархията на графа на сцената. Всеки възел има локална трансформация, може да съдържа дъщерни възли и носи нула или повече Entity обекти като мрежи, камери или светлини.

export class Node extends SceneObject

Examples

A3DObject ← SceneObject ← Node

Examples

Създайте родителски възел, прикрепете към него два дъщерни възела и обходете цялата йерархия по име.

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

Examples

ExamplesExamplesExamples
namestringИмето на този възел. Използва се за идентифициране на възела в графа на сцената.
parentNode`Nodenull`
childNodesNode[]Масив от директни дъщерни възли, прикрепени към този възел.
entitiesEntity[]Списъкът с обекти (мрежи, камери, светлини и др.), прикрепени към този възел.
materialsMaterial[]Списъкът с материали, свързани с този възел.
transformTransformЛокалната трансформация на този възел, с translation: Vector3, rotation: Quaternion, и scaling: Vector3 компоненти.
globalTransformGlobalTransformСамо за четене. Трансформацията в световното пространство, изчислена чрез умножаване на всички трансформации на предците до корена.
visiblebooleanДали този възел и неговото поддърво се рендерират. По подразбиране е true.
excludedbooleanExamples true, възелът и неговото поддърво са изключени от експорта. По подразбиране е false.
entity`Entityundefined`

Examples

addChildNode(node)

Добавя съществуващ Node екземпляр като директно дете на този възел.

addChildNode(node: Node): void

Examples

node Node

Възелът, който да се прикрепи. Възелът се премествa от текущия си родител към този възел.

Examples

void

Examples

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?)

Създава нов Node, по желание с име, обект и материал, и го добавя като дете на този възел.

createChildNode(name?: string, entity?: Entity, material?: Material): Node

Examples

name string (по избор)

Името за новия дъщерен възел.

entity Entity (по избор)

Обект за прикрепване към новия възел, например Mesh екземпляр.

material Material (по избор)

Материал, който да се асоциира с новия възел.

Examples

Node

Новосъздаденият дъщерен възел.

Examples

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)

Изчислява и връща матрицата за трансформация в световното пространство за този възел. Предайте true за включване на геометричното трансформационно отместване, съхранено в възела (използвано от някои FBX експортери).

evaluateGlobalTransform(withGeometricTransform: boolean): Matrix4

Examples

withGeometricTransform boolean

Examples true, включва геометричната трансформация в резултата.

Examples

Matrix4

4×4 матрица за трансформация в световното пространство.

Examples

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()

Изчислява осево-ориентираната ограничителна кутия на този възел и всички негови наследници в световното пространство.

getBoundingBox(): BoundingBox

Examples

BoundingBox

Осево-ориентираната ограничителна кутия, обхващаща цялата геометрия под този възел.

Examples

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)

Обединява съдържанието на друг възел (неговите обекти, материали и деца) в този възел и премахва изходния възел от сцената.

merge(node: Node): void

Examples

node Node

Изходният възел, чийто съдържание се слива в този възел.

Examples

void

Examples

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}`);
}
 Български