Transform

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

Transform valdo objekto padėtį, orientaciją ir mastelį Node 3D scenoje. Kiekvienas mazgas turi lygiai vieną Transform, pasiekiamą per node.transform.

class Transform(A3DObject):

Mazgo Transform pasiekimas

from aspose.threed import Scene

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

Methods

MethodsMethodsMethods
translationVector3Padėties poslinkis nuo tėvo mazgo pradžios. Numatyta Vector3(0, 0, 0).
scalingVector3Nelygiškas mastelio koeficientas per ašį. Numatyta Vector3(1, 1, 1).
rotationQuaternionSukimas kaip vienetinis kvaternionas. Nustatant tai taip pat atnaujinama euler_angles.
euler_anglesVector3Sukimas laipsniais kaip (X, Y, Z) Eulerio kampai. Nustatant tai taip pat atnaujinama rotation.
pre_rotationVector3Eulerio kampai, taikomi prieš pagrindinį sukimą (naudojami FBX rig’uose).
post_rotationVector3Eulerio kampai, taikomi po pagrindinio sukimo.
geometric_translationVector3Tik vietinis perkėlimas: veikia geometriją, bet ne vaikų mazgus.
geometric_scalingVector3Tik vietinis mastelis: veikia geometriją, bet ne vaikų mazgus.
geometric_rotationVector3Tik vietinis sukimas: veikia geometriją, bet ne vaikų mazgus.
transform_matrixMatrix4Visas sujungtas 4×4 transformacijos matricos. Talpinama podėlyje; perskaičiuojama, kai bet kuris komponentas pasikeičia. Nustatant ją, ji išskaidoma atgal į perkėlimą/mastelį/sukimą.

Sklandūs nustatymo metodai

Visi nustatymo metodai grąžina self, leidžiant grandinti:

MethodsMethodsMethods
set_translation(tx, ty, tz)float, float, floatNustatyti poziciją.
set_scale(sx, sy, sz)float, float, floatNustatyti mastelį.
set_euler_angles(rx, ry, rz)float, float, floatNustatyti sukimo kampą laipsniais.
set_rotation(rw, rx, ry, rz)float, float, float, floatNustatyti sukimą kaip kvaternioną (w, x, y, z).
set_pre_rotation(rx, ry, rz)float, float, floatNustatykite priešrotaciją laipsniais.
set_post_rotation(rx, ry, rz)float, float, floatNustatykite po rotaciją laipsniais.
set_geometric_translation(x, y, z)float, float, floatNustatykite geometrinį perkėlimą.
set_geometric_scaling(sx, sy, sz)float, float, floatNustatykite geometrinį mastelį.
set_geometric_rotation(rx, ry, rz)float, float, floatNustatykite geometrinę rotaciją laipsniais.

Naudojimo pavyzdžiai

Nustatyti mazgo poziciją

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)

Pasukti naudojant Eulerio kampus

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)

Pasukti naudojant kvaternioną

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

Mastelis ir pozicija kartu

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))

Geometrinis poslinkis (Pivot poslinkis)

Geometriniai transformavimai perkelia geometriją santykinai su mazgo pivotu nepaveikdami vaikų mazgų; naudinga centruoti tinklelį jo mazge:

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)

Skaityti sujungtą Transformacijos matricą

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'>

Žr. taip pat

 Lietuvių