Difference between revisions of "IC Python API:Pose Manager"
Chuck (RL) (Talk | contribs) m (→Demo Video) |
Chuck (RL) (Talk | contribs) m (→Required Files) |
||
Line 78: | Line 78: | ||
*Character motions or poses. | *Character motions or poses. | ||
− | You can download this plugin from the [https://marketplace.reallusion.com/ | + | You can download this plugin from the [https://marketplace.reallusion.com/pose-manager Reallusion Marketplace]. |
− | To acquire and view the source code, please visit [https://github.com/reallusion/iClone/tree/master/ | + | To acquire and view the source code, please visit [https://github.com/reallusion/iClone/tree/master/Pose_Manager Reallusion GitHub]. |
== Usage Instructions == | == Usage Instructions == |
Latest revision as of 00:47, 12 March 2020
- Main article: RL Python Samples.
Demo Video
Description
Pose Manager can be used to record a character’s pose for the current frame as snapshots. These pose snapshots can be edited, organized and saved as part of a Pose Library. Pose Manager allows you to load, edit, and overwrite existing Pose Libraries. You can apply these pose snapshots to any other character with compatible rigging. The target character will immediately assume the pose of the snapshot to the best of its abilities.
Feature Rich Interface
The interface is composed of several interface groupings: Library, Pose, Pose List, Masking, Right Hand, and Left Hand.
Group | Description |
---|---|
Library | Contains the name of the pose library, which is the same as the file name. Has the ability to load, save, and create an empty new library. |
Pose | Contains a 128x128px preview image for the currently selected pose. Also has tools for the current pose such as mirror, mirror Left (Symmetry), mirror Right (Symmetry), and the ability to add poses. |
Stored Poses | Contains a list of all the added poses. Also has tools to rename, overwrite, and remove poses; as well as the ability to move pose entries up and down the list. The Bone Rotations sections allows one to restrict certain bone rotational axes (x, y, z). |
Masking | Contains full body masking buttons, excluding the fingers. Also has Tools to clear the current masks or invert the current mask selections including the right and left hands. |
Right Hand | Contains the right hand finger masking buttons. Includes a button to invert the current right hand finger mask selections. |
Left Hand | Contains the left hand finger masking buttons. Include a button to invert the current left hand finger mask selections. |
Course Prerequisites
You should familiarize yourself with the following fundamental lessons before you proceed:
Link | Purpose |
---|---|
List View | Learn to create a Qt list view and add functionality to edit list entries. |
Icons and Images | Learn to deploy icons and images inside a user interface. |
Serialize Pose | Learn to serialize a character's pose data for file storage. |
Screenshotting | Take advantage of features in Qt to grab screenshots. |
Saving JSON | Know how to handle JSON data for file storage. |
Takeaway Lessons
- Read motion bone local transformation data.
- Save, load, and edit data.
- Apply motion bone transformation.
Required Files
- Pose Manager Python script.
- Characters and props in the iClone scene.
- Character motions or poses.
You can download this plugin from the Reallusion Marketplace.
To acquire and view the source code, please visit Reallusion GitHub.
Usage Instructions
- Clone or download the Reallusion/iClone GitHub.
- Copy Pose_Manager folder into the iClone install directory > ...\Bin64\OpenPlugin.
- Load the script into the project from the menu: Plugins > Python Samples > Pose Manager.
- Load or create a scene with an avatar and pose it as desired.
- Load the Pose Manager script and select the avatar.
- Click the Add Pose button add an entry to the Pose List.
- Load another avatar with compatible rigging.
- Double-click on the new Pose List entry to apply the pose to the other avatar.
- Feel free to play around with the other Pose Manager settings.
Code Flow
APIs Used
You can research the following references for the APIs deployed in this code.
- RLPy.RPyTimerCallback.__init__()
- RLPy.RScene.GetSelectedObjects()
- RLPy.RUi.ShowMessageBox()
- RLPy.RMatrix3()
- RLPy.RQuaternion()
- RLPy.RGlobal.GetTime()
- RLPy.RGlobal.Stop()
- RLPy.RGlobal.SetTime()
- RLPy.RTime.IndexedFrameTime()
- RLPy.RGlobal.GetFps()
- RLPy.RUi.GetMainWindow()
- RLPy.RScene.ClearSelectObjects()
- RLPy.RPyTimer()
- RLPy.RScene.SelectObjects()
- RLPy.RUi.CreateRDialog()
- RLPy.RUi.AddMenu()