Class Node
패키지: @aspose/3d (v24.12.0)
Node는 씬 그래프 계층 구조에서 이름이 지정된 요소를 나타냅니다. 각 노드는 로컬 변환을 가지고 있으며, 자식 노드를 보유할 수 있고, 하나 이상 또는 전혀 없는 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
| ImageRenderOptions | ImageRenderOptions | ImageRenderOptions |
|---|---|---|
name | string | 이 노드의 이름입니다. 씬 그래프 내에서 노드를 식별하는 데 사용됩니다. |
parentNode | `Node | null` |
childNodes | Node[] | 이 노드에 연결된 직접 자식 노드들의 배열입니다. |
entities | Entity[] | 이 노드에 연결된 엔터티(메시, 카메라, 조명 등)의 목록입니다. |
materials | Material[] | 이 노드와 연관된 재질 목록입니다. |
transform | Transform | 이 노드의 로컬 변환이며, translation: Vector3, rotation: Quaternion, 및 scaling: Vector3 구성 요소들. |
globalTransform | GlobalTransform | 읽기 전용. 루트까지 모든 조상 변환을 곱하여 계산된 월드 공간 변환입니다. |
visible | boolean | 이 노드와 그 하위 트리가 렌더링되는지 여부. 기본값은 true. |
excluded | boolean | ImageRenderOptions true, 해당 노드와 그 하위 트리는 내보내기에서 제외됩니다. 기본값은 false. |
entity | `Entity | undefined` |
ImageRenderOptions
addChildNode(node)
기존 항목을 추가합니다. Node instance를 이 노드의 직접 자식으로 추가합니다.
addChildNode(node: Node): voidImageRenderOptions
node Node
첨부할 노드입니다. 해당 노드는 현재 부모로부터 이 노드로 재부모화됩니다.
ImageRenderOptions
void
ImageRenderOptions
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, 선택적으로 이름, entity, material을 지정하고, 이를 이 노드의 자식으로 추가합니다.
createChildNode(name?: string, entity?: Entity, material?: Material): NodeImageRenderOptions
name string (옵션)
새로운 자식 노드의 이름입니다.
entity Entity (옵션)
새 노드에 연결할 entity, 예를 들어 Mesh instance.
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)
이 노드에 대한 월드-스페이스 변환 행렬을 계산하고 반환합니다. Pass 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
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): voidImageRenderOptions
node Node
이 노드에 내용이 병합되는 소스 노드.
ImageRenderOptions
void
ImageRenderOptions
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}`);
}