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

From Reallusion Wiki!
Jump to: navigation, search
m
m
Line 7: Line 7:
 
This class is used to access node parameters in a character skeleton or scene object.  Retrievable parameters include name, ID, parent node, list of child nodes, and more. [[#Update ( self )|Update]] to get the world-transform of the bone node for the current point in time.
 
This class is used to access node parameters in a character skeleton or scene object.  Retrievable parameters include name, ID, parent node, list of child nodes, and more. [[#Update ( self )|Update]] to get the world-transform of the bone node for the current point in time.
  
<syntaxhighlight lang="Python">
+
=== Inheritance ===
# Get root bone
+
avatar_list = RLPy.RScene.GetAvatars()
+
avatar = avatar_list[0]
+
skeleton_component = avatar.GetSkeletonComponent()
+
root_bone = skeleton_component.GetRootBone()
+
  
# Get root bone node name
+
[[IC_Python_API:RLPy_RIBase|RIBase]] > [[IC_Python_API:RLPy_RINode|RINode]]
node_name = root_bone.GetName()
+
print(node_name)
+
 
+
# Get root bone node ID
+
node_id = root_bone.GetID()
+
print(node_id)
+
 
+
# Get root bone parent node
+
parent_node = root_bone.GetParent()
+
print(parent_node)
+
 
+
# Get root bone children node list
+
children_node_list = root_bone.GetChildren()
+
print(children_node_list)
+
 
+
# Get root bone local transform
+
local_transform = root_bone.LocalTransform()
+
print(local_transform)
+
 
+
# Get root bone world transform
+
world_transform = root_bone.WorldTransform()
+
print(world_transform)
+
 
+
# Transfer root bone world transform matrix to local transform matrix
+
world_transform = root_bone.WorldTransform()
+
world_matrix = world_transform.Matrix() 
+
world_to_local = bone.WorldToLocal(world_matrix)
+
print(world_to_local)
+
 
+
# Transfer root bone local transform matrix to world transform matrix
+
local_transform = root_bone.LocalTransform()
+
local_matrix = local_transform.Matrix()   
+
local_to_world = bone.LocalToWorld(local_matrix)
+
print(local_to_world)
+
</syntaxhighlight>
+
  
 
== Member Functions ==
 
== Member Functions ==
Line 60: Line 20:
 
:Name of the node - str
 
:Name of the node - str
  
<syntaxhighlight lang="Python">
+
<syntaxhighlight lang="python">
 
# Get root bone
 
# Get root bone
 
avatar_list = RLPy.RScene.GetAvatars()
 
avatar_list = RLPy.RScene.GetAvatars()
Line 79: Line 39:
 
:ID of the node - int
 
:ID of the node - int
  
<syntaxhighlight lang="Python">
+
<syntaxhighlight lang="python">
 
# Get root bone
 
# Get root bone
 
avatar_list = RLPy.RScene.GetAvatars()
 
avatar_list = RLPy.RScene.GetAvatars()
Line 99: Line 59:
 
:No parent node - None
 
:No parent node - None
  
<syntaxhighlight lang="Python">
+
<syntaxhighlight lang="python">
 
# Get root bone
 
# Get root bone
 
avatar_list = RLPy.RScene.GetAvatars()
 
avatar_list = RLPy.RScene.GetAvatars()
Line 121: Line 81:
 
:No child nodes - None
 
:No child nodes - None
  
<syntaxhighlight lang="Python">
+
<syntaxhighlight lang="python">
 
# Get root bone
 
# Get root bone
 
avatar_list = RLPy.RScene.GetAvatars()
 
avatar_list = RLPy.RScene.GetAvatars()
Line 142: Line 102:
 
:Node local-transform - [[IC_Python_API:RLPy_RTransform|RTransform]]
 
:Node local-transform - [[IC_Python_API:RLPy_RTransform|RTransform]]
  
<syntaxhighlight lang="Python">
+
<syntaxhighlight lang="python">
 
# Get root bone
 
# Get root bone
 
avatar_list = RLPy.RScene.GetAvatars()
 
avatar_list = RLPy.RScene.GetAvatars()
Line 163: Line 123:
 
:Node world-transform - [[IC_Python_API:RLPy_RTransform|RTransform]]
 
:Node world-transform - [[IC_Python_API:RLPy_RTransform|RTransform]]
  
<syntaxhighlight lang="Python">
+
<syntaxhighlight lang="python">
 
# Get root bone
 
# Get root bone
 
avatar_list = RLPy.RScene.GetAvatars()
 
avatar_list = RLPy.RScene.GetAvatars()
Line 182: Line 142:
  
 
==== Parameters ====
 
==== Parameters ====
:kWorldMatrix [IN] Node world-transform matrix - [[IC_Python_API:RLPy_RMatrix4|RMatrix4]]
+
:'''kWorldMatrix''' [IN] Node world-transform matrix - [[IC_Python_API:RLPy_RMatrix4|RMatrix4]]
  
 
==== Returns ====
 
==== Returns ====
 
:Node local-transform matrix - [[IC_Python_API:RLPy_RMatrix4|RMatrix4]]
 
:Node local-transform matrix - [[IC_Python_API:RLPy_RMatrix4|RMatrix4]]
  
<syntaxhighlight lang="Python">
+
<syntaxhighlight lang="python">
 
# Get root bone
 
# Get root bone
 
avatar_list = RLPy.RScene.GetAvatars()
 
avatar_list = RLPy.RScene.GetAvatars()
Line 208: Line 168:
  
 
==== Parameters ====
 
==== Parameters ====
:kLocalMatrix [IN] Node local-transform matrix - [[IC_Python_API:RLPy_RMatrix4|RMatrix4]]
+
:'''kLocalMatrix''' [IN] Node local-transform matrix - [[IC_Python_API:RLPy_RMatrix4|RMatrix4]]
  
 
==== Returns ====
 
==== Returns ====
 
:Node local-transform matrix - [[IC_Python_API:RLPy_RMatrix4|RMatrix4]]
 
:Node local-transform matrix - [[IC_Python_API:RLPy_RMatrix4|RMatrix4]]
  
<syntaxhighlight lang="Python">
+
<syntaxhighlight lang="python">
 
# Transfer root bone local transform matrix to world transform matrix
 
# Transfer root bone local transform matrix to world transform matrix
 
local_transform = root_bone.LocalTransform()
 
local_transform = root_bone.LocalTransform()
Line 225: Line 185:
 
Update the Transform Control for a node in a character skeleton or scene object and update the scene.  After the update, the Transform Control's key values will reflect the world-transform values of the node for the current point in time.  
 
Update the Transform Control for a node in a character skeleton or scene object and update the scene.  After the update, the Transform Control's key values will reflect the world-transform values of the node for the current point in time.  
  
<syntaxhighlight lang="Python">
+
<syntaxhighlight lang="python">
 
# Get root bone
 
# Get root bone
 
avatar_list = RLPy.RScene.GetAvatars()
 
avatar_list = RLPy.RScene.GetAvatars()

Revision as of 23:52, 8 April 2020

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

Description

This class is used to access node parameters in a character skeleton or scene object. Retrievable parameters include name, ID, parent node, list of child nodes, and more. Update to get the world-transform of the bone node for the current point in time.

Inheritance

RIBase > RINode

Member Functions

GetName ( self )

Get the name of the node in a character skeleton or scene object.

Returns

Name of the node - str
# Get root bone
avatar_list = RLPy.RScene.GetAvatars()
avatar = avatar_list[0]
skeleton_component = avatar.GetSkeletonComponent()
root_bone = skeleton_component.GetRootBone()

# Get root bone node name
node_name = root_bone.GetName()
print(node_name)

GetID ( self )

Get the ID of the node in a character skeleton or scene object.

Returns

ID of the node - int
# Get root bone
avatar_list = RLPy.RScene.GetAvatars()
avatar = avatar_list[0]
skeleton_component = avatar.GetSkeletonComponent()
root_bone = skeleton_component.GetRootBone()

# Get root bone node ID
node_id = root_bone.GetID()
print(node_id)

GetParent ( self )

Get the parent node of the bone node in a character skeleton or scene object. If a parent does not exist, then return None.

Returns

Parent node - RINode
No parent node - None
# Get root bone
avatar_list = RLPy.RScene.GetAvatars()
avatar = avatar_list[0]
skeleton_component = avatar.GetSkeletonComponent()
root_bone = skeleton_component.GetRootBone()

# Get root bone parent node
parent_node = root_bone.GetParent()
print(parent_node)

GetChildren ( self )

Get a list of child nodes for a node in a character skeleton or scene object. If this node does not have child nodes, then return None.

See Also: GetParent

Returns

List of child nodes - RINode list
No child nodes - None
# Get root bone
avatar_list = RLPy.RScene.GetAvatars()
avatar = avatar_list[0]
skeleton_component = avatar.GetSkeletonComponent()
root_bone = skeleton_component.GetRootBone()

# Get root bone children node list
children_node_list = root_bone.GetChildren()
print(children_node_list)

LocalTransform ( self )

Get the local-transform for a node in a character skeleton or scene object.

See Also: WorldTransform

Returns

Node local-transform - RTransform
# Get root bone
avatar_list = RLPy.RScene.GetAvatars()
avatar = avatar_list[0]
skeleton_component = avatar.GetSkeletonComponent()
root_bone = skeleton_component.GetRootBone()

# Get root bone local transform
local_transform = root_bone.LocalTransform()
print(local_transform)

WorldTransform ( self )

Get the world-transform for a node in a character skeleton or scene object.

See Also: LocalTransform

Returns

Node world-transform - RTransform
# Get root bone
avatar_list = RLPy.RScene.GetAvatars()
avatar = avatar_list[0]
skeleton_component = avatar.GetSkeletonComponent()
root_bone = skeleton_component.GetRootBone()

# Get root bone world transform
world_transform = root_bone.WorldTransform()
print(world_transform)

WorldToLocal ( self, kWorldMatrix )

Convert the world-transform matrix for a node in a character skeleton or scene object to local-transform matrix.

See Also: LocalToWorld

Parameters

kWorldMatrix [IN] Node world-transform matrix - RMatrix4

Returns

Node local-transform matrix - RMatrix4
# Get root bone
avatar_list = RLPy.RScene.GetAvatars()
avatar = avatar_list[0]
skeleton_component = avatar.GetSkeletonComponent()
root_bone = skeleton_component.GetRootBone()

# Transfer root bone world transform matrix to local transform matrix
world_transform = root_bone.WorldTransform()
world_matrix = world_transform.Matrix()  
world_to_local = bone.WorldToLocal(world_matrix)
print(world_to_local)

LocalToWorld ( self, kLocalMatrix )

Convert the local-transform matrix for a node in a character skeleton or scene object to world-transform matrix.

See Also: WorldToLocal

Parameters

kLocalMatrix [IN] Node local-transform matrix - RMatrix4

Returns

Node local-transform matrix - RMatrix4
# Transfer root bone local transform matrix to world transform matrix
local_transform = root_bone.LocalTransform()
local_matrix = local_transform.Matrix()     
local_to_world = bone.LocalToWorld(local_matrix)
print(local_to_world)

Update ( self )

Update the Transform Control for a node in a character skeleton or scene object and update the scene. After the update, the Transform Control's key values will reflect the world-transform values of the node for the current point in time.

# Get root bone
avatar_list = RLPy.RScene.GetAvatars()
avatar = avatar_list[0]
skeleton_component = avatar.GetSkeletonComponent()
root_bone = skeleton_component.GetRootBone()

# Get root bone child node world transform rotation x-axis value
motion_bones = skeleton_component.GetMotionBones()
child = motion_bones[1]
child_world = child.WorldTransform()
child_rot_x = child_world.R().x

# Set float control rotation x-axis value
RLPy.RGlobal.SetTime(RLPy.RTime(0))
animation_clip = skeleton_component.GetClip(0)
root_control = animation_clip.GetControl("Layer", root_bone)
data_block = root_control.GetDataBlock()
float_control_rotate_x = data_block.GetControl("Rotation/RotationX")
float_control_rotate_x.SetValue(RLPy.RGlobal.GetTime(), math.radians(60))

# Update root bone with float control
root_bone.Update()

# Get root bone child node world transform rotation x-axis value after updated
new_child_world = child.WorldTransform()
after_update_child_rot_x = new_child_world.R().x