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

From Reallusion Wiki!
Jump to: navigation, search
m
m
Line 5: Line 5:
 
== Description ==
 
== Description ==
  
This class is used to access the bone node parameters for a character skeleton or object.  Retrievable parameters include name, ID, parent node, list of child nodes, and more.  Use [[#Update ( self )|Update]] to get the world-transform values of the bone node for the current point in time.
+
This class is used to access the bone node parameters on a character skeleton or object.  Retrievable parameters include name, ID, parent node, list of child nodes, and more.  Use [[#Update ( self )|Update]] to get the world-transform values of the bone node for the current point in time.
  
 
<syntaxhighlight lang="Python">
 
<syntaxhighlight lang="Python">
Line 19: Line 19:
 
=== GetName ( self ) ===
 
=== GetName ( self ) ===
  
Get the name of the bone node of a character skeleton or scene object.
+
Get the name of the bone node on a character skeleton or scene object.
  
 
==== Returns ====
 
==== Returns ====
Line 38: Line 38:
 
=== GetID ( self ) ===
 
=== GetID ( self ) ===
  
Get the ID of the bone node of a character skeleton or scene object.
+
Get the ID of the bone node on a character skeleton or scene object.
  
 
==== Returns ====
 
==== Returns ====
Line 57: Line 57:
 
=== GetParent ( self ) ===
 
=== GetParent ( self ) ===
  
Get the parent bone of the bone node of a character skeleton or scene object.
+
Get the parent bone of the bone node on a character skeleton or scene object.
  
 
See Also: [[#GetChildren ( self )|GetChildren]]
 
See Also: [[#GetChildren ( self )|GetChildren]]
Line 78: Line 78:
 
=== GetChildren ( self ) ===
 
=== GetChildren ( self ) ===
  
Get a list of child bones for a bone node of a character skeleton or scene object.
+
Get a list of child bones for a bone node on a character skeleton or scene object.
  
 
See Also: [[#GetParent ( self )|GetParent]]
 
See Also: [[#GetParent ( self )|GetParent]]
Line 99: Line 99:
 
=== LocalTransform ( self ) ===
 
=== LocalTransform ( self ) ===
  
Get the local-transform for a bone node of a character skeleton or scene object.
+
Get the local-transform for a bone node on a character skeleton or scene object.
  
 
See Also: [[#WorldTransform ( self )|WorldTransform]]
 
See Also: [[#WorldTransform ( self )|WorldTransform]]
Line 120: Line 120:
 
=== WorldTransform ( self ) ===
 
=== WorldTransform ( self ) ===
  
Get the world-transform for a bone node of a character skeleton or scene object.
+
Get the world-transform for a bone node on a character skeleton or scene object.
  
 
See Also: [[#LocalTransform ( self )|LocalTransform]]
 
See Also: [[#LocalTransform ( self )|LocalTransform]]
Line 141: Line 141:
 
=== WorldToLocal ( self, kWorldMatrix ) ===
 
=== WorldToLocal ( self, kWorldMatrix ) ===
  
Convert the world-transform matrix for a bone node of a character skeleton or scene object to local-transform matrix.
+
Convert the world-transform matrix for a bone node on a character skeleton or scene object to local-transform matrix.
  
 
See Also: [[#LocalToWorld ( self, kLocalMatrix )|LocalToWorld]]
 
See Also: [[#LocalToWorld ( self, kLocalMatrix )|LocalToWorld]]
Line 167: Line 167:
 
=== LocalToWorld ( self, kLocalMatrix ) ===
 
=== LocalToWorld ( self, kLocalMatrix ) ===
  
Convert the local-transform matrix for a bone node of a character skeleton or scene object to world-transform matrix.
+
Convert the local-transform matrix for a bone node on a character skeleton or scene object to world-transform matrix.
  
 
See Also: [[#WorldToLocal ( self, kWorldMatrix )|WorldToLocal]]
 
See Also: [[#WorldToLocal ( self, kWorldMatrix )|WorldToLocal]]
Line 193: Line 193:
 
=== Update ( self ) ===
 
=== Update ( self ) ===
  
Update the Transform Control for a bone node of a character skelecton or scene object.  After the update, the Transform Control's key value will reflect the world-transform values of the bone node for the current point in time.
+
Update the Transform Control for a bone node on a character skelecton or scene object.  After the update, the Transform Control's key value will reflect the world-transform values of the bone node for the current point in time.
  
 
<syntaxhighlight lang="Python">
 
<syntaxhighlight lang="Python">

Revision as of 00:41, 1 April 2020

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

Description

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

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

Member Functions

GetName ( self )

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

Returns

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

# Get root bone name
bone_name = bone_node.GetName()
print(bone_name)

GetID ( self )

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

Returns

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

# Get root bone ID
bone_id = bone_node.GetID()
print(bone_id)

GetParent ( self )

Get the parent bone of the bone node on a character skeleton or scene object.

See Also: GetChildren

Returns

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

# Get root bone parent bone
parent_bone = bone_node.GetParent()
print(parent_bone)

GetChildren ( self )

Get a list of child bones for a bone node on a character skeleton or scene object.

See Also: GetParent

Returns

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

# Get root bone children bone list
children_bone_list = bone_node.GetChildren()
print(children_bone_list)

LocalTransform ( self )

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

See Also: WorldTransform

Returns

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

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

WorldTransform ( self )

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

See Also: LocalTransform

Returns

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

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

WorldToLocal ( self, kWorldMatrix )

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

See Also: LocalToWorld

Parameters

kWorldMatrix [IN] Character bone node world-transform matrix - RMatrix4

Returns

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

# Transfer root bone world transform matrix to local transform matrix
world_transform = bone_node.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 bone node on a character skeleton or scene object to world-transform matrix.

See Also: WorldToLocal

Parameters

kLocalMatrix [IN] Character bone node local-transform matrix - RMatrix4

Returns

Bone node world-transform matrix - RMatrix4
# Get root bone node
avatar_list = RLPy.RScene.GetAvatars()
avatar = avatar_list[0]
skeleton_component = avatar.GetSkeletonComponent()
bone_node = skeleton_component.GetRootBone()

# Transfer root bone local transform matrix to world transform matrix
local_transform = bone_node.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 bone node on a character skelecton or scene object. After the update, the Transform Control's key value will reflect the world-transform values of the bone node for the current point in time.

# Get root bone node
avatar_list = RLPy.RScene.GetAvatars()
avatar = avatar_list[0]
skeleton_component = avatar.GetSkeletonComponent()
bone_node = 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)
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
bone_node.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