Difference between revisions of "IC Python API:Uses and Capabilities"

From Reallusion Wiki!
Jump to: navigation, search
m (v0.7)
m (v0.7.2)
Line 189: Line 189:
 
<div class="mw-collapsible-content">
 
<div class="mw-collapsible-content">
 
{|class= "wikitable"
 
{|class= "wikitable"
!scope="row"|RIObjectPtr CICFileIO::LoadObject( strPath )
+
!scope="row"|CICFileIO
|Function that can load objects, and directly get the loaded objects, currently only the types that inherit RIObject can use this API
+
|<RIObjectPtr> CICFileIO::LoadObject( strPath ): Function that can load objects, and directly get the loaded objects, currently only the types that inherit RIObject can use this API
 
|-
 
|-
!scope="row"|RlVisemeComponent::AddVisemesClip( args... )
+
!scope="row"|RlVisemeComponent
|Used to create Viseme Clip.  Usage: RlVisemeComponent::AddVisemesClip( RO::RTime kTime, const std::wstring& nClipName, RO::RTime kTimeLength )
+
|RlVisemeComponent::AddVisemesClip( RO::RTime kTime, const std::wstring& nClipName, RO::RTime kTimeLength ): Used to create Viseme Clip.
 
|-
 
|-
!scope="row"|RIProp::SetDummy( bIsDummy)
+
!scope="row"|RIProp
|Used to set whether Prop is Dummy.
+
|RIProp::SetDummy( bIsDummy): Used to set whether Prop is Dummy.
 
|-
 
|-
!scope="row"|bool RIProp::IsDummy()
+
!scope="row"|RIProp
|Used to check if Prop is Dummy.
+
|<bool> RIProp::IsDummy(): Used to check if Prop is Dummy.
 
|-
 
|-
!scope="row"|std::vector< std::wstring > RIMorphComponent::GetMorphNames()
+
!scope="row"|RIMorphComponent
|Used to get all MorphName in the specified mesh.
+
|std::vector< std::wstring > RIMorphComponent::GetMorphNames(): Get all morph names for the specified mesh.
 
|-
 
|-
!scope="row"|RIObject::Clone()
+
!scope="row"|RIObject
|Used to copy the object.
+
|RIObject::Clone(): Used to copy the object.
 
|-
 
|-
!scope="row"|RIObject::IsSelected()
+
!scope="row"|RIObject
|Used to confirm whether the object is selected in the scene.
+
|RIObject::IsSelected(): Confirm whether the object is selected in the scene.
 
|-
 
|-
!scope="row"|RemoveVisemesClip( RO::RTime kTime )
+
!scope="row"|RemoveVisemesClip
|Used to remove the Viseme Clip at the specified time.
+
|RemoveVisemesClip( RO::RTime kTime ): Remove a viseme Clip at the specified time.
 
|-
 
|-
!scope="row"|RlVisemeComponent::RemoveVisemesKey( RO::RTime kTime )
+
!scope="row"|RlVisemeComponent
|Used to remove the Viseme key at the specified point in time..
+
|RlVisemeComponent::RemoveVisemesKey( RO::RTime kTime ): Remove a viseme key at the specified point in time.
 
|-
 
|-
!scope="row"|RlVisemeComponent::GetVisemeMorphWeights()
+
!scope="row"|RlVisemeComponent
|Used to get the weight of each Morph of Viseme.
+
|RlVisemeComponent::GetVisemeMorphWeights(): Used to get the weight of each Morph of viseme.
 
|-
 
|-
!scope="row"|RlVisemeComponent::GetVisemeBones()
+
!scope="row"|RlVisemeComponent
|Used to get the Bone used by Viseme.
+
|RlVisemeComponent::GetVisemeBones(): Used to get the Bone used by Viseme.
 
|-
 
|-
!scope="row"|RlVisemeComponent::GetVisemeKeys()
+
!scope="row"|RlVisemeComponent
|Used to get the time of all Viseme keys, and return RTime as an array.
+
|RlVisemeComponent::GetVisemeKeys(): Used to get the time of all Viseme keys, and return RTime as an array.
 
|-
 
|-
!scope="row"|RlVisemeComponent::GetVisemeKey( args... )
+
!scope="row"|RlVisemeComponent
|Used to get the VisemeID and Weight of Viseme at a specified point in time. Usage: RlVisemeComponent::GetVisemeKey( RO::RTime kTime, RO::EVisemeID& eVisemeID, float& fWeight )
+
|RlVisemeComponent::GetVisemeKey( RO::RTime kTime, RO::EVisemeID& eVisemeID, float& fWeight ): Used to get the VisemeID and Weight of Viseme at a specified point in time.
 
|}
 
|}
 
</div></div>
 
</div></div>

Revision as of 21:07, 25 December 2019

Main article: iClone Python API.

The iClone Python API helps you to extend and customize iClone, and more easily integrate it into a Python-based pipeline. It provides a bridge between iClone and Python libraries and Python tools. The Python SDK is built on top of the iClone C++ SDK, and you can access a subset of the iClone API from Python scripts and execute them in iClone.

The iClone Python API can do the following:

Character Prop Camera Light
Std(G5, CC, etc.) Non-Std Non-Human
Transformation (RTS) 7.4 7.4 7.4 7.4 7.4 7.4
Facial Expression 7.4 Mo-cap Module 7.4 Mo-cap Module - - - -
Morph Animation 7.4 Experimental 7.4 Experimental 7.4 Experimental 7.4 Experimental -
Material 7.4 Experimental 7.4 Experimental 7.4 Experimental 7.4 Experimental 7.4 Experimental
Parameters - - - - 7.4 Experimental 7.4 Experimental

Capabilities

As the iClone Python API continues to evolve, additional capabilities will be added over time. Below are lists of iClone Python API's current capabilities categorized by version number. The lists below are by no means exhaustive.

v0.7

[Expand]
iC 7.4x

v0.7.1

[Expand]
iC 7.4x ( 01/17/2019 - 01/31/2019 )

v0.7.2

[Expand]
iC 7.4x ( 02/15/2019 - 02/27/2019 )

v0.7.4

[Expand]
iC 7.5 ( 04/08/2019 - 07/01/2019 )

v0.7.5

[Expand]
iC 7.6 (07/05/2019 - 07/29/2019)

Limitations

As the iClone Python API continues to evolve, limitations may expand or contract over time. Below are lists of iClone Python API's currently known limitations. This list is not exhaustive.

Inoperable Assets

The following items can not be manipulated and acted upon with Python scripting:

  • Particle FX (iClone & PopcornFX)
  • SpeedTrees
  • Substance Materials
  • Textures Images
  • Constraints: Path, Spring, LookAt, Link, Physics, etc.
  • Physics (Soft & Rigid)
  • IK end-effectors (control attached props instead to drive IK reach)
  • Mesh level components: vertices, edges, faces, etc.
  • Preview camera

Unsupported Operations

The following operations are not available via Python scripting:

  • Saving iClone formats: iProjects, iAvatars, iProps, etc.
  • Pixel operations: multiply, add, overlay, etc.
  • Image processing: Brightness, Hue, Saturation, Sharpen, Soften, Blend, etc.
  • Render parameter settings (Project settings can not be changed)
  • Facial lip-sync keying
  • Preference settings
  • Attach/Detach: changing object parent-child relation
  • Align motion/character root alignment
  • Modeling operations: manipulation of mesh components