Comments (4)
Hi Chad,
Sorry for the late reply.
I have looked thru the dataset you sent and found that the initialization does not work when the model is dominated by static (non-deformed) geometry. In this case, the back of the head and back of the neck (non-deformed) are relatively larger than the frontal parts (deformed). The [cluster splitting] will fail:
dem-bones/include/DemBones/DemBones.h
Line 516 in 2ab9b04
There are some practical fixes you could do:
- Removing the static geometries from the data, e.g. the back of the head.
- Changing the distance function for cluster splitting: change this line to
double tmp=e*(u.col(i)-cu.col(j)).norm();
. The original function is reported in Equation 1 of Robust and Accurate Skeletal Rigging from Mesh Sequences. But this is a "hacky" solution.
from dem-bones.
Hi,
I have encountered an infinite loop myself on a cloth simulated sphere model. (files attached). It works with nBones=30 and below but runs into an infinite loop on nBones=40.
1 animated mesh sequence(s):
"ballAnim.abc" + "ball.fbx" --> "Decomposition_40.fbx"
Parameters:
nBones (target) = 40
nInitIters = 10 (default)
nIters = 30 (default)
nTransIters = 5 (default)
nWeightsIters = 3 (default)
bindUpdate = 0 (no update) (default)
transAffine = 10 (default)
transAffineNorm = 4 (default)
nnz = 8 (default)
weightsSmooth = 0.0001 (default)
weightsSmoothStep = 1 (default)
Checking ABCs:
"ballAnim.abc": /pSphere1/outputCloth1 (313 frames)
Reading ABCs.................................................... Done!
Reading FBXs:
"ball.fbx"... Done!
382 vertices
Initializing bones: 1>2>4>8>15>20>23>26>28>29>29>29>29>29>29>29>29>29>29>29>29>29>29>
from dem-bones.
Hi Max,
The bones initialization will try to allocate at least nnz vertices per bone. Bones with less than nnz vertices will be removed (here).
In your case, the initialization stopped at [nBones=29] * [nnz=8] = 232/382 vertices when the initialization cannot insert more bones in the gaps between vertices.
You can fix it either by:
- Reducing nnz,
- Or modifying the code to, e.g. pruneBones(4).
However, the result will be impractical because skinning will use almost the same amount of data as alembic cache.
from dem-bones.
Fixed in v1.1.0
from dem-bones.
Related Issues (20)
- Could it be possible to transform joint scale? HOT 1
- how to compile in debug mode HOT 2
- Question about rigid transformation from covariance matrix HOT 2
- Question about transAffine and transAffineNorm regularizers HOT 4
- Question: Binaries HOT 2
- Can dem-bones work directly on a PLY or OBJ sequence? HOT 2
- Question about your convexLS solver HOT 7
- The dem bones llvm library executable not working on M1 Macbooks HOT 2
- Question: Dembones Gui HOT 2
- Animation of the skeleton fitted to mesh animation with only rotation change in each keyframe HOT 8
- Question about lockW/lockM HOT 1
- Weird Composition Result
- Can it decompose multi sequences with the same initial pose in the meantime?
- Patience & Tolerance values hard-coded to 3 and 1e-3 respectively HOT 1
- 20 bones are generated in the setting, but 1 bone is actually generated
- Any plans for Maya 2023+ support?
- Err
- DemBones.exe is infected with Gen:Variant.Lazy.247481 HOT 1
- DemBones.exe instantly closes after opening
- compute joint scale
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 dem-bones.