Comments (9)
Correctives have (so far) been handled by scripts not associated with simplex. To the solver, a corrective is just another shape. It's just a shape that happens to interact with other deformations.
It is, however, something I've meant to add to the extra tools, but I've never gotten around to it. Mostly because we have scripts to do it, the scripts we have are XSI specific, and I personally haven't put much work into consolidating the toolset for XSI.
from simplex.
That said, there's a really neat way of building correctives over top of a smooth skin (so long as it's only smooth skin).
First, pose the character, and store the points.
Then you add a deformation of 1 unit in X to each point before the skin, store the result, and undo.
Then add a deformation of 1 unit in Y, store that, undo, Z, store that, undo.
You end up with Pose, 1X*Pose, 1Y*Pose, 1Z*Pose. Subtract the Pose from the 3 with unit deforms and you get 3 sets of vectors. Along with the original pose, you can use them to directly construct a matrix per point. Then just invert those matrices out from under each of your shape's points to give you the corrective deltas.
from simplex.
lol, I had to read it a few times, but I get it. That's really, really cool. Cheers!
from simplex.
okay, quick question about this. the vectors that are being created from subtracting the pose from the 3 vectors; 1XPose, 1YPose, 1Z*Pose, are those being normalized? is that what you mean by "with unit deforms"? or does the resulting matrix at each point need unnormalized vectors for the first 3 rows?
from simplex.
Oh, I only said "unit vectors" because the xform added before the skin was 1 unit.
The vectors you get at the end need to stay unnormalized for everything to work properly.
from simplex.
ah gotcha. okay one more thing :)
the shape points that you're then multiplying by those inverted matrices. are those points in worldspace? or are they vectors created from subtracting the skinned points from the shape points?
from simplex.
The idea is you come up with a matrix per deformed point, and then get your shape's point in the space of that matrix. So you're going from the shape's worldspace to the point's local space. Then, you could technically multiply those local space vectors by any per-point matrix to transfer that shape to other shapes. But we're going for that shape in rest-space, and those matrices are just the position offset of each vertex, so you can simplify things and just add the vector to the undeformed point position.
tl;dr You input worldspace points, and get back offset vectors.
from simplex.
ahhhh, okay. that makes sense now. Many Thanks!
from simplex.
rough first draft, but seems to work well enough
https://gist.github.com/illmillrig/e104bb7a48d7c583ed0be1efa30af995
from simplex.
Related Issues (20)
- Don't allow invalid names HOT 1
- Changing combo and slider names doesn't update progression names HOT 1
- Switch over to Qt.py HOT 1
- Add an installer and Github update option
- Creating two combos with the same input sliders HOT 1
- Connecting combos breaks things HOT 1
- Add new solver shape type: Traversal HOT 1
- Make setting values from the UI into 1 undoable action HOT 1
- Include UV's in the .smpx output HOT 1
- Update combo names on slider name change HOT 3
- Interpolation type doesn't stick HOT 1
- split by map HOT 8
- multi split combo permutations HOT 4
- Missing 'numpy' module HOT 1
- [Bug]: extract combo not connected to the blendshape node when one of the sliders is not at 1 HOT 3
- [Bug]: slider not work at mouse middle click - HOT 5
- [Request]: Make splitting naming more robust and extensible
- [Request]: how to build for centos 7? HOT 1
- [Bug]: HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from simplex.