Giter VIP home page Giter VIP logo

Comments (4)

binhhuyle avatar binhhuyle commented on August 11, 2024

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:

void split(int maxB, int threshold) {

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.

mmallmann avatar mmallmann commented on August 11, 2024

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>

decompData.zip

from dem-bones.

binhhuyle avatar binhhuyle commented on August 11, 2024

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.

binhhuyle avatar binhhuyle commented on August 11, 2024

Fixed in v1.1.0

from dem-bones.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.