Difference between revisions of "IC Python API:Hand Gestures Puppeteering"
Chuck (RL) (Talk | contribs) m (→Verson 2.0) |
Chuck (RL) (Talk | contribs) m (→Version 2.0) |
||
(4 intermediate revisions by the same user not shown) | |||
Line 11: | Line 11: | ||
== Descripton == | == Descripton == | ||
− | The ability to customize and create new tools to facilitate character animation is one of the main draws of the iClone Python API. This example demonstrates the use of an intuitive graphical user interface to drive the hand gestures of a character. Once the script is applied, a Hand Gestures Puppeteering dialog window will appear with 6 quadrant gesture controls. The user can | + | The ability to customize and create new tools to facilitate character animation is one of the main draws of the iClone Python API. This example demonstrates the use of an intuitive graphical user interface to drive the hand gestures of a character. Once the script is applied, a Hand Gestures Puppeteering dialog window will appear with 6 quadrant gesture controls. The user can move the mouse within the interface to blend the hand gestures in midst of the 6 quadrants for a smooth transition every time. |
− | === | + | === Version 1.0 === |
− | + | Convenient hotkeys are provided so the mouse can remain pre-occupied with controlling the blend position: | |
+ | |||
+ | *[P] starts and stops the preview mode. Under this mode, the user can test out various blend styles without having to actually record the motion into the timeline. | ||
+ | *[Space] starts and stops the recording. Use this to record the motions to the timeline to preserve it for playback. | ||
+ | *[B] for switching between the two blend modes, see below for more information. | ||
+ | |||
+ | Two blending options are available: | ||
+ | |||
+ | *2-Point Blend allows for blending of the nearest two points to the control point. | ||
+ | *Multi-Point Blend allows for blending of all 6 quadrants from any position within the control wheel. | ||
+ | |||
+ | === Version 2.0 Improvements === | ||
+ | |||
+ | Fixes: | ||
+ | |||
+ | *2-Point blend bug. | ||
+ | *Blending errors between the gesture points. | ||
+ | *Left hand capture bug. | ||
+ | *Crash from opening and closing the script dialog window. | ||
+ | *Recording no long deletes original clips within the timeline. | ||
+ | *Discrepancies between the blending parameter and the resulting effect. | ||
+ | |||
+ | Enhancements: | ||
*Silent initialization: removed Console Log print when loaded. | *Silent initialization: removed Console Log print when loaded. | ||
− | |||
*Changed recording hotkey to "R" instead of the space bar. | *Changed recording hotkey to "R" instead of the space bar. | ||
*Rearranged the user interface by grouping the relevant controls. | *Rearranged the user interface by grouping the relevant controls. | ||
*Removed individual Preview and Record hotkeys. | *Removed individual Preview and Record hotkeys. | ||
+ | *Removed influence on the movement of the wrists. | ||
+ | |||
+ | New Features: | ||
+ | |||
+ | *Add separate preview and recording for each hand; Now supports both hands, left, or right hand. | ||
*Added Preview and Record button and activation via the space bar, similar to the Motion Puppet and Direct Puppet tool. | *Added Preview and Record button and activation via the space bar, similar to the Motion Puppet and Direct Puppet tool. | ||
− | + | *Blend points are now replaceable with Right Hand, Left Hand, and revertible to Default Gestures. | |
− | + | ||
− | *Blend points are now replaceable with Right Hand, Left Hand, and | + | |
*Blend point icons can now be replaced with a screenshot or an existing image file. | *Blend point icons can now be replaced with a screenshot or an existing image file. | ||
*Blend point data can now save and load via preset files. | *Blend point data can now save and load via preset files. | ||
*Blend point icons now scale as the blend weighting increases instead of highlighting in green. | *Blend point icons now scale as the blend weighting increases instead of highlighting in green. | ||
*UI disabled state is now more obvious and consistent. | *UI disabled state is now more obvious and consistent. | ||
− | |||
− | |||
*Three completely new presets: "Standard", "Male", and "Female". | *Three completely new presets: "Standard", "Male", and "Female". | ||
*The UI will now store the state of the prior session. | *The UI will now store the state of the prior session. |
Latest revision as of 00:39, 30 December 2020
- Main article: Various Lessons.
Demo Video
Descripton
The ability to customize and create new tools to facilitate character animation is one of the main draws of the iClone Python API. This example demonstrates the use of an intuitive graphical user interface to drive the hand gestures of a character. Once the script is applied, a Hand Gestures Puppeteering dialog window will appear with 6 quadrant gesture controls. The user can move the mouse within the interface to blend the hand gestures in midst of the 6 quadrants for a smooth transition every time.
Version 1.0
Convenient hotkeys are provided so the mouse can remain pre-occupied with controlling the blend position:
- [P] starts and stops the preview mode. Under this mode, the user can test out various blend styles without having to actually record the motion into the timeline.
- [Space] starts and stops the recording. Use this to record the motions to the timeline to preserve it for playback.
- [B] for switching between the two blend modes, see below for more information.
Two blending options are available:
- 2-Point Blend allows for blending of the nearest two points to the control point.
- Multi-Point Blend allows for blending of all 6 quadrants from any position within the control wheel.
Version 2.0 Improvements
Fixes:
- 2-Point blend bug.
- Blending errors between the gesture points.
- Left hand capture bug.
- Crash from opening and closing the script dialog window.
- Recording no long deletes original clips within the timeline.
- Discrepancies between the blending parameter and the resulting effect.
Enhancements:
- Silent initialization: removed Console Log print when loaded.
- Changed recording hotkey to "R" instead of the space bar.
- Rearranged the user interface by grouping the relevant controls.
- Removed individual Preview and Record hotkeys.
- Removed influence on the movement of the wrists.
New Features:
- Add separate preview and recording for each hand; Now supports both hands, left, or right hand.
- Added Preview and Record button and activation via the space bar, similar to the Motion Puppet and Direct Puppet tool.
- Blend points are now replaceable with Right Hand, Left Hand, and revertible to Default Gestures.
- Blend point icons can now be replaced with a screenshot or an existing image file.
- Blend point data can now save and load via preset files.
- Blend point icons now scale as the blend weighting increases instead of highlighting in green.
- UI disabled state is now more obvious and consistent.
- Three completely new presets: "Standard", "Male", and "Female".
- The UI will now store the state of the prior session.
- The UI can now return the default factory state, with a press of a button.
- Now supports transitioning between the end of the recorded clip and any existing clip in the timeline.
- End transition period can be adjusted (number of transition frames).
Course Prerequisites
You should familiarize yourself with the following fundamental articles before you proceed:
Link | Purpose |
---|---|
Using Temp Data | Learn to read/write temporary data. |
Embedding QML | A soft introduction to creating QML ui and embedding it into iClone. |
Merge All Clips | Take advantage of new and powerful merge clip capability in v7.83. |
Takeaway Lessons
- Simulate Mocap device to control Character motion.
- Create UI using QML.
- Read and write temporary data without dealing with file access permissions.
Required Files
- Hand Gestures Python script -included in Python samples (main.py)
- Hand Rig Python script (handrigger.py)
- User interface Python script (KeyData.py)
- Bone data required by the hand rigger script (BoneData.py)
- User interface markup language file for QT (resource/qml folder)
You can download this plugin from the Reallusion Marketplace. To acquire and view the source code, please visit Reallusion GitHub.
Usage Instructions
- Inside iClone, load a standard or non-standard character.
- Initiate the Hand Gestures Puppeteering script (Plugins > Python Samples > Hand Gestures Puppeteering).
- Press Preview button and space-bar to start the preview process without recording to the timeline.
- Move the mouse around within the control wheel of the Hand Gestures Puppeteering window and watch as the hands begin to move and blend between the 6 different poses.
- Switch between 2-Point and Multi-Point Blend to try out the different blending options via the Blend Mode: menu.
- When you are ready to start recording an animation, press the Record button and space-bar to begin.
- Finish the recording by pressing the space-bar again and play the timeline to review the recorded animation.
APIs Used
You can research the following references for the APIs deployed in this code.
main.py
- RLPy.RPyTimerCallback.__init__()
- RLPy.RGlobal.GetTime()
- RLPy.RGlobal.GetEndTime()
- RLPy.RGlobal.SetTime()
- RLPy.RUi.CreateRDialog()
- RLPy.RUi.GetMainWindow()
- RLPy.RUi.AddMenu()
- RLPy.RUi.AddHotKey()
- RLPy.RPyTimer()
- RLPy.REventHandler.UnregisterCallbacks()
- RLPy.RUi.RemoveHotKey()
- RLPy.RDialogCallback.__init__()
- RLPy.REventCallback.__init__()
- RLPy.REventHandler.RegisterCallback()
- RLPy.RUi.OpenFileDialog()
- RLPy.RScene.GetSelectedObjects()
- RLPy.RGlobal.IsPlaying()
- RLPy.RGlobal.Pause()
- RLPy.RGlobal.Play()
- RLPy.RUi.SaveFileDialog()
- RLPy.RUi.ShowMessageBox()