Node
Пакет: @aspose/3d (v24.12.0)
Узел представляет собой именованный элемент в иерархии графа сцены. Каждый узел имеет локальное преобразование, может содержать дочерние узлы и несёт ноль или более Entity объектов, таких как сетки, камеры или источники света.
export class Node extends SceneObjectImageRenderOptions
A3DObject ← SceneObject ← Node
ImageRenderOptions
Создайте родительский узел, присоедините к нему два дочерних узла и пройдите по полной иерархии по имени.
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
ImageRenderOptions
| Name | Type | Access | Description |
|---|---|---|---|
parentNode | `Node | null` | Read/Write |
childNodes | Node[] | Read | Gets the child nodes. |
entities | Entity[] | Read | Gets the entities. |
entity | `Entity | undefined` | Read/Write |
materials | Material[] | Read | Gets the materials. |
material | `Material | null` | Read/Write |
transform | Transform | Read | Gets the transform. |
globalTransform | GlobalTransform | Read | Gets the global transform. |
visible | boolean | Read/Write | Gets the visible. |
excluded | boolean | Read/Write | Gets the excluded. |
assetInfo | any | Read/Write | Gets the asset info. |
metaDatas | any[] | Read | Gets the meta datas. |
| Signature | Description |
|---|---|
constructor(name: string, entity: Entity) | Creates a node with the specified name and initial entity |
addEntity(entity: Entity) | Attaches the given entity to the node’s entity collection |
removeEntity(entity: Entity) | Detaches the specified entity from the node |
clearEntities() | Removes all entities from the node |
addChildNode(node: Node) | Adds an existing node as a child of this node |
createChildNode(nodeName: string, entity: Entity, material: Material) → Node | Creates a new child node with name, entity, and material, and returns it |
| `getChild(indexOrName: number | string) → Node |
merge(node: Node) | Incorporates the contents of another node into this node |
evaluateGlobalTransform(withGeometricTransform: boolean) → Matrix4 | Computes the node’s global transform matrix, optionally including geometric transform |
getBoundingBox() → BoundingBox | Returns the bounding box. |
selectSingleObject(_path: string) → any | Not implemented in the FOSS edition — throws at runtime. Selects a single object in the node hierarchy using the provided path |
selectObjects(_path: string) → any[] | Not implemented in the FOSS edition — throws at runtime. Selects all objects matching the given path and returns them as an array |
toString() → string |
ImageRenderOptions
addChildNode(node)
Добавляет существующий Node экземпляр в качестве прямого дочернего элемента этого узла.
addChildNode(node: Node): voidImageRenderOptions
node Node
Узел для присоединения. Узел переопределяется от своего текущего родителя к этому узлу.
ImageRenderOptions
void
ImageRenderOptions
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`, при желании с именем, сущностью и материалом, и добавляет его как дочерний элемент этого узла.
```typescript
createChildNode(name?: string, entity?: Entity, material?: Material): NodeImageRenderOptions
name string (необязательно)
Имя нового дочернего узла.
entity Entity (необязательно)
Сущность, которую нужно присоединить к новому узлу, например a Mesh экземпляр.
material Material (необязательно)
Материал, который следует связать с новым узлом.
ImageRenderOptions
Node
Новосозданный дочерний узел.
ImageRenderOptions
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): Matrix4ImageRenderOptions
withGeometricTransform boolean
ImageRenderOptions true, включает геометрическое преобразование в результат.
ImageRenderOptions
Matrix4
4×4 матрица трансформации в мировом пространстве.
ImageRenderOptions
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(): BoundingBoxImageRenderOptions
BoundingBox
Ограничивающий параллелепипед, выровненный по осям, охватывающий всю геометрию под этим узлом.
ImageRenderOptions
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)
Объединяет содержимое другого узла (его сущности, материалы и дочерние узлы) с этим узлом и удаляет исходный узел из сцены.
```typescript
merge(node: Node): voidImageRenderOptions
node Node
Исходный узел, содержимое которого объединяется с этим узлом.
ImageRenderOptions
void
ImageRenderOptions
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});
}