Jump to content

Houdini Crowds Plug-in announced - Alpha


David Gary

Recommended Posts

"CROWDS ARE HERE... CROWDS ARE HERE..." 

Hi all, 

After a couple of projects involving crowds and flocks, it was clear to me that Houdini had everything to become the new crowd software, but besides just brains as sopsolvers, the whole pipeline/framework had to be built to be able to deal with characters in a fast way! ( SOP-speed that is), along with proper rendering tools (custom instancer). That's what i did over the last couple of months 

Fast, fully customizable crowds are available in Houdini with the upcoming release of the CROWDIGY 1.0 ( codename) plug-in/Framework 

No CHOPs, no copy SOP... only current VEX/C++ speed ! Built upon more than 30+ otls. 

Demo: http://vimeo.com/112054883 

( WATCH IN HD!!! or download - working on a better/richer version). 

Currently Includes/Features: 

Crowd DSO (Mantra): character deformation happens DYNAMICALLY AT RENDERTIME (currently porting the code to Renderman and Arnold ) - 

Ragdoll module (made with Bullet) happening in sync with crowd solving 

-Action editing module, action graph ( fully editable as geometry to handle action choosing, transitions, blends etc. processed at VEX speed of course), 

-Works with arbitrary skeletons, actions are saved in a custom format ( no CHOPs i said:)icon_smile.gif ). Skeletons can be imported as .bvh and are converted into our own format 

-Full Artficial Intelligence Module ( aka "brains"): Comes with a lot of predefined agent "inputs" ( Vision, Terrain adaptation, Flocking etc ...). 

A cool one is the Path Finding SOP (Djikstra/A*-like pathfinding), built upon the uber-awesome-and-remarkably-fast Shortest Path SOP), 

Of course you can define your own brains using all the array of of VEX and SOPs tools 

-Entirely integrated with the rest of Houdini : cloth, particle, any DOPs are accessible at each timestep...( see the coupling with particle sims at the beginning of the video) 

( and much much more to come but hush!) 

And of course: 

DEPLOY YOUR CROWDS IN MAYA,3DSMAX, CINEMA4D, UNITY, etc.. through the Houdini Engine (populate, invade, spread or colonize ..) 

The official commercial release is expected end of 2014, on Orbolt. The plan is to have it under closed beta at first. 

Compatible with Houdini 11 to 13 ( only 13 for ragdoll module) 

So much more i have to say, but i will keep it short to start with... ( currently putting together a 1hr overview video ) 

Any questions: shoot a mail at houdinicrowdsolutions@gmail.com 

Not sure if SideFx has something cooking for Houdini 14, but i wanted to do it anyway, and couldn't wait ha ha icon_smile.gif. i had thought the infrastructure through in great lengths before i went ahead and actually implemented it - to make it the most versatile, algorithmically fast, conceptually simple, the most "houdini-esque". I hope it is 

Will be looking for nice mocap and rich rigs to make even more pictures... 

(did i tell you i even made my own mocap with a Kinect sensor.. it's not entirely there but it's really really promising) 

P.S 

You asked about speed: 

It includes a live speed test on a rather poor machine! 6GB Ram/Core Duo/512Mb Vram cough cough! Comparing it to Fabric Engine for instance is meaningless, Houdini hasn't got GPU acceleration yet. And i wonder how much time it would take for them to code everything.. Let's only compare what can be compared. 

1/3 sec per frame for 1000 characters ( 50+ actions) for pure solving and display 

2 sec/frame for 100 characters with Bullet solving 

-d

 

  • Like 2
Link to comment
Share on other sites

Hi Clear!

I haven't tested Miarmy, the only thing which i'm a bit skeptical about is that they claim that getting rid of nodes and replacing them by interfaces was a progress, while virtually everyone everywhere have finally come to agree that nodes makes life so much easier and clearer. It seems to me that it would also greatly limit the complexity of the logic you can define and become soon intractable.

 If it's a matter of "refining conditions", as i seem to have vaguely understood from them, meaning conditions-subconditions-subsubconditions, it's actually implemented in Crowdigy in VOPs and 'And' vops. A subcondition is a child of a condition AND a new condition, that's how you make "trees "of cases,subcases etc left to right, by "parenting them" horizontally and you possibly merge back with an 'or'...

 

In any case, with my tool, since it's done in Houdini, nothing stops you from turning your "brains"/logic into one big otl with a simplified set of controls, and that's actually what you would pass to an artist on a shot

This means also that ready-to-run agents , as they exist in Massive, are something that everyone can build and even sell.

There's many ways to integrate this in Maya , at its simplest, you turn everything into a big subnet and bam! but there's actually finer control that exploits node similarity between Houdini and Maya, which i haven't had the time to explore yet.

I'm really hoping that SideFx is putting all its efforts into speed, speed, speed now for Houdini Engine... and for Houdini itself. GPU acceleration pleeeeaaaase!!!!
Link to comment
Share on other sites

Nice work!

 

Especially the DSO for rendertime deformation is cool. I'm impressed with all the work you've done in regards to building out that entire framework. It is definitely challenging from a data management and data processing point of view. Lots of little and not so little challenges to solve along the way. Cool stuff! I look forward to seeing you apply this system on some other type of agents/creatures.

 

I'm currently doing some crowd development work in houdini 13 and have implemented some of things you mention above, I'm lucky that I don't have to do skinning, so I can get away with transforming packed primitives.

I also went the route of implementing my own ik solver in vops and chose not to make use of the joints. My system is made up 3 major parts: 1) AI solver 2) agent representation 3) locomotion. Since it is all point-based internally it runs fast. No bullet and ragdoll integration. But some pretty cool brain behaviors (terrain, vision, swarming, flocking, trail guidance).

 

Good luck with it!

Link to comment
Share on other sites

 

Yep, i put a lot of thought into the "infrastructural" side of things before even starting to "code", looking at Massive, boids, etc..

Locomotion is separated from skeleton reconstruction so it and can be "decoupled" and so as far as packed primitives go, yep, in my workflow, you just replace skeleton reconstruction by  baked out the geo and it works:) my video card is a bit and so i haven't demoed it yet . And this is often sufficient for manyt cases ( ex. stadiums ).

One subtle thing that you might lose to an extent if you cache out your meshes is the live blending between actions , which produce new interpolated rotation values and consequently new skinned geo, but again, if you cut into a long action, that's all just fine he he)

 

The good thing is that skeleton reconstruction can be re-coupled,which is needed sometimes, especially in the case of Bullet where the position of a bone influences back the simulation if the character is for example hit on an arm..

 

About IK solver in vops, i'm glad you mention it: it's on my list. Well, i was going to go the C++ route ( there's a great example in the HDK about it... the documentation is just awesome!!). i don't have joints anymore in my character representation, not physical ones that is, just points.

 

as far as AI and flocking, there's a few nodes that replicate boids ( essentially target based locomotion, but then you convert the target  into agent space and you can also call the corresponding angle/distance as new attributes in the brains - which is more "Massive-like" and it's often a nicer space to describe things into.
Link to comment
Share on other sites

decoupling the different systems is what I did as well - partly because the setup started become to huge to efficiently manage, so a more modular approach just works better.

 

For the IK solver I based my implementation off of this:

http://mrl.nyu.edu/~perlin/gdc/ik/ik.java.html

 

I had the challenge of solving a 3 bone ik chain, so I considered implementing the cyclic-coordinate descent (CCD) algorithm, but eventually got around it by making it two two-bone chains and splitting the middle bone in half.

 

I think eventually for doing large amounts of crowds, points is the best way to handle all that data.

My points contain a: P, up, N, agent_id, leg_id, leg_segment, perimeter (which is the bone length).

 

In regards to AI, I think vops is very suited for designing brains. I have designed some basic brains in Massive in the past and it really helped to build the fuzzy behavior networks in vops. Within the Ai solve I first tend to gather the data (distance, angle - also in agent space) - and then process the data to get my blended behavior. I found

 

By decoupling from the locomotion system, my moving pointcloud can come from any source, so you could use the ai solver or you can have some points animating along a curve and the locomotion will solve the legs.

 

Your recoupling for bullet is interesting, is this for grabbing initial positions for the bullet sim? Or are you doing more advanced semi-dynamic behaviors (like the stuff endorphin tries to do).

When I first started without ik and just purely attempting procedural I was trying this cartwheel walk-cycle approach. But eventually switched to using ik.
http://www.gamasutra.com/view/news/216973/Video_An_indie_approach_to_procedural_animation.php

Good luck with future developments on this system, looks like you are having a good time :).

  • Like 1
Link to comment
Share on other sites

The answer is: ALL :):)

 

Houdini Escape lets you use otls made with HoudiniFX, it just doesn't let you create any ( unless sthg has changed),

and"sopsolving" can be even "emulated" in sops, using fileIn/fileOut approach ( i know some people even use tools like ramdisk to write to ram as if they were writing to disk, so it's super fast).

Apart from ragdoll, the core of my tool is not a solver, it's a sop, that you can put, and that is put in a sopsolver!

If you're not using bullet, it works on 12 too, which i developed it with ( cos i wanted for better compatibilty to refrain from using novelty workflows)

-d

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...