Difference between revisions of "IC Python API:RLPy RIObject"
Chuck (RL) (Talk | contribs) m |
Chuck (RL) (Talk | contribs) m |
||
(7 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
{{TOC}} | {{TOC}} | ||
{{Parent|IC_Python_API:RL_Python_Modules|Modules}} | {{Parent|IC_Python_API:RL_Python_Modules|Modules}} | ||
− | == | + | {{last_modified}} |
− | This class | + | |
− | + | == Description == | |
− | == | + | |
− | + | This class is used to access the bone node parameters in 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=" | + | |
+ | === Inheritance === | ||
+ | |||
+ | [[IC_Python_API:RLPy_RIBase|RIBase]] > [[IC_Python_API:RLPy_RIObject|RIObject]] > [[IC_Python_API:RLPy_RIAvatar|RIAvatar]] | [[IC_Python_API:RLPy_RICamera|RICamera]] | [[IC_Python_API:RLPy_RIParticle|RIParticle]] | [[IC_Python_API:RLPy_RIProp|RIProp]] | ||
+ | [[IC_Python_API:RLPy_RIObject|RIObject]] > [[IC_Python_API:RLPy_RILight|RILight]] > [[IC_Python_API:RLPy_RISpotLight|RISpotLight]] | [[IC_Python_API:RLPy_RIPointLight|RIPointLight]] | [[IC_Python_API:RLPy_RIDirectionalLight|RIDirectionalLight]] | ||
+ | |||
+ | === Examples === | ||
+ | |||
+ | <syntaxhighlight lang="python" line='line'> | ||
+ | # Get root bone node | ||
avatar_list = RLPy.RScene.GetAvatars() | avatar_list = RLPy.RScene.GetAvatars() | ||
avatar = avatar_list[0] | avatar = avatar_list[0] | ||
− | + | skeleton_component = avatar.GetSkeletonComponent() | |
− | + | bone_node = skeleton_component.GetRootBone() | |
− | + | </syntaxhighlight> | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | == Member Functions == | |
− | + | ||
− | + | ||
− | + | === GetName ( self ) === | |
− | + | ||
− | + | Get the name of the bone node in a character skeleton or scene object. | |
− | + | ||
− | == | + | ==== Returns ==== |
− | + | :Name of the bone node - str | |
− | + | ||
− | + | <syntaxhighlight lang="python" line='line'> | |
− | + | # Get root bone node | |
− | + | avatar_list = RLPy.RScene.GetAvatars() | |
− | + | avatar = avatar_list[0] | |
− | + | skeleton_component = avatar.GetSkeletonComponent() | |
− | + | bone_node = skeleton_component.GetRootBone() | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | == | + | |
− | = | + | |
− | <syntaxhighlight lang=" | + | |
− | RLPy. | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | # Get root bone name | |
− | + | bone_name = bone_node.GetName() | |
− | + | print(bone_name) | |
− | = | + | |
− | + | ||
− | + | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
− | |||
− | |||
− | |||
− | + | === GetID ( self ) === | |
− | + | Get the ID of the bone node in a character skeleton or scene object. | |
− | + | ==== Returns ==== | |
− | + | :ID of the bone node - int | |
− | ==== | + | |
− | + | ||
− | '' | + | <syntaxhighlight lang="python" line='line'> |
+ | # 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) | |
− | = | + | |
− | + | ||
− | + | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
− | |||
− | |||
− | + | === GetParent ( self ) === | |
− | + | ||
− | + | Get the parent bone of the bone node in a character skeleton or scene object. If a parent does not exist, then return '''None'''. | |
− | + | ||
− | + | See Also: [[#GetChildren ( self )|GetChildren]] | |
− | + | ||
− | === | + | ==== Returns ==== |
− | + | :Parent bone node - [[IC_Python_API:RLPy_RINode|RINode]] | |
− | + | :No parent bone node - None | |
− | + | ||
− | + | <syntaxhighlight lang="python" line='line'> | |
− | + | # Get root bone node | |
− | + | avatar_list = RLPy.RScene.GetAvatars() | |
− | + | avatar = avatar_list[0] | |
− | Get | + | skeleton_component = avatar.GetSkeletonComponent() |
− | + | bone_node = skeleton_component.GetRootBone() | |
− | + | ||
− | + | # Get root bone parent bone | |
− | + | parent_bone = bone_node.GetParent() | |
− | + | print(parent_bone) | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | ====Returns==== | + | |
− | + | ||
− | + | ||
− | - | + | |
− | + | ||
− | <syntaxhighlight lang=" | + | |
− | RLPy. | + | |
− | + | ||
− | + | ||
− | = | + | |
− | + | ||
− | + | ||
− | + | ||
− | = | + | |
− | + | ||
− | + | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
− | |||
− | |||
− | |||
− | + | === GetChildren ( self ) === | |
− | ''' | + | Get a list of child bones for a bone node in a character skeleton or scene object. If this bone node does not have child bones, then return '''None'''. |
− | + | ||
− | + | ||
− | + | ||
− | + | See Also: [[#GetParent ( self )|GetParent]] | |
− | + | ==== Returns ==== | |
− | + | :List of child bone nodes - [[IC_Python_API:RLPy_RINode|RINode]] list | |
− | + | :No child bones - None | |
− | === | + | |
− | <syntaxhighlight lang=" | + | <syntaxhighlight lang="python" line='line'> |
− | RLPy. | + | # 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) | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
− | |||
− | |||
− | |||
− | + | === LocalTransform ( self ) === | |
− | + | ||
− | - | + | Get the local-transform for a bone node in a character skeleton or scene object. |
− | === | + | |
− | <syntaxhighlight lang=" | + | See Also: [[#WorldTransform ( self )|WorldTransform]] |
− | RLPy. | + | |
+ | ==== Returns ==== | ||
+ | :Bone node local-transform - [[IC_Python_API:RLPy_RTransform|RTransform]] | ||
+ | |||
+ | <syntaxhighlight lang="python" line='line'> | ||
+ | # 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) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | === WorldTransform ( self ) === | |
− | + | Get the world-transform for a bone node in a character skeleton or scene object. | |
− | + | ||
− | + | ||
− | + | ||
− | + | See Also: [[#LocalTransform ( self )|LocalTransform]] | |
− | + | ==== Returns ==== | |
− | + | :Bone node world-transform - [[IC_Python_API:RLPy_RTransform|RTransform]] | |
− | + | ||
− | === | + | <syntaxhighlight lang="python" line='line'> |
− | <syntaxhighlight lang=" | + | # Get root bone node |
− | RLPy. | + | 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) | |
− | = | + | |
− | + | ||
− | + | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
− | |||
− | |||
− | |||
− | + | === WorldToLocal ( self, kWorldMatrix ) === | |
− | + | ||
− | ==== | + | |
− | + | ||
− | + | Convert the world-transform matrix for a bone node in a character skeleton or scene object to local-transform matrix. | |
− | ''' | + | See Also: [[#LocalToWorld ( self, kLocalMatrix )|LocalToWorld]] |
− | + | ||
− | + | ==== Parameters ==== | |
− | === | + | :'''kWorldMatrix''' [IN] Character bone node world-transform matrix - [[IC_Python_API:RLPy_RMatrix4|RMatrix4]] |
− | <syntaxhighlight lang=" | + | |
− | RLPy. | + | ==== Returns ==== |
+ | :Bone node local-transform matrix - [[IC_Python_API:RLPy_RMatrix4|RMatrix4]] | ||
+ | |||
+ | <syntaxhighlight lang="python" line='line'> | ||
+ | # 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) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
− | |||
− | |||
− | ''' | + | === LocalToWorld ( self, kLocalMatrix ) === |
− | + | ||
− | ====Returns==== | + | Convert the local-transform matrix for a bone node in a character skeleton or scene object to world-transform matrix. |
− | + | ||
− | + | See Also: [[#WorldToLocal ( self, kWorldMatrix )|WorldToLocal]] | |
− | + | ||
− | + | ==== Parameters ==== | |
− | <syntaxhighlight lang=" | + | :'''kLocalMatrix''' [IN] Character bone node local-transform matrix - [[IC_Python_API:RLPy_RMatrix4|RMatrix4]] |
− | RLPy. | + | |
+ | ==== Returns ==== | ||
+ | :Bone node world-transform matrix - [[IC_Python_API:RLPy_RMatrix4|RMatrix4]] | ||
+ | |||
+ | <syntaxhighlight lang="python" line='line'> | ||
+ | # 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) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
− | |||
− | |||
− | |||
− | + | === Update ( self ) === | |
− | < | + | |
− | ==== | + | Update the Transform Control for a bone node in a character skelecton or scene object and update the scene. After the [[#Update ( self )|Update]], the Transform Control's key values will reflect the world-transform values of the bone node for the current point in time. |
− | + | ||
+ | <syntaxhighlight lang="python" line='line'> | ||
+ | # 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 | |
− | = | + | |
− | + | ||
− | + | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
− | |||
− | |||
− | |||
− |
Latest revision as of 23:56, 14 April 2020
- Main article: Modules.
- Last modified: 04/14/2020
Description
This class is used to access the bone node parameters in 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.
Inheritance
RIBase > RIObject > RIAvatar | RICamera | RIParticle | RIProp RIObject > RILight > RISpotLight | RIPointLight | RIDirectionalLight
Examples
1 # Get root bone node
2 avatar_list = RLPy.RScene.GetAvatars()
3 avatar = avatar_list[0]
4 skeleton_component = avatar.GetSkeletonComponent()
5 bone_node = skeleton_component.GetRootBone()
Member Functions
GetName ( self )
Get the name of the bone node in a character skeleton or scene object.
Returns
- Name of the bone node - str
1 # Get root bone node
2 avatar_list = RLPy.RScene.GetAvatars()
3 avatar = avatar_list[0]
4 skeleton_component = avatar.GetSkeletonComponent()
5 bone_node = skeleton_component.GetRootBone()
6
7 # Get root bone name
8 bone_name = bone_node.GetName()
9 print(bone_name)
GetID ( self )
Get the ID of the bone node in a character skeleton or scene object.
Returns
- ID of the bone node - int
1 # Get root bone node
2 avatar_list = RLPy.RScene.GetAvatars()
3 avatar = avatar_list[0]
4 skeleton_component = avatar.GetSkeletonComponent()
5 bone_node = skeleton_component.GetRootBone()
6
7 # Get root bone ID
8 bone_id = bone_node.GetID()
9 print(bone_id)
GetParent ( self )
Get the parent bone of the bone node in a character skeleton or scene object. If a parent does not exist, then return None.
See Also: GetChildren
Returns
- Parent bone node - RINode
- No parent bone node - None
1 # Get root bone node
2 avatar_list = RLPy.RScene.GetAvatars()
3 avatar = avatar_list[0]
4 skeleton_component = avatar.GetSkeletonComponent()
5 bone_node = skeleton_component.GetRootBone()
6
7 # Get root bone parent bone
8 parent_bone = bone_node.GetParent()
9 print(parent_bone)
GetChildren ( self )
Get a list of child bones for a bone node in a character skeleton or scene object. If this bone node does not have child bones, then return None.
See Also: GetParent
Returns
- List of child bone nodes - RINode list
- No child bones - None
1 # Get root bone node
2 avatar_list = RLPy.RScene.GetAvatars()
3 avatar = avatar_list[0]
4 skeleton_component = avatar.GetSkeletonComponent()
5 bone_node = skeleton_component.GetRootBone()
6
7 # Get root bone children bone list
8 children_bone_list = bone_node.GetChildren()
9 print(children_bone_list)
LocalTransform ( self )
Get the local-transform for a bone node in a character skeleton or scene object.
See Also: WorldTransform
Returns
- Bone node local-transform - RTransform
1 # Get root bone node
2 avatar_list = RLPy.RScene.GetAvatars()
3 avatar = avatar_list[0]
4 skeleton_component = avatar.GetSkeletonComponent()
5 bone_node = skeleton_component.GetRootBone()
6
7 # Get root bone local transform
8 local_transform = bone_node.LocalTransform()
9 print(local_transform)
WorldTransform ( self )
Get the world-transform for a bone node in a character skeleton or scene object.
See Also: LocalTransform
Returns
- Bone node world-transform - RTransform
1 # Get root bone node
2 avatar_list = RLPy.RScene.GetAvatars()
3 avatar = avatar_list[0]
4 skeleton_component = avatar.GetSkeletonComponent()
5 bone_node = skeleton_component.GetRootBone()
6
7 # Get root bone world transform
8 world_transform = bone_node.WorldTransform()
9 print(world_transform)
WorldToLocal ( self, kWorldMatrix )
Convert the world-transform matrix for a bone node in 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
1 # Get root bone node
2 avatar_list = RLPy.RScene.GetAvatars()
3 avatar = avatar_list[0]
4 skeleton_component = avatar.GetSkeletonComponent()
5 bone_node = skeleton_component.GetRootBone()
6
7 # Transfer root bone world transform matrix to local transform matrix
8 world_transform = bone_node.WorldTransform()
9 world_matrix = world_transform.Matrix()
10 world_to_local = bone.WorldToLocal(world_matrix)
11 print(world_to_local)
LocalToWorld ( self, kLocalMatrix )
Convert the local-transform matrix for a bone node in 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
1 # Get root bone node
2 avatar_list = RLPy.RScene.GetAvatars()
3 avatar = avatar_list[0]
4 skeleton_component = avatar.GetSkeletonComponent()
5 bone_node = skeleton_component.GetRootBone()
6
7 # Transfer root bone local transform matrix to world transform matrix
8 local_transform = bone_node.LocalTransform()
9 local_matrix = local_transform.Matrix()
10 local_to_world = bone.LocalToWorld(local_matrix)
11 print(local_to_world)
Update ( self )
Update the Transform Control for a bone node in a character skelecton or scene object and update the scene. After the Update, the Transform Control's key values will reflect the world-transform values of the bone node for the current point in time.
1 # Get root bone node
2 avatar_list = RLPy.RScene.GetAvatars()
3 avatar = avatar_list[0]
4 skeleton_component = avatar.GetSkeletonComponent()
5 bone_node = skeleton_component.GetRootBone()
6
7 # Get root bone child node world transform rotation x-axis value
8 motion_bones = skeleton_component.GetMotionBones()
9 child = motion_bones[1]
10 child_world = child.WorldTransform()
11 child_rot_x = child_world.R().x
12
13 # Set float control rotation x-axis value
14 RLPy.RGlobal.SetTime(RLPy.RTime(0))
15 animation_clip = skeleton_component.GetClip(0)
16 root_control = animation_clip.GetControl("Layer", root)
17 data_block = root_control.GetDataBlock()
18 float_control_rotate_x = data_block.GetControl("Rotation/RotationX")
19 float_control_rotate_x.SetValue(RLPy.RGlobal.GetTime(), math.radians(60))
20
21 # Update root bone with float control
22 bone_node.Update()
23
24 # Get root bone child node world transform rotation x-axis value after updated
25 new_child_world = child.WorldTransform()
26 after_update_child_rot_x = new_child_world.R().x