Version 1.0.0:
- Twisted_Skeleton3D node and Twisted_Bone3D nodes. These nodes make it simple to edit bone transforms both in Godot, and in the Godot editor.
- Twisted_Bone3D nodes can follow and override the global poses of any bones in a Godot Skeleton. You can use the normal transform gizmo to edit poses directly in the Godot editor. Translation, rotation, and scaling all supported.
- This makes it easier than ever to animate 3D models entirely in Godot! You can combine the Twisted_Bone3D nodes with Godot's powerful AnimationPlayer node to make stunning hand-done animations.
- Twisted_Bone3D nodes all face in the same direction: It's always the negative-Z axis, the default Godot forward direction, that is forward for all Twisted_Bone3D nodes regardless of the 3D model used!
- This is thanks to the new Twisted_Skeleton3D node, which takes the bone rotations and converts them to the correct forward direction for the skeleton. This process is done automatically, but you can also manually tell the Twisted_Skeleton3D node which direction is forward for maximum control.
- This makes writing anything that works with bones, like IK, much easier as there isn't any guess work or special considerations needed to be taken into account for bone forward directions.
- It also allows you to use the Transform class's look_at function with bones!
- Only add the bones you need. You do not have to
have Twisted_Bone3D nodes for every single bone in the Skeleton. You can pick and
choose which bones you need for maximum performance.
- You do need to make sure the node tree is correct, but outside of that, there is no constraints. For example, the head bone needs to be a child of the neck bone if you are going to override the head pose. However, if the neck bone is only following the bone pose, it does not have to be a child of the spine bone! Only bones that are overriding have to have the proper bone/node tree layout.
- All Twisted_Bone3D nodes have a length property, as it's needed for several IK solvers so it knows how long the bone is.
- This is automatically calculated for you, with only leaf/tip bones needing manual input! You can also override the automatic system and manually input the bone length if you need.
- Twisted_Bone3D nodes can follow and override the global poses of any bones in a Godot Skeleton. You can use the normal transform gizmo to edit poses directly in the Godot editor. Translation, rotation, and scaling all supported.
- New and enhanced IK for 3D. Each IK algorithm is in a modifier node that exposes properties that change how the IK algorithm works.
- (2D coming in a future update! For now the plugin only supports 3D)
- Mix and match IK to get the procedurally animated result you are looking for. Each IK modifier node is standalone and they are designed so they can be used on their own or together. This is especially useful for full body IK, which requires using multiple IK solvers.
- Over 5 IK solvers so far! This includes well known IK solvers like FABRIK and CCDIK.
- The IK solvers are listed in more detail a little further below.
- The base IK modifier class is fully expandable, allowing you to create your own IK modifiers.
- IK modifiers currently only work with the new Twisted_Bone3D nodes.
- The following IK solvers are fully implemented and working in 3D: LookAt, CCDIK, FABRIK, TwoBoneIK, Jiggle, and CurveIK!
- LookAt - Rotates a bone to look at a target node. This node is extremely helpful for making a character look at an item of interest. Example uses cases for LookAt are rotating heads and eyes of a 3D character to look at the player.
- Additional rotation adjustments can be added! For example, you can add bone twist, or adjust the final result slightly so the bone is looking at the target with a small offset.
- CCDIK - Coordinate Cyclic Decent Inverse Kinematics (CCDIK) is a well-known and utilized IK solver. CCDIK works by rotating bones on a single hinge, going through a chain and applying hinge rotation to each bone. CCDIK works great with angle constraints and is very performant. Example use cases for CCDIK are rotating a turret to face the player, moving robotic arms, or really anything that can use hinge-like joints.
- FABRIK - Forward And Backwards Inverse Kinematics (FABRIK) is an extremely well-known and utilized IK solver. FABRIK works by solving first in a forwards pass, and then in a backwards pass. This gives FABRIK a very natural looking result without being too costly for performance. FABRIK is one of the most popular IK solvers in game development because of its power and flexibility. Example use cases for FABRIK are for the arms of a FPS character, the legs of a character so they can stand on uneven terrain, or almost anything!
- Godot's SkeletonIK node uses FABRIK! FABRIK is a really solid and reliable IK solver.
- Every FABRIK joint in Twisted IK 2 can have its own magnet position and additional rotation, for maximum control and flexibility.
- Currently FABRIK does not have constraint support. This may come in a future update though!
- TwoBoneIK - A IK solver that uses the law of cosigns to find a set of angles for both bones so the tip of the second bone reaches the target position. Two Bone IK is a great IK solver for arms and legs, as it's faster than FABRIK but gives similarly natural looking results. Example use cases for Two Bone IK is for arms and legs of a character, the arms for VR, or really any joint that is composed of just two bones.
- An optional pole node can be used to control the direction that the two bones bend in. This is extremely helpful for getting a consistent, controlled result every time.
- Jiggle - A IK* solver (technically not IK...) that moves a series of bones using a simplified physics algorithm. Jiggle is designed to give bones a wiggly bit of motion in a controllable way. Example use cases for Jiggle are strands for hair, edges of clothing, or really anything that needs small, procedurally animation and motion.
- Jiggle can also detect collision objects in Godot! If enabled, when solving Jiggle will attempt to avoid clipping into collision geometry.
- * Technically Jiggle is a FK, or Forwards Kinematics, solver. I'm counting it as IK here though because its used and written in a method that is very similar to IK.
- Can use either a target node, or a target Vector3 direction! Also, can send motion down the chain for more predictable results (less jiggly though) or have each joint calculate its own motion without taking the parent joint's motion into account (more jiggly, especially further down the chain. Harder to control)
- CurveIK - A IK* solver that manipulates a set of bones so that it follows the path defined in a curve. Using Godot's Path3D node, you can move bones along a curve to get really nice, curvy results with your 3D models. Example use cases for CurveIK are for hair, spider arms/legs, or anything whose position and rotation you want to map to a 3D curve.
- Can stretch and scale to fit the curve, or just follow without any manipulation! Its a really flexible, but really awesome IK* solver!
- * Technically CurveIK is a FK, or Forwards Kinematics, solver. I'm counting it as IK here though because its used and written in a method that is very similar to IK.
- LookAt - Rotates a bone to look at a target node. This node is extremely helpful for making a character look at an item of interest. Example uses cases for LookAt are rotating heads and eyes of a 3D character to look at the player.
- New Twisted_PhysicsBone3D node: Use Godot's physics engine to add physics to the bones in your 3D character!
- The new Twisted_PhysicsBone3D extends Godot's RigidBody node, giving you access to the familiar API and features.
- An optional origin offset can be applied so you can position the center of mass of the Twisted_PhysicsBone3D to the center of the bone in the 3D model, giving more realistic physics results.
- Scaled Skeletons are not a problem with the Twisted_PhysicsBone3D node! Input in the size of the Skeleton and it will dynamically handle scaling, allowing it to be used freely with scaled skeletons and bones.
- Works with all the Godot 3D physics joints.
- New Twisted_PhysicsBoneMotor3D node included: Allows for applying forces to a set of bones so that it reaches a target node! This shows one way that the Twisted_PhysicsBone3D node can be used as a dynamic, controllable rag-doll!
- Dynamic, controllable rag-dolls still need work before they are comparable to offerings in other game engines, but these nodes are a great first step in that direction!
- The Twisted_PhysicsBone3D only works with the new Twisted_Skeleton3D node.
- Godot editor plugin included. A Godot editor plugin is included to help give editor-specific functionality to the plugin.
- Currently the only feature being the ability to quickly create new Bone3D nodes from a new Skeleton without having to make each one manually.
- More features coming soon!
- All of the code is written in C#, for fast performance and portability.
- Because everything here is a plugin, you do not need to build Godot from source or touch any C++ code. Just drop the plugin in your project, build the C# source in Godot, and you are ready to go!
- No C# libraries or external code used! Its super portable code that should work in any Godot C# project and platform.
- C# source code included (restrictions apply! Please see FAQ for more info)
- Fully supports Godot 3.2+, no waiting for Godot needed.
- All new nodes start with "Twisted_" and use yellow and orange color scheme, so you can quickly find the node you are looking for in the Godot editor.
- If you want to find one of the new nodes, just search "Twisted_" in the new node search menu and all of the nodes will pop up!