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 objectMethods
| Methods | Methods | Methods |
|---|---|---|
translation | Vector3 | جابهجایی موقعیت نسبت به مبدأ گرهٔ والد. پیشفرض Vector3(0, 0, 0). |
scaling | Vector3 | ضریب مقیاس غیر یکنواخت برای هر محور. پیشفرض Vector3(1, 1, 1). |
rotation | Quaternion | چرخش به صورت یک کواترنیون واحد. تنظیم این مقدار همچنین بهروزرسانی میکند euler_angles. |
euler_angles | Vector3 | چرخش به درجه به صورت زوایای اویلر (X, Y, Z). تنظیم این مقدار همچنین بهروزرسانی میکند rotation. |
pre_rotation | Vector3 | زاوایای اویلر که قبل از چرخش اصلی اعمال میشوند (در rigهای FBX استفاده میشود). |
post_rotation | Vector3 | زاوایای اویلر که پس از چرخش اصلی اعمال میشوند. |
geometric_translation | Vector3 | ترجمهٔ فقط محلی: بر هندسه تأثیر میگذارد اما بر گرههای فرزند تأثیری ندارد. |
geometric_scaling | Vector3 | مقیاس فقط محلی: بر هندسه تأثیر میگذارد اما بر گرههای فرزند تأثیری ندارد. |
geometric_rotation | Vector3 | چرخش فقط محلی: بر هندسه تأثیر میگذارد اما بر گرههای فرزند تأثیری ندارد. |
transform_matrix | Matrix4 | ماتریس تبدیل ترکیبی کامل ۴×۴. کش شده؛ هنگام تغییر هر مؤلفه دوباره محاسبه میشود. تنظیم آن بهصورت خودکار به ترجمه/مقیاس/چرخش تجزیه میشود. |
متدهای تنظیمکنندهٔ زنجیرهای
همهٔ setterها مقدار باز میگردانند self,، که امکان زنجیرهسازی را میدهد:
| Methods | Methods | Methods |
|---|---|---|
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)چرخش با یک کواترنیون
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))جابهجایی هندسی (جابهجایی نقطهٔ محوری)
تبدیلهای هندسی، هندسه را نسبت به نقطهٔ محوری گره جابهجا میکنند بدون اینکه بر گرههای فرزند تأثیر بگذارند؛ برای مرکز کردن یک مش داخل گرهٔ خود مفید است:
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'>