Class Node
الحزمة: @aspose/3d (v24.12.0)
العقدة تمثل عنصرًا مسمىً في تسلسل هرمي لرسم المشهد. كل عقدة لها تحويل محلي، يمكنها احتواء عقد فرعية، وتحمل صفر أو أكثر Entity كائنات مثل الشبكات، الكاميرات، أو الأضواء.
export class Node extends SceneObjectProperties
A3DObject ← SceneObject ← Node
Properties
أنشئ عقدة أصلية، أرفق عقدتين فرعيتين بها، وتصفح التسلسل الهرمي الكامل حسب الاسم.
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 | اسم هذه العقدة. يُستخدم لتحديد العقدة داخل رسم المشهد. |
parentNode | `Node | null` |
childNodes | Node[] | مصفوفة من العقد الفرعية المباشرة المرتبطة بهذه العقدة. |
entities | Entity[] | قائمة الكيانات (الشبكات، الكاميرات، الأضواء، إلخ) المرتبطة بهذه العقدة. |
materials | Material[] | قائمة المواد المرتبطة بهذه العقدة. |
transform | Transform | التحويل المحلي لهذه العقدة، مع translation: Vector3, rotation: Quaternion,، و scaling: Vector3 المكوّنات. |
globalTransform | GlobalTransform | للقراءة فقط. تحويل الفضاء العالمي، يُحسب بضرب جميع تحويلات الأسلاف حتى الجذر. |
visible | boolean | ما إذا كانت هذه العقدة وشجرتها الفرعية مُعروضة. القيمة الافتراضية هي true. |
excluded | boolean | Properties true,، تُستبعد العقدة وشجرتها الفرعية من التصدير. القيمة الافتراضية هي false. |
entity | `Entity | undefined` |
Properties
addChildNode(node)
يضيف موجودًا Node مثيلًا كطفل مباشر لهذه العقدة.
addChildNode(node: Node): voidProperties
node Node
العقدة المراد إرفاقها. يتم إعادة توطين العقدة من والدها الحالي إلى هذه العقدة.
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?)
يُنشئ جديدًا Node, اختياريًا باسم، كيان، ومادة، ويضيفه كطفل لهذه العقدة.
createChildNode(name?: string, entity?: Entity, material?: Material): NodeProperties
name string (اختياري)
الاسم للعقدة الفرعية الجديدة.
entity Entity (اختياري)
كيان لتوصيله بالعقدة الجديدة، مثلاً a Mesh مثيل.
material Material (اختياري)
مادة لربطها بالعقدة الجديدة.
Properties
Node
العقدة الفرعية التي تم إنشاؤها حديثًا.
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)
يحسب ويعيد مصفوفة التحويل في الفضاء العالمي لهذه العقدة. مرّر true لتضمين إزاحة التحويل الهندسي المخزنة على العقدة (يُستخدم من قبل بعض مُصدِّري FBX).
evaluateGlobalTransform(withGeometricTransform: boolean): Matrix4Properties
withGeometricTransform boolean
Properties true, يتضمن التحويل الهندسي في النتيجة.
Properties
Matrix4
مصفوفة التحويل في الفضاء العالمي بحجم 4×4.
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()
يحسب صندوق الحد المحاذي للمحاور لهذه العقدة وجميع الفروع التابعة لها في الفضاء العالمي.
getBoundingBox(): BoundingBoxProperties
BoundingBox
صندوق الحد المحاذي للمحاور الذي يحيط بجميع الهندسة تحت هذه العقدة.
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)
يدمج محتوى عقدة أخرى (كياناتها، موادها، وأطفالها) في هذه العقدة ويزيل العقدة المصدر من المشهد.
merge(node: Node): voidProperties
node Node
العقدة المصدر التي يتم دمج محتواها في هذه العقدة.
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}`);
}