Szincir işlemleri ile dönüşüm matrisinin oluşturulmasını içerir
TransformBuilder
sınıfını sunar.
Varsayalım, bir TransformBuilder
örneği varTbVe zincir işlemleri:
Python
import aspose.threed as a3d
# Change the (x, y, z) into (x + 1, y, z)
tb = a3d.utilities.TransformBuilder(a3d.utilities.ComposeOrder.APPEND)
a = tb.translate(1, 0, 0)
# Rotate alone with the Y axis with 180 deg will change the (x, y, z) into (-x, y, -z)
.rotate_euler_degree(0, 180, 0)
# Scale by 2 will change the (x, y, z) into (2x, 2y, 2z)
.scale(2)
# change the (x, y, z) into (z, y, x)
.rearrange(a3d.Axis.Z_AXIS, a3d.Axis.Y_AXIS, a3d.Axis.X_AXIS)
.matrix
If bu örneğin oluştur sırası Prepend, son matris soldan sağa hesaplanır, bu da son dönüşüm matrisinin bu görevleri yapacağı anlamına gelir:
- (X, y, z) içine (x 1, y, z)
- 180180deg ile Y ekseni ile tek başına (x, y, z) (-x, y, -z)
- Scale 2 ile (x, y, z) (2x, 2y, 2z) olarak değişecek
- Change (x, y, z) içine (z, y, x)
Compose ut sipariş Append ise, sipariş aşağıdaki gibi tersine çevrilecektir:
- Change (x, y, z) içine (z, y, x)
- Scale 2 ile (x, y, z) (2x, 2y, 2z) olarak değişecek
- 180180deg ile Y ekseni ile tek başına (x, y, z) (-x, y, -z)
- (X, y, z) içine (x 1, y, z)
Python
import aspose.threed as a3d
# use prepend order so the calculation is performed from left to right:
m = (a3d.utilities.TransformBuilder(a3d.utilities.ComposeOrder.PREPEND))
# Change the (x, y, z) into (x + 1, y, z)
.translate(1, 0, 0)
# Rotate alone with the Y axis with 180deg will change the (x, y, z) into (-x, y, -z)
.rotate_euler_degree(0, 180, 0)
# Scale by 2 will change the (x, y, z) into (2x, 2y, 2z)
.scale(2)
# change the (x, y, z) into (z, y, x)
.rearrange(a3d.Axis.Z_AXIS, a3d.Axis.Y_AXIS, a3d.Axis.X_AXIS)
.matrix
# Apply this matrix on a (0, 0, 0) vector, then we get the right result (0, 0, -2)
t = m * a3d.utilities.Vector3.ORIGIN;
Matrix4
ve TransformBuilder
sınıflarındaki yeni eklenen yöntemler, geliştiricilerin sahneyi programa göre modellemesi için yardımcı programlardır, bu nedenle dönüşüm matrisini manuel olarak oluşturmalarına gerek yoktur, bu genellikle uzman geliştiriciler tarafından kullanılır.
Ordinal developers can use the Transform
property of class Node
to change the translation/scaling/rotation of an object.
Developers can also assign the matrix created by TransformBuilder
to Node.Transform
.
Dönüşüm matrisi hakkında daha fazla bilgi vikipedi Transformation matrisi ve Affine Transofrmation adresinde bulunabilir.