Class Node
Balíček: @aspose/3d (v24.12.0)
Uzel představuje pojmenovaný prvek v hierarchii grafu scény. Každý uzel má lokální transformaci, může obsahovat podřízené uzly a nese nula nebo více Entity objektů, jako jsou sítě, kamery nebo světla.
export class Node extends SceneObjectProperties
A3DObject ← SceneObject ← Node
Properties
Vytvořte nadřazený uzel, připojte k němu dva podřízené uzly a projděte celou hierarchii podle názvu.
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
Properties
| Properties | Properties | Properties |
|---|---|---|
name | string | Název tohoto uzlu. Používá se k identifikaci uzlu v grafu scény. |
parentNode | `Node | null` |
childNodes | Node[] | Pole přímých podřízených uzlů připojených k tomuto uzlu. |
entities | Entity[] | Seznam entit (sítě, kamery, světla atd.) připojených k tomuto uzlu. |
materials | Material[] | Seznam materiálů spojených s tímto uzlem. |
transform | Transform | Lokální transformace tohoto uzlu, s translation: Vector3, rotation: Quaternion, a scaling: Vector3 komponenty. |
globalTransform | GlobalTransform | Pouze pro čtení. Transformace ve světovém prostoru, vypočtená násobením všech transformací předků až po kořen. |
visible | boolean | Zda je tento uzel a jeho podstrom vykreslován. Výchozí hodnota je true. |
excluded | boolean | Properties true, uzel a jeho podstrom jsou vyloučeny z exportu. Výchozí je false. |
entity | `Entity | undefined` |
Properties
addChildNode(node)
Přidá existující Node instanci jako přímý podřízený tohoto uzlu.
addChildNode(node: Node): voidProperties
node Node
Uzel, který se má připojit. Uzel je přeřazen z aktuálního nadřazeného uzlu na tento uzel.
Properties
void
Properties
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?)
Vytvoří nový Node, volitelně s názvem, entitou a materiálem, a přidá jej jako podřízený tomuto uzlu.
createChildNode(name?: string, entity?: Entity, material?: Material): NodeProperties
name string (volitelný)
Název nového podřízeného uzlu.
entity Entity (volitelný)
Entita, kterou připojit k novému uzlu, například Mesh instance.
material Material (volitelný)
Materiál, který se má přiřadit k novému uzlu.
Properties
Node
Nově vytvořený podřízený uzel.
Properties
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)
Vypočítá a vrátí transformační matici ve světovém prostoru pro tento uzel. Předávejte true pro zahrnutí geometrického posunu transformace uloženého v uzlu (používaného některými exportéry FBX).
evaluateGlobalTransform(withGeometricTransform: boolean): Matrix4Properties
withGeometricTransform boolean
Properties true, zahrnuje geometrickou transformaci ve výsledku.
Properties
Matrix4
4×4 matice transformace ve světovém prostoru.
Properties
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()
Vypočítá osově zarovnaný ohraničující kvádr tohoto uzlu a všech jeho potomků ve světovém prostoru.
getBoundingBox(): BoundingBoxProperties
BoundingBox
Osově zarovnaný ohraničující kvádr obklopující veškerou geometrii pod tímto uzlem.
Properties
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)
Sloučí obsah jiného uzlu (jeho entity, materiály a podřízené uzly) do tohoto uzlu a odstraní zdrojový uzel ze scény.
merge(node: Node): voidProperties
node Node
Zdrojový uzel, jehož obsah je sloučen do tohoto uzlu.
Properties
void
Properties
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}`);
}