Transform

Methods: aspose.threed (aspose-3d-foss)

Transform يتحكم في الموضع والاتجاه والقياس ل Node في المشهد ثلاثي الأبعاد. كل عقدة لديها بالضبط واحدة Transform,، يتم الوصول إليه عبر node.transform.

class Transform(A3DObject):

الوصول إلى Transform الخاص بالعقدة

from aspose.threed import Scene

scene = Scene()
node = scene.root_node.create_child_node("box")
t = node.transform     # Transform object

Methods

MethodsMethodsMethods
translationVector3إزاحة الموضع من أصل العقدة الأصلية. الافتراضي Vector3(0, 0, 0).
scalingVector3عامل قياس غير متساوٍ لكل محور. الافتراضي Vector3(1, 1, 1).
rotationQuaternionالدوران ككواترنيون موحد. ضبط هذا أيضًا يحدث euler_angles.
euler_anglesVector3الدوران بالدرجات كزوايا أويلر (X, Y, Z). ضبط هذا أيضًا يحدث rotation.
pre_rotationVector3زوايا أويلر تُطبق قبل الدوران الرئيسي (تُستخدم في تركيبات FBX).
post_rotationVector3زوايا أويلر تُطبق بعد الدوران الرئيسي.
geometric_translationVector3الترجمة محلية فقط: تؤثر على الهندسة ولكن ليس على العقد الفرعية.
geometric_scalingVector3التحجيم محلي فقط: يؤثر على الهندسة ولكن ليس على العقد الفرعية.
geometric_rotationVector3الدوران محلي فقط: يؤثر على الهندسة ولكن ليس على العقد الفرعية.
transform_matrixMatrix4مصفوفة التحويل 4×4 المدمجة بالكامل. مخزنة مؤقتًا؛ تُعاد حسابها عندما يتغير أي مكوّن. ضبطها يؤدي إلى تفكيكها مرة أخرى إلى translation/scaling/rotation.

طرق الضبط المتسلسلة

جميع الـ setters تُعيد self, مما يتيح السلسلة:

MethodsMethodsMethods
set_translation(tx, ty, tz)float, float, floatتعيين الموضع.
set_scale(sx, sy, sz)float, float, floatتعيين التحجيم.
set_euler_angles(rx, ry, rz)float, float, floatتعيين الدوران بالدرجات.
set_rotation(rw, rx, ry, rz)float, float, float, floatتعيين الدوران ككواترنيون (w, x, y, z).
set_pre_rotation(rx, ry, rz)float, float, floatاضبط ما قبل الدوران بالدرجات.
set_post_rotation(rx, ry, rz)float, float, floatاضبط ما بعد الدوران بالدرجات.
set_geometric_translation(x, y, z)float, float, floatاضبط الإزاحة الهندسية.
set_geometric_scaling(sx, sy, sz)float, float, floatاضبط المقياس الهندسي.
set_geometric_rotation(rx, ry, rz)float, float, floatاضبط الدوران الهندسي بالدرجات.

أمثلة الاستخدام

تحديد موضع العقدة

from aspose.threed import Scene

scene = Scene()
node = scene.root_node.create_child_node("box")

# Using fluent setters
node.transform.set_translation(5.0, 0.0, -3.0)

# Or via property assignment
from aspose.threed.utilities import Vector3
node.transform.translation = Vector3(5.0, 0.0, -3.0)

تدوير باستخدام زوايا أويلر

from aspose.threed import Scene

scene = Scene()
node = scene.root_node.create_child_node("rotated")

# Rotate 45° around Y axis
node.transform.set_euler_angles(0.0, 45.0, 0.0)

# Chain multiple operations
node.transform.set_translation(2.0, 0.0, 0.0).set_scale(2.0, 2.0, 2.0)

تدوير باستخدام Quaternion

from aspose.threed import Scene
from aspose.threed.utilities import Quaternion, Vector3
import math

scene = Scene()
node = scene.root_node.create_child_node("q-rotated")

# 90° rotation around the Y axis
half_angle = math.radians(45)   # half the total rotation
q = Quaternion(math.cos(half_angle), 0.0, math.sin(half_angle), 0.0)
node.transform.rotation = q

print(f"Euler: {node.transform.euler_angles}")   # synced automatically

التحجيم والموضع معًا

from aspose.threed import Scene

scene = Scene()
node = scene.root_node.create_child_node("big-offset")

(node.transform
    .set_translation(10.0, 0.0, 0.0)
    .set_scale(3.0, 3.0, 3.0)
    .set_euler_angles(0.0, 90.0, 0.0))

الإزاحة الهندسية (Pivot Offset)

تحولات الهندسة تُحرك الهندسة بالنسبة إلى محور العقدة دون التأثير على العقد الفرعية؛ مفيدة لتوسيط شبكة داخل عقدتها:

from aspose.threed import Scene

scene = Scene()
node = scene.root_node.create_child_node("centered-mesh")

# Shift the mesh half a unit down so its base sits at y=0
node.transform.set_geometric_translation(0.0, -0.5, 0.0)

قراءة مصفوفة Transform المدمجة

from aspose.threed import Scene

scene = Scene()
node = scene.root_node.create_child_node("m")
node.transform.set_translation(1.0, 2.0, 3.0).set_euler_angles(0.0, 45.0, 0.0)

m = node.transform.transform_matrix
print(type(m))  # <class 'aspose.threed.utilities.Matrix4'>

انظر أيضًا

 العربية