Transform

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

Transform bir nesnenin konumunu, yönelimini ve ölçeğini kontrol eder Node 3D sahnesinde. Her düğüm tam olarak bir Transform, şu aracılığıyla erişilir node.transform.

class Transform(A3DObject):

Bir Düğümün Transform’una Erişme

from aspose.threed import Scene

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

Methods

MethodsMethodsMethods
translationVector3Pozisyon ofseti, üst düğümün orijinalinden. Varsayılan Vector3(0, 0, 0).
scalingVector3Eksen başına tekdüze olmayan ölçek faktörü. Varsayılan Vector3(1, 1, 1).
rotationQuaternionDönüşüm bir birim kuaterniyon olarak. Bunu ayarlamak aynı zamanda günceller euler_angles.
euler_anglesVector3Dönüşüm dereceler cinsinden (X, Y, Z) Euler açıları olarak. Bunu ayarlamak aynı zamanda günceller rotation.
pre_rotationVector3Ana dönüşümden önce uygulanan Euler açıları (FBX rig’lerinde kullanılır).
post_rotationVector3Ana dönüşümden sonra uygulanan Euler açıları.
geometric_translationVector3Yalnızca yerel çeviri: geometriyi etkiler ancak alt düğümleri etkilemez.
geometric_scalingVector3Yalnızca yerel ölçek: geometriyi etkiler ancak alt düğümleri etkilemez.
geometric_rotationVector3Yalnızca yerel dönüşüm: geometriyi etkiler ancak alt düğümleri etkilemez.
transform_matrixMatrix4Tam birleşik 4×4 dönüşüm matrisi. Önbelleğe alınır; herhangi bir bileşen değiştiğinde yeniden hesaplanır. Bunu ayarlamak çeviriyi/ölçeği/dönüşümü geri ayrıştırır.

Akıcı Ayarlayıcı Metotlar

Tüm ayarlayıcılar döndürür self, zincirleme yapmayı sağlar:

MethodsMethodsMethods
set_translation(tx, ty, tz)float, float, floatKonumu ayarla.
set_scale(sx, sy, sz)float, float, floatÖlçeği ayarla.
set_euler_angles(rx, ry, rz)float, float, floatDöndürmeyi derece cinsinden ayarla.
set_rotation(rw, rx, ry, rz)float, float, float, floatDöndürmeyi bir quaternion olarak ayarla (w, x, y, z).
set_pre_rotation(rx, ry, rz)float, float, floatÖnişlem döndürmesini derece cinsinden ayarlayın.
set_post_rotation(rx, ry, rz)float, float, floatSon işlem döndürmesini derece cinsinden ayarlayın.
set_geometric_translation(x, y, z)float, float, floatGeometrik çeviriyi ayarlayın.
set_geometric_scaling(sx, sy, sz)float, float, floatGeometrik ölçeği ayarlayın.
set_geometric_rotation(rx, ry, rz)float, float, floatGeometrik döndürmeyi derece cinsinden ayarlayın.

Kullanım Örnekleri

Bir Düğümü Konumlandırma

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)

Euler Açılarla Döndürme

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)

Kuantör ile Döndürme

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

Ölçek ve Konumu Birlikte Ayarlama

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

Geometrik Ofset (Pivot Ofseti)

Geometrik dönüşümler, çocuğu düğümleri etkilemeden geometrinin düğümün pivotuna göre konumunu değiştirir; bir ağın düğüm içinde ortalanması için faydalıdır:

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)

Birleştirilmiş Transform Matrisini Okuma

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

Ayrıca Bakınız

 Türkçe