inflate optimizing

   25280   26   4
User Avatar
Member
48 posts
Joined: July 2005
Offline
I've been trying to add muscle deformations to my character and the inflate tool demonstrated at the user group blew me away, so I went for it. The only problem is that it's way too slow, even to setup. I'm running a dual Xeon 3.0GHz with 800 fsb and a GIG of DDR2 PC2 3600 ram. I doubt that my configuration is at flaw so I must be doing something wrong. I've taken a close look at the inflate tutorial that comes with the installation of houdini and it's very fast. But the thing is, the tutorial uses a line, converted to skin with the skin sop. In my case I need to deform the poly model I already have. So I used the same approach they did in the tutorial except that I had to skip the skin deformer since I already have a geometry object, and that is VERY slow, I'm talking one image refreshed every 10 seconds and I've only added one muscle! If anyone knows what I'm doing wrong or has any tips on inflate, please let me know. Thanks.
User Avatar
Member
212 posts
Joined: July 2005
Offline
It all depends on what you are doing.

I wouldn't expect real time or close to it for a deforming, inflated character, not yet at least.

Is your deform as fast as it can be?
did you lock your input to the deformSOP. If you have no animated attributes, you can toggle on the “assume coordinate changes” to help it out a bit more.

How are you making your muslces? are they procedural? If you are sweeping or railing things.. that is a bit expensive. you might be better off to capture and deform the muslces. Are you using a jiggleCHOP to perturb the muscle?

All these things take up cooking time. There would be speed hit, which you could put off to render time only. If you display the mininum for the viewport you can make things faster that way. The render and display flags allow some flexiblity.

You could try to inflate a pt group if possible to localize the event if your character is dense.

Hope that helps. I'm just spitting stuff out.. I'm waiting for a render…
-k
User Avatar
Member
48 posts
Joined: July 2005
Offline
actually on my charater I've used metaballs with buldge, and that updates real time and it's very fast, except that I don't want to use metaballs. I want to use modeled poly muscles. But as I always test everything before I actually start, all I did was create 2 poly shperes, one that is scaled on X by 2 and the other with it's default parameters. I've added an inflate at the end just like the tutorial said (merge the groups, then feed the merge and the geometry to the inflate). And even that is too slow. I'm using a frequency of 18 for the spheres parameters, which should be about as heavy as my character's arms, and the “center overlap” value is set to 1.
User Avatar
Member
212 posts
Joined: July 2005
Offline
hmm,
the tightness value of 18 will just try it keep the inflated geometry to the tool's shape more. How many points are in your center?

Even in production I wouldn't give an animator a deformed character with cooking inflates.. maybe a toggle to see the result in the viewport, and the same for renders.

is your deform as fast as it can be?
-k
User Avatar
Member
48 posts
Joined: July 2005
Offline
well for now I'm not applying the inflate on my character for the simple reasoon that it's still to slow to configure even on a simple sphere. I used a sphere for a test to see if I'll manage to tweak the muscle deformations on the character so it deforms right. The simple sphere is taking too many calculations already, I need to make sure I get it working right at a decent speed so that I can set up the muscles on my models. I'm very much aware that it will not be evaluating real time for all the muscles but it should be at least calculating a few frames per second. It's pretty fast in the tutorial actually, it evaluates in real time. Here's what my model looks like, it's not too heavy but it's definately heavier than a sphere.
User Avatar
Member
212 posts
Joined: July 2005
Offline
try NURBS, primitive spheres or mesh for a TOOL.
The inflation will be faster.
-k
User Avatar
Member
48 posts
Joined: July 2005
Offline
it's much better with nurbs thanks . I would have like the same level of interactivity as with the bulge tool. Oh well. Thanks a lot for the help though, I appreciate it.
User Avatar
Member
212 posts
Joined: July 2005
Offline
i should have caught it when you said “poly sphere”.
I went and read the help again and saw the minDistance blah blah.

i just need more sleep
You should post some images once you get it moving around.
good luck
-k
User Avatar
Member
48 posts
Joined: July 2005
Offline
I will, once I'm done. This might take a while though. What's actually bothering me in this is that it seems that the inflate tool has been made alongside the skin tool. they work extremely fast and well together, and setting up the deformation on those is a lot faster than polys and nurbs. I'm gonna try a few more tests to see how I can optimize the speed.
User Avatar
Member
1634 posts
Joined: July 2005
Offline
Hey rony,

I'm kinda digressing here but your model looks good!

Keep up the good work!

Cheers!
steven
User Avatar
Member
48 posts
Joined: July 2005
Offline
thanks
User Avatar
Member
8147 posts
Joined: July 2005
Offline
How many points are on your skin model? If you know that your muscle never needs to deform say the other side of the character, you might be able to get the Inflate to do less work by telling it to only consider one half of the character by specifying a more specific Group.

By using the Skin SOP, you're just generating NURBs geometry, so I don't see why it be any faster. Perhaps the NURBs geometry for the tool that you have that you created without the Skin SOP is a lot heavier?
User Avatar
Member
48 posts
Joined: July 2005
Offline
Hey Edward, my model has 12954 points. but the thing is, I was conducting tests on a simple sphere and that was going slow. I used a nurbs sphere as the inflate tool, just as Thekenny said and it is indeed faster, but still a whole lot slower than the tutorial file. here's the thing. Their tutorial has a curve that is converted to a skin object and not a nurbs object. The skin object seems to go with the inflate tool because I can preview that real time, change the settings etc. No need to add a cache sop, it's EXTREMELY fast. My problem is that I cannot use the skin sop because it works with nurbs curves and I already have a poly model. So I was trying to find a way of using nurbs models as tools to inflate a polygon object. And THAT is still slow. Any suggestions are welcome. Thanks.
User Avatar
Member
212 posts
Joined: July 2005
Offline
the NURBS or mesh are faster.. it doesn't work welll with metaballs or polys.. I think it is just optimized that way.

I think the tool would be calculating the inflate distances for each face in the case of the poly tool, which would make it that slow. I think a parameterized surface is just faster to evaluate. Makes sense doesn't it.:?:
-k
User Avatar
Member
252 posts
Joined: July 2005
Offline
I am not sure on this, but if you triangulate your polys you might get a better and faster result. Triangles are much easier to determine collisions on than quads (although perhaps Houdini triangulates quads before doing the Inflate…) and I would think they would even be faster than NURBs (but I won't wager on it).

Just a theory, but I seem to remember this improving my Ray SOP activities. If it helps, let us know!

-Craig
User Avatar
Member
48 posts
Joined: July 2005
Offline
the NURBS or mesh are faster.. it doesn't work welll with metaballs or polys.. I think it is just optimized that way.

yes you're right and that's what I'm using as a deform object. But eventhough they're faster, they're still extremely slow.

I am not sure on this, but if you triangulate your polys you might get a better and faster result.

I am testing this on a poly sphere which is already triangulated by default and only has 1442 points. I'm using a nurbs sphere as a deformer. this takes 3 seconds to update the changes I make. I tried using a nurbs sphere on my model by limiting the influence group to a section of the arm (the biceps region) and that was taking 5-6 seconds to refresh.

I honestly don't know how sidefx set the muscles up for their rabbit shown at the user meeting, I took a look at the rabbit file and couldn't find any inflate tool used there. :cry:
User Avatar
Staff
2540 posts
Joined: July 2005
Offline
The rabbit muscles were built up with in-house prototype digital assets with much trial and error with different general approach to muscles,

We used nurbs as the basis of the muscle tool group and highly subdivided polygon center curves.

Rigging for muscles isn't as simple as throwing some geometry in there and wedging an inflate or two in the skin.

We developed some initial prototype muscle tools that comprised of anchor and mid points that defined the muscle chords and then swept muscles from that to trivialize the assets. This is what was used on the Rabbit. We have been working on them since.

I want to make sure that when we release the muscle digital assets in the exchange that they have lots of documentation and tutorials and that they work under as many different situations as possible. That said, it took one relatively new Houdini user a day to rig up over 50+ muscles finished with the tools.

The one thing I can offer about speeding up inflates with characters
is to run two deform SOPs: The first would take your high-res painted character. The second deform SOP would have a poly-reduced version of the high-res character. Just follow with a switch in to the inflate. Less geometry to inflate = very much faster updates. I found out that the inflate pushes out the same volume wether the geometry is low or high density. Gives the animator what he needs: inflated surface to test for scene intersections. You could even have an LOD slider for the animator to dial in play-back rates or animation feedback based on the poly reduction factor. How cool is that?!


-jeff
There's at least one school like the old school!
User Avatar
Member
48 posts
Joined: July 2005
Offline
Hey Jeff, just as a reminder, my tests were conducted on a very simple polygon sphere that is not captured by any joints nor any deformer. And I never had the intention of applying muscles on the high res character, I'd be crazy to do that. I just wanted to take advantage of the tools that sidefx showed at the user meeting and so far, I don't see how they can work in a decent way. I'm not expecting real time here but at least enough speed to be able to adjust the values. I don't think that waiting 10 seconds per refresh is very practical for one simple muscle that is a simple sphere with 4 divisions on u and v. I mean I can't go lower than that.
User Avatar
Member
252 posts
Joined: July 2005
Offline
Not sure what you are doing different than me, but when I fooled around with the Inflate SOP, it was highly interactive. I got immediate feedback unless I was using really high-res geometry.

I found I got best results using low or medium res geometry and then doing a Subdivide SOP afterwards.

But I didn't really test this with subtle motion to make sure there was no adverse effects…

-Craig
User Avatar
Member
1634 posts
Joined: July 2005
Offline
Hey rony,

Please post a link to the hip file (zipped up please) of the sphere setup you're having problems with & I'm sure at least one of us who replied to this thread will look at it.

If you can't host the file, send me a PM & I'll host it for you.

Cheers!
steven
  • Quick Links