Difference between revisions of "IC Python API:RLPy RTransform"

From Reallusion Wiki!
Jump to: navigation, search
m
m
Line 5: Line 5:
 
== Description ==
 
== Description ==
  
This class represent the transform data of RTransform. This class provides access to RLPy's internal 4x4 matrix operators and related functions.
+
This class represent the object transform data. This class provides access to RLPy's internal 4x4 matrix operators and related functions.
  
See also: [https://wiki.reallusion.com/IC_Python_API:RLPy_RMatrix4 RLPy.RMatrix4()]
+
See also: [[IC_Python_API:RLPy_RMatrix4|RMatrix4]]
  
 
== Operators ==
 
== Operators ==
Line 15: Line 15:
 
The "addition" operator.
 
The "addition" operator.
  
<syntaxhighlight lang="Python">
+
See Also: [[#+=|+=]]
 +
 
 +
<syntaxhighlight lang="python">
 
matrix_a = RLPy.RMatrix4( 2, 0, 0, 0,
 
matrix_a = RLPy.RMatrix4( 2, 0, 0, 0,
 
                           0, 2, 0, 0,
 
                           0, 2, 0, 0,
Line 38: Line 40:
 
The "equal to" operator.
 
The "equal to" operator.
  
<syntaxhighlight lang="Python">
+
See Also: [[#!=|!=]]
 +
 
 +
<syntaxhighlight lang="python">
 
transform_identity = RLPy.RTransform(RLPy.RTransform.IDENTITY)
 
transform_identity = RLPy.RTransform(RLPy.RTransform.IDENTITY)
 
print( transform_identity == transform_identity ) # true
 
print( transform_identity == transform_identity ) # true
Line 47: Line 51:
 
The "not equal to" operator.
 
The "not equal to" operator.
  
<syntaxhighlight lang="Python">
+
See Also: [[#==|==]]
 +
 
 +
<syntaxhighlight lang="python">
 
transform_identity = RLPy.RTransform(RLPy.RTransform.IDENTITY)
 
transform_identity = RLPy.RTransform(RLPy.RTransform.IDENTITY)
 
print( transform_identity != transform_identity ) # false
 
print( transform_identity != transform_identity ) # false
Line 56: Line 62:
 
The "addition assignment" operator.
 
The "addition assignment" operator.
  
<syntaxhighlight lang="Python">
+
See Also: [[#+|+]]
 +
 
 +
<syntaxhighlight lang="python">
 
matrix_a = RLPy.RMatrix4( 2, 0, 0, 0,
 
matrix_a = RLPy.RMatrix4( 2, 0, 0, 0,
 
                           0, 2, 0, 0,
 
                           0, 2, 0, 0,
Line 85: Line 93:
 
:Returns the value of determinate sign - float
 
:Returns the value of determinate sign - float
  
<syntaxhighlight lang="Python">
+
<syntaxhighlight lang="python">
 
transform_identity = RLPy.RTransform(RLPy.RTransform.IDENTITY)
 
transform_identity = RLPy.RTransform(RLPy.RTransform.IDENTITY)
 
print(transform_identity.D()) # <Swig Object of type 'float *' at 0x0000027B8A2D1FC0>
 
print(transform_identity.D()) # <Swig Object of type 'float *' at 0x0000027B8A2D1FC0>
Line 95: Line 103:
  
 
==== Returns ====
 
==== Returns ====
:The value of scale in 3D vector - RLPy.RVector3
+
:The value of scale in 3D vector - [[IC_Python_API:RLPy_RVector3|RVector3]]
  
<syntaxhighlight lang="Python">
+
<syntaxhighlight lang="python">
 
d_determinate = 0
 
d_determinate = 0
 
s_scale      = RLPy.RVector3( RLPy.RVector3.ZERO )
 
s_scale      = RLPy.RVector3( RLPy.RVector3.ZERO )
Line 119: Line 127:
  
 
==== Returns ====
 
==== Returns ====
:The value of stretch in quaternion - RLPy.RQuaternion
+
:The value of stretch in quaternion - [[IC_Python_API:RLPy_RQuaternion|RQuaternion]]
  
<syntaxhighlight lang="Python">
+
<syntaxhighlight lang="python">
 
d_determinate = 0
 
d_determinate = 0
 
s_scale      = RLPy.RVector3( RLPy.RVector3.ZERO )
 
s_scale      = RLPy.RVector3( RLPy.RVector3.ZERO )
Line 145: Line 153:
  
 
==== Returns ====
 
==== Returns ====
:The value of rotation in quaternion - RLPy.RQuaternion
+
:The value of rotation in quaternion - [[IC_Python_API:RLPy_RQuaternion|RQuaternion]]
  
<syntaxhighlight lang="Python">
+
<syntaxhighlight lang="python">
 
d_determinate = 0
 
d_determinate = 0
 
s_scale      = RLPy.RVector3( RLPy.RVector3.ZERO )
 
s_scale      = RLPy.RVector3( RLPy.RVector3.ZERO )
Line 171: Line 179:
  
 
==== Returns ====
 
==== Returns ====
:The value of translation in 3D vector - RLPy.RVector3.
+
:The value of translation in 3D vector - [[IC_Python_API:RLPy_RVector3|RVector3]].
  
<syntaxhighlight lang="Python">
+
<syntaxhighlight lang="python">
 
d_determinate = 0
 
d_determinate = 0
 
s_scale      = RLPy.RVector3( RLPy.RVector3.ZERO )
 
s_scale      = RLPy.RVector3( RLPy.RVector3.ZERO )
Line 195: Line 203:
  
 
==== Parameters ====
 
==== Parameters ====
:kRts [IN] The transform - RLPy.RTransform
+
:'''kRts''' [IN] The transform - [[IC_Python_API:RLPy_RTransform|RTransform]]
  
 
==== Returns ====
 
==== Returns ====
 
:Return true while two transform is almost equal - bool
 
:Return true while two transform is almost equal - bool
  
<syntaxhighlight lang="Python">
+
<syntaxhighlight lang="python">
 
matrix4 = RLPy.RMatrix4(-1, 0, 0, 0,
 
matrix4 = RLPy.RMatrix4(-1, 0, 0, 0,
 
                         0,-1, 0, 0,
 
                         0,-1, 0, 0,
Line 217: Line 225:
  
 
==== Returns ====
 
==== Returns ====
:A inversed transform - RLPy.RTransform
+
:A inversed transform - [[IC_Python_API:RLPy_RTransform|RTransform]]
  
<syntaxhighlight lang="Python">
+
<syntaxhighlight lang="python">
 
matrix4 = RLPy.RMatrix4(-1, 0, 0, 0,
 
matrix4 = RLPy.RMatrix4(-1, 0, 0, 0,
 
                         0,-1, 0, 0,
 
                         0,-1, 0, 0,
Line 235: Line 243:
  
 
==== Returns ====
 
==== Returns ====
:A transform composited from 4x4 matrix - RLPy.RTransform
+
:A transform composited from 4x4 matrix - [[IC_Python_API:RLPy_RTransform|RTransform]]
  
<syntaxhighlight lang="Python">
+
<syntaxhighlight lang="python">
 
matrix4 = RLPy.RMatrix4(-1, 0, 0, 0,
 
matrix4 = RLPy.RMatrix4(-1, 0, 0, 0,
 
                         0,-1, 0, 0,
 
                         0,-1, 0, 0,
Line 253: Line 261:
  
 
==== Returns ====
 
==== Returns ====
:A 4x4 matrix - RLPy.RMatrix4
+
:A 4x4 matrix - [[IC_Python_API:RLPy_RMatrix4|RMatrix4]]
  
<syntaxhighlight lang="Python">
+
<syntaxhighlight lang="python">
 
matrix4 = RLPy.RMatrix4( 0,-1, 0, 0,  
 
matrix4 = RLPy.RMatrix4( 0,-1, 0, 0,  
 
                         -1, 0, 0, 0,
 
                         -1, 0, 0, 0,
Line 274: Line 282:
 
:True if the transform is identity - bool
 
:True if the transform is identity - bool
  
<syntaxhighlight lang="Python">
+
<syntaxhighlight lang="python">
 
matrix4 = RLPy.RMatrix4( 1, 0, 0, 0,
 
matrix4 = RLPy.RMatrix4( 1, 0, 0, 0,
 
                         0, 1, 0, 0,
 
                         0, 1, 0, 0,
Line 288: Line 296:
  
 
==== Returns ====
 
==== Returns ====
:A 3x3 scale matrix from this transform - RLPy.RMatrix3
+
:A 3x3 scale matrix from this transform - [[IC_Python_API:RLPy_RMatrix3|RMatrix3]]
  
<syntaxhighlight lang="Python">
+
<syntaxhighlight lang="python">
 
scale = RLPy.RVector3( 4, 5, 6 )
 
scale = RLPy.RVector3( 4, 5, 6 )
 
matrix4 = RLPy.RMatrix4().FromRTS( RLPy.RMatrix3.IDENTITY,
 
matrix4 = RLPy.RMatrix4().FromRTS( RLPy.RMatrix3.IDENTITY,
Line 307: Line 315:
  
 
==== Returns ====
 
==== Returns ====
:A 3x3 rotate matrix from this transform - RLPy.RMatrix3
+
:A 3x3 rotate matrix from this transform - [[IC_Python_API:RLPy_RMatrix3|RMatrix3]]
  
<syntaxhighlight lang="Python">
+
<syntaxhighlight lang="python">
 
rotate = RLPy.RMatrix3( 0.8137977, -0.4698463,  0.3420202,
 
rotate = RLPy.RMatrix3( 0.8137977, -0.4698463,  0.3420202,
 
                           0.5438381,  0.8231729, -0.1631759,
 
                           0.5438381,  0.8231729, -0.1631759,
Line 326: Line 334:
  
 
==== Returns ====
 
==== Returns ====
:A 3x3 matrix from this transform - RLPy.RMatrix3
+
:A 3x3 matrix from this transform - [[IC_Python_API:RLPy_RMatrix3|RMatrix3]]
  
<syntaxhighlight lang="Python">
+
<syntaxhighlight lang="python">
 
scale  = RLPy.RVector3( 2, 2, 2 )
 
scale  = RLPy.RVector3( 2, 2, 2 )
 
rotate = RLPy.RMatrix3( -0,-0, 1,
 
rotate = RLPy.RMatrix3( -0,-0, 1,

Revision as of 23:03, 7 April 2020

Main article: Modules.
Last modified: 04/7/2020

Description

This class represent the object transform data. This class provides access to RLPy's internal 4x4 matrix operators and related functions.

See also: RMatrix4

Operators

+

The "addition" operator.

See Also: +=

matrix_a = RLPy.RMatrix4( 2, 0, 0, 0,
                          0, 2, 0, 0,
                          0, 0, 2, 0,
                          1, 2, 3, 1 )
matrix_b = RLPy.RMatrix4( 3, 0, 0, 0,
                          0, 3, 0, 0,
                          0, 0, 3, 0,
                          2, 2, 2, 1 )
transform =  RLPy.RTransform().From( matrix_a ) + RLPy.RTransform().From( matrix_b )

print( transform.Matrix().GetRow(0)[0] == 2*3 ) # true
print( transform.Matrix().GetRow(1)[1] == 2*3 ) # true
print( transform.Matrix().GetRow(2)[2] == 2*3 ) # true
print( transform.Matrix().GetRow(3)[0] == 1+2 ) # true
print( transform.Matrix().GetRow(3)[1] == 2+2 ) # true
print( transform.Matrix().GetRow(3)[2] == 3+2 ) # true

==

The "equal to" operator.

See Also: !=

transform_identity = RLPy.RTransform(RLPy.RTransform.IDENTITY)
print( transform_identity == transform_identity ) # true

!=

The "not equal to" operator.

See Also: ==

transform_identity = RLPy.RTransform(RLPy.RTransform.IDENTITY)
print( transform_identity != transform_identity ) # false

+=

The "addition assignment" operator.

See Also: +

matrix_a = RLPy.RMatrix4( 2, 0, 0, 0,
                          0, 2, 0, 0,
                          0, 0, 2, 0,
                          1, 2, 3, 1 )
matrix_b = RLPy.RMatrix4( 3, 0, 0, 0,
                          0, 3, 0, 0,
                          0, 0, 3, 0,
                          2, 2, 2, 1 )
transform = RLPy.RTransform().From( matrix_a )
transform += RLPy.RTransform().From( matrix_b )

print( transform.Matrix().GetRow(0)[0] == 2*3 ) # true
print( transform.Matrix().GetRow(1)[1] == 2*3 ) # true
print( transform.Matrix().GetRow(2)[2] == 2*3 ) # true
print( transform.Matrix().GetRow(3)[0] == 1+2 ) # true
print( transform.Matrix().GetRow(3)[1] == 2+2 ) # true
print( transform.Matrix().GetRow(3)[2] == 3+2 ) # true

Member Functions

D (self, args)

Get the determinate sign.

Returns

Returns the value of determinate sign - float
transform_identity = RLPy.RTransform(RLPy.RTransform.IDENTITY)
print(transform_identity.D()) # <Swig Object of type 'float *' at 0x0000027B8A2D1FC0>

S (self, args)

Get the Scale of a Transform matrix.

Returns

The value of scale in 3D vector - RVector3
d_determinate = 0
s_scale       = RLPy.RVector3( RLPy.RVector3.ZERO )
u_stretch     = RLPy.RQuaternion( RLPy.RQuaternion.IDENTITY )
r_rotate      = RLPy.RQuaternion( RLPy.RQuaternion.IDENTITY )
t_translate   = RLPy.RVector3( RLPy.RVector3.ZERO )

s_scale.x = 1
s_scale.y = 2
s_scale.z = 3
transform_data = RLPy.RTransform(d_determinate,s_scale,u_stretch,r_rotate,t_translate )

print( transform_data.S().x ) # 1
print( transform_data.S().y ) # 2
print( transform_data.S().z ) # 3

U (self, args)

Get the stretch of Transform matrix.

Returns

The value of stretch in quaternion - RQuaternion
d_determinate = 0
s_scale       = RLPy.RVector3( RLPy.RVector3.ZERO )
u_stretch     = RLPy.RQuaternion( RLPy.RQuaternion.IDENTITY )
r_rotate      = RLPy.RQuaternion( RLPy.RQuaternion.IDENTITY )
t_translate   = RLPy.RVector3( RLPy.RVector3.ZERO )

u_stretch.x = 4
u_stretch.y = 5
u_stretch.z = 6
u_stretch.w = 7
transform_data = RLPy.RTransform(d_determinate,s_scale,u_stretch,r_rotate,t_translate )

print( transform_data.U().x ) # 4
print( transform_data.U().y ) # 5
print( transform_data.U().z ) # 6
print( transform_data.U().w ) # 7

R (self, args)

Get the rotation of Transform matrix.

Returns

The value of rotation in quaternion - RQuaternion
d_determinate = 0
s_scale       = RLPy.RVector3( RLPy.RVector3.ZERO )
u_stretch     = RLPy.RQuaternion( RLPy.RQuaternion.IDENTITY )
r_rotate      = RLPy.RQuaternion( RLPy.RQuaternion.IDENTITY )
t_translate   = RLPy.RVector3( RLPy.RVector3.ZERO )

r_rotate.x = 8
r_rotate.y = 9
r_rotate.z = 10
r_rotate.w = 11
transform_data = RLPy.RTransform(d_determinate,s_scale,u_stretch,r_rotate,t_translate )

print( transform_data.R().x ) # 8
print( transform_data.R().y ) # 9
print( transform_data.R().z ) # 10
print( transform_data.R().w ) # 11

T (self, args)

Get the translation of Transform matrix.

Returns

The value of translation in 3D vector - RVector3.
d_determinate = 0
s_scale       = RLPy.RVector3( RLPy.RVector3.ZERO )
u_stretch     = RLPy.RQuaternion( RLPy.RQuaternion.IDENTITY )
r_rotate      = RLPy.RQuaternion( RLPy.RQuaternion.IDENTITY )
t_translate   = RLPy.RVector3( RLPy.RVector3.ZERO )  

t_translate.x = 12
t_translate.y = 13
t_translate.z = 14
transform_data = RLPy.RTransform(d_determinate,s_scale,u_stretch,r_rotate,t_translate )

print( transform_data.T().x ) # 12
print( transform_data.T().y ) # 13
print( transform_data.T().z ) # 14

AlmostEquel (self, kRts)

Two transform are almost equal or not.

Parameters

kRts [IN] The transform - RTransform

Returns

Return true while two transform is almost equal - bool
matrix4 = RLPy.RMatrix4(-1, 0, 0, 0,
                         0,-1, 0, 0,
                         0, 0, 1, 0,
                        -1, 1, 1, 1 )
                        
transform1  = RLPy.RTransform().From( matrix4 )        
transform2  = RLPy.RTransform().From( matrix4 ) 

print( transform1.AlmostEquel( transform2 )) # True

Inverse (self)

Inverse of the transform..

Returns

A inversed transform - RTransform
matrix4 = RLPy.RMatrix4(-1, 0, 0, 0,
                         0,-1, 0, 0,
                         0, 0, 1, 0,
                        -1, 1, 1, 1 )
                        
transform = RLPy.RTransform().From( matrix4 )
print( transform.Matrix().GetRow(0)[0] ) 
print( transform.Matrix().GetRow(0)[1] )

From (self, mMatrix)

Set a transform from 4x4 matrix.

Returns

A transform composited from 4x4 matrix - RTransform
matrix4 = RLPy.RMatrix4(-1, 0, 0, 0,
                         0,-1, 0, 0,
                         0, 0, 1, 0,
                        -1, 1, 1, 1 )
transform = RLPy.RTransform().From( matrix4 )

print( transform.Matrix().GetRow(0)[0] ) 
print( transform.Matrix().GetRow(0)[1] )

Matrix (self)

Get 4x4 matrix from Transform.

Returns

A 4x4 matrix - RMatrix4
matrix4 = RLPy.RMatrix4( 0,-1, 0, 0, 
                        -1, 0, 0, 0,
                         0, 0,-1, 0,
                         1,-2, 1, 1 )
transform_data = RLPy.RTransform().From( matrix4 )
transform_data_matrix = transform_data.Matrix()

print( transform_data_matrix.GetRow(0)[0] ) 
print( transform_data_matrix.GetRow(0)[1] )

IsIdentity (self)

Check if this transform is identity.

Returns

True if the transform is identity - bool
matrix4 = RLPy.RMatrix4( 1, 0, 0, 0,
                         0, 1, 0, 0,
                         0, 0, 1, 0,
                         0, 0, 0, 1 )
transform_data = RLPy.RTransform().From( matrix4 )
print( transform_data.IsIdentity() ) # True

Scale (self)

Form a scale matrix..

Returns

A 3x3 scale matrix from this transform - RMatrix3
scale = RLPy.RVector3( 4, 5, 6 )
matrix4 = RLPy.RMatrix4().FromRTS( RLPy.RMatrix3.IDENTITY,
                                       RLPy.RVector3.UNIT_XYZ,
                                       scale )
transform_data = RLPy.RTransform().From( matrix4 )

print( transform_data.Scale().GetRow(0)[0] ) # 4
print( transform_data.Scale().GetRow(1)[1] ) # 5
print( transform_data.Scale().GetRow(2)[2] ) # 6

Rotate (self)

Form a rotate matrix.

Returns

A 3x3 rotate matrix from this transform - RMatrix3
rotate = RLPy.RMatrix3( 0.8137977, -0.4698463,  0.3420202,
                           0.5438381,  0.8231729, -0.1631759,
                          -0.2048741,  0.3187958,  0.9254166 )
matrix4  = RLPy.RMatrix4().FromRTS( rotate, RLPy.RVector3.UNIT_XYZ , RLPy.RVector3.UNIT_XYZ )
    transform_data = RLPy.RTransform().From( matrix4 )

print( transform_data.Rotate().GetRow(0)[0] )
print( transform_data.Rotate().GetRow(0)[1] )
print( transform_data.Rotate().GetRow(0)[2] )

GetSR (self)

Form a 3x3 matrix with rotation and scale.

Returns

A 3x3 matrix from this transform - RMatrix3
scale  = RLPy.RVector3( 2, 2, 2 )
rotate = RLPy.RMatrix3( -0,-0, 1,
                        -1,-0, 0,
                        0,-1,-0 )
matrix4 = RLPy.RMatrix4().FromRTS( rotate, RLPy.RVector3.UNIT_XYZ , scale )
transform_data = RLPy.RTransform().From( matrix4 )

print( transform_data.GetSR().GetRow(0)[0] ) # -0*2 = 0
print( transform_data.GetSR().GetRow(0)[1] ) # -0*2 = 0
print( transform_data.GetSR().GetRow(0)[2] ) #  1*2 = 2