IC Python API:Spring Joints
From Reallusion Wiki!
Revision as of 00:47, 13 February 2020 by Chuck (RL) (Talk | contribs) (Chuck (RL) moved page IC Python API:Spring Bones to IC Python API:Spring Joints)
- Main article: RL Python Samples.
Demo Video
Description
Spring bones allows you to apply spring physics to designated bones in the scene. The spring effect is calculated using an algorithm that takes into account several physics elements such as stiffness, bounciness, and damping. This script is versatile and can turn any existing bone or prop hierarchy into an active physics spring chain. You can also create a prop chain by attaching various props together and apply spring physics using this plugin.
Course Prerequisites
You should familiarize yourself with the following fundamental articles before you proceed:
Link | Purpose |
---|---|
Takeaway Lessons
- Apply spring physics to bones or attached props.
- Create a tree list view to represent bone hierarchies.
- Update UI by receiving callback events.
- Using Timer events.
Required Files
- Sample project.
- Spring bones Python script.
- Extensions Python script.
Usage Instructions
- Load or create a scene with Props attached in a required order.
- Move and/or rotate the objects around the scene.
- Load the Spring Bones script and select the desired joints in the Bones tree list view.
- Adjust the Stiffness, Bounciness, and Dampness settings:
- Stiffness: how rigid are the joints?
- Bounciness: how likely will the joints swing back and forth?
- Dampness: how fast do the joints come to a complete stop?
- You could use the [Start Simulation] button to test the spring parameters and using[Stop Simulation] to stop it.
- After you are satisfied with your settings, click the [ Apply Setting ] button and watch the bone chain swing around as the objects moves.
- You could use [Clear Key] to remove the result.
Code Flow
APIs Used
You can research the following references for the APIs deployed in this code.
main.py
- RLPy.RPyTimerCallback.__init__()
- RLPy.REventCallback.__init__()
- RLPy.RDialogCallback.__init__()
- RLPy.REventHandler.UnregisterCallback()
- RLPy.RVector3()
- RLPy.RMatrix4()
- RLPy.RQuaternion()
- RLPy.RMath.ACos()
- RLPy.RMath.AlmostZero()
- RLPy.RMath.CONST_PI) or RLPy.RMath.AlmostZero()
- RLPy.RUi.GetMainWindow()
- RLPy.RUi.AddMenu()
- RLPy.REventHandler.RegisterCallback()
- RLPy.RGlobal.SetTime()
- RLPy.RPyTimer()
- RLPy.RGlobal.Play()