playcanvas / playcanvas/engine
Feature Request - Dual Quaternion Skinning
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 16.8k
- Forks
- 2k
- Avg merge
- 4h 32m
- Merged PRs (30d)
- 222
Description
We are a team, doing research on the animation pipeline for the next prototype.
This time, we are doing some muscle'y strong guys. And during some of my rigging and testing, I found that, when twisting arms espescially, these buffed guys almost "fall apart", due to "candy wrapper" issues arising, when twisting limbs.
Muscles basically "dissapear", and arms get much thinner. The workaround for now, is adding some twistbones (not too many of course), but it would be awesome to get an idea of where you guys are going (if at all) with the idea of adding Dual quaternion skinning - to minimize wolume-shrinking as a reault of twisting limbs on characters.
Here's an explanation of the issue: https://www.youtube.com/watch?v=4e_ToPH-I5o
Here's an example of twisting the arm of this strong guy (extra twistbones help remove part of the candy wrapper issue).
Look at the end of the gif - here, you can see how dual quaternion skinning helps keep more of the musclevolume.

Best, Jesper Colding
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
The issue names no file, test, or entry point. Start by locating the engine's animation and skinning pipeline and compare the current behavior with the linked dual-quaternion explanation and example. Done would require an agreed implementation scope plus evidence that twisting limbs preserves muscle volume without relying on extra twistbones.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript
- Domain
- computer-graphics, game-dev
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 20/100