Jump to content

Houdini Solids vs Maya DMM plugin...?


Zach

Recommended Posts

I've got my learning pants on this week, and it's time to tackle this here finite element business here. Dropping the alembic octopus down a never-ending staircase has lost some of its magic, so it's time to hunker down and figure out how to make my solids behave like the real-world materials we know and love.

I believe Maya ships with Pixelux's Digital Molecular Matter plugin, which, from what I've read, is a FEM solution for Maya that's been out for at least a couple of years. I also understand MPC's in-house FEM solution, Kali, was built on top of DMM. So, before I go any further, it's important to note that I've never used the DMM plugin in question - I've just done some reading about it. I'd love to hear from anyone who has experience with it. Really, I'm just trying to better understand Houdini by looking at its similarities and differences from other applications.

What I'm after is some real-world material values to help me get started and make sense of configuring Solid Object material properties. Fortunately, the DMM plugin ships with examples; but, unfortunately, the parameter settings don't exactly match up to what we have in Houdini, which isn't too surprising. Still, it would be great to "port over" DMM material libraries to Houdini, if that's at all possible.

I know setting up materials to behave realistically is likely a much more delicate process than just filling in parameter values - this is Houdini after all, where the easy is difficult, and the impossible is easy - but I wanted to see if anyone knows how the DMM material parameters map onto Houdini's Solid Object properties.

Here are the DMM plugin material parameters, as defined by the documentation:

Youngs
(stiffness)

How stiff a material is - larger values mean stiffer, smaller values mean more elastic

Youngs Damp

How much energy the material dissipate as heat when under stress

Poissons
(volume preservation)

How is volume preserved when objects stretch - zero means perfect volume preservation, positive values mean volume increases when stretched, negative numbers mean volume decreases when stretched (cartoon like)

Density

How many kilograms per meter cubed the material has - defines the weight

Toughness

How easily does the object fracture. Bigger numbers are tougher. Zero is a special case, it means unbreakable.

Yield
(plastic deformation start)

How far the material must deform before it stays deformed (values 0 to 1)

Max Yield
(deformation limit)

Maximum amount of plastic deformation beyond which it will spring back (values 0 to 1)

Creep
(plastic deformation speed)

How fast a material can deform and stay deformed (how fast it can plastically deform) (values 0 to 1)

Friction

Friction coefficient. Smaller numbers are more slippery.

Wakeup Radius

If the object is resting, it's how far (in meters) around an impact point will the object be affected on impact

From what I can tell, there are a few parameters that match up, or are relatable. This is just conjecture, and if anyone knows better and/or can help me fill in the gaps, it would be appreciated. (DMM : Houdini):

  • Youngs : Stiffness (Overall * Relative)
  • Youngs Damp : Overall Damping Ratio * Relative Damping Ratios * 2 * sqrt(Stiffness) * Density?
  • Density : Density
  • Toughness : Fracturing --> Fracture Threshold?
  • Poissons : Balance between Volume Stiffness and Volume Damping?
  • Yield : ?
  • Max Yield : ?
  • Creep : ?
  • Friction : Collisions --> Properties --> Friction

As far as Young's Damp is concerned (which doesn't seem to be a ratio at all - more like a large number, I guess no more than a tenth of Young's Modulus), it seems we have something a little more subtle - an overall damping ratio and relative damping ratios that correspond to stretch, shear, and volume properties implicit in the solid. The Solid Configure Object DOP within the Solid Object asset computes three "damping" variables, respectively, as:

ch("../overalldampingratio") * ch("../relativedampingratio#") * 2 * sqrt(ch("stiffness1") * ch("volumemassdensity"))

Does that mean a Young's Damp value in DMM needs to be divided by (2*sqrt(Stiffness)*Density) to derive, at least, an overall damping ratio (if we assume the relative ratios are all one - can we assume that for DMM?)

Poisson's: I'm guessing preservation of volume is governed by the Volume Stiffness and Volume Dampening, and I'm hoping that Poisson's ratio is just stiffness / dampening, but what the hell do I know.

Toughness: This seems to describe the same behavior as the Fracture Threshold in Houdini, but I'm not quite sure what the DMM values are a measure of. In Houdini, it seems the relationship between deformation and fracturing is pretty straightforward - as the docs say, a 0.1 threshold means a fracture will occur when the geometry is stretched 10% in any direction, relative to the rest length. But I have no idea what DMM Toughness measures - maybe it's a maximum ratio of energy to density? That wouldn't seem to account for strain, though. Hence the Max Yield value, I guess.

Now, Yield, Max Yield, and Creep all sound like parameters that govern plastic deformations, which, according to this FXGuide article, aren't directly supported within Houdini's Finite Element Solver; but one could use a SOP Solver to dynamically compare deformation to a rest position and update data like the RestProperties/restgeometrypath to point to temp geometry data, maybe. It doesn't sound super difficult to implement, but off the top of my head, I wouldn't know how to do that outside of eyeballing deformation thresholds... wouldn't be very FEM-like at all.

On the other hand, inside the Solid Configure Object network, there's the Soft Body Plasticity Properties DOP that sets data for Plasticity Threshold (units of length) and Plasticity Rate (length / time, also called Strength at various points), which sound suspiciously like Yield and Creep. However, for whatever reason, these parameters aren't exposed to the top-level Solid Object DOP interface; and, despite the parameterization of the Plasticity Threshold and Rate (called Strength here) into Stretch, Sheer, and Volume components on the Solid Configure Object, only the first component is stored.

So, do these Soft Body Plasticity Properties correlate to DMM's Yield and Creep values (which are, themselves, normalized)? Either way, does the finiteelementsolver care yet? It doesn't seem like it. But that's okay, it should make my understanding a little bit simpler for the time being.

And, lastly... and I guess I should have started with this... are the algorithms incorporated in the DMM plugin "compatible" with Houdini's Finite Element Solver? Enough so that equivalent values would yield results that are at least in the same ballpark?

Thanks for having a look.

  • Like 1
Link to comment
Share on other sites

That's kind of hard to answer since there's no information on the exact implementations of FEM within DMM and Houdini's FE solver under the hood. Under ideal conditions where the environments are the same (scene scale etc) I would think they should roughly behave the same way, but solvers are so generalized in this context there are more variables than you think affecting the outcome.

The whole point of having these tools is for you to figure this out experimentally though ;)

Edited by ikarus
Link to comment
Share on other sites

That's a very good point - it's a little naive of me to assume the FEM implementations are similar enough in their underlying construction. Not knowing a whole lot about FEM, my thinking was, "hey, FEM does realistic stuff with real-world parameters; and this DMM plugin has a library of materials with large and unfriendly real-world lookin' numbers - and Houdini's Solid Objects use large (but friendlier) numbers... they both use tets, they both can use proxy geometry... there's gotta be a connection!" But, of course, there's not one Finite Element Method. (there could be infinite finite element methods o¿o)

Part of why I posted this in the first place was to determine if it's worth investing my time learning more about DMM - I'm only interested in it insofar as it helps me understand Houdini's implementation, by way of similarities and differences. I am under the impression that DMM is better suited for less complex simulations. All I really know about it is that it's been bundled with Maya or the past few years, so. presumably, somebody here must have encountered it and might have some interesting things to say. Or, likewise with Kali, if that doesn't break an NDA or nullify a weird patent agreement or something.

But in doing more reading, it probably would have been more productive to ask about how Houdini's implementation compares to something open, like PhysBAM's implementation (pdf: Irving et al. 2007).

And in doing even MORE reading, I came cross something wonderful: the course notes / textbook for the Introduction to Finite Element Methods course at University of Colorado at Boulder. It's very clear and well-written, lots of illustrations, all sorts of "equations" that consist of nothing but greek letters and equals signs and not a single digit... it's got it all. As a bonus, there's a pretty expansive appendix of background linear algebra "refreshers" covering everything from vector addition to matrix calculus. Anyway, this will tide me over for a little bit. Chapter 6 and 7 are particularly interesting, from what I skimmed.

Allow me to refocus what I was trying to ask originally: Is there a quick-n-dirty way to punch in values that correspond to real-world material data?

(Just as an IOR or a BSDF doesn't make the shader, I wouldn't expect material properties to dictate behavior entirely; but a real-world frame of reference would be handy)

***

My ultimate goal is to understand the crap out of FEM; and Houdini's documentation does a good job. Just looking for other ways to fully understand what I'm doing.

Link to comment
Share on other sites

In the field of solid mechanics engineering you can find charts of empyrically determined values for real world materials ie

http://www.engineers...l_materials.htm

Parameters such as bulk/shear modulus (elasticity), young's modulus, poisson ratio, etc are common in what ever solving method is used.

Better to learn principles of solid mechanics in general to understand the methods used to solve formulas, ie fem or mpm

Edited by ikarus
Link to comment
Share on other sites

  • 3 months later...

Hello!

 

Just an update. In SESI's excellent FEM Masterclass, there's a section where Houdini's FEM parameters are discussed in relation to parameters perhaps found in other packages or material listings. Here are the notes I scribbled down:

  • Young's Modulus = Overall Stiffness (IF stretch == shear)
  • Poisson's Ratio is "related to" Volume Stiffness. Gives organic stuff that "squishy" quality.
  • Anisotropic: Strength in UVW directions
  • Mass Density should be similar

Hope somebody finds this useful!

  • Like 1
Link to comment
Share on other sites

  • 7 months later...

Hello!

 

Just an update. In SESI's excellent FEM Masterclass, there's a section where Houdini's FEM parameters are discussed in relation to parameters perhaps found in other packages or material listings. Here are the notes I scribbled down:

  • Young's Modulus = Overall Stiffness (IF stretch == shear)
  • Poisson's Ratio is "related to" Volume Stiffness. Gives organic stuff that "squishy" quality.
  • Anisotropic: Strength in UVW directions
  • Mass Density should be similar

Hope somebody finds this useful!

 

Yes. Very useful. Thank you.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...