Creating Particle Systems in Unity using Houdini

houdini
unity

#1

Hey all, I just wanted to do a bit of show-and-tell!

An engineer at work posed me the question “What would your ideal effect editor look like?”, and no matter how I tried to formulate myself, the answer kept just being a variation of “I want it to be like Houdini”. But the more I thought about it, the more I realized that getting a realtime particle system running using Houdini might not be that difficult after all!

So I went ahead and made NodeFX, which basically allows you to design your particle system using VOP nodes, with all the cool benefits of the Houdini node interface. It supports most of the features available in Shuriken, so values can be constant, curved, or randomized. And thanks to the nature of node editors, you can create some quite complex relationships between all your attributes, which allows for some really interesting iteration workflows usually only seen in more script-based particle editors.

Worth noting is that this does not extend the functionality of Shuriken in any way, this is simply meant as a creative replacement for its interface

Feel free to download the tool and play around with it a bit! At it’s current stage it’s not really meant to replace your entire workflow, I’m mostly just hoping that it’ll help inspire effects artists and tool developers alike to create some nifty new workflows for authoing VFX. I’d love to hear what you think about it!


#2

That’s amazing. You and I just posted almost exactly the same thing within minutes of each other. What a universe we live in. I’m gonna delete my post, and leave it here instead:

So I took a stab at @Partikel’s tutorial on the curve sweeper (linked below) and found it to be extremely promising for a games pipeline, especially if you added in a custom cross-section spline, a curve for editing twist degree along the spline, and basically any knob that allows fine-tuning the mesh & UVs. And when you consider that this could also be used to create meshes in the environment, for dust or smoke materials over buildings and terrain, the value of the tool becomes super apparent.

So that got me thinking: what other sorts of things could Houdini be used to do in the arena of particle mesh generation? I mean, VFX artists are using it all the time to export flipbooks of pre-rendered simulations (to great effect) but that’s not quite what I’m talking about here.

I’d love some real nuts-and-bolts basic element type tooling, that allows me to create meshes, UVs, and textures in an intuitive way that speeds up my workflow, and maybe gives me some unique sorts of visuals, whether those be realistic OR stylized. And if I can do all this directly inside Unreal or Unity using the Houdini plugin, that’s just pure gold.

Already, Houdini has these sorts of tool sets for environment art. Paul Ambrosiussen has built numerous examples of these sorts of tools. I’m wondering if anyone else would find value in more real-time particle tools, and what they might be.

Summoning @mikelyndon and @luiz, the Houdini engine masters, to also chime in here.

https://www.sidefx.com/tutorials/curvesweeper-intro-to-houdini-engine-houdini-for-games/


#3

Thank you for the kind words! And yes that timing was absolutely ridiculous haha!

You and I are thinking along the exact same lines - I’ve been excited to add a feature to this little setup that would allow you to pipe in geometry to be used as either particle meshes or mesh emitters – which would essentially bring together particle system authoring and mesh authoring in a way more integrated and natural way than what most other tools allow. Add some neat procedural Substance Designer nodes to the mix, and you’d have unprecedented proceduralism when it comes to authoring particle emitters, meshes, and textures together for realtime applications. There’s just so much potential.

Besides, there’s like four different particle system presentations happening at GDC this year, so I’m stupidly excited to see how our tools are going to change and evolve!


#4

O man. Being less technical, I can only vaguely imagine the future we’re talking about here. What I do know is the barrier and burden of tools is a deterrent for many artsy types, which is a real shame. Putting intuitive tools that do combinatoric things very easily in the hands of talented artists could unlock infinite possibilities.

At the end of the day, I choose to leave uber-technical workflows to tech artists, where they excel (and I certainly don’t). I wish for a world where plain ole’ VFX artists like me have the foundational tools we need to take our craft to the next level.


#5

Alright so here is a quote fest for ya. I’m just going to lop all the post text up to this point in the response here.

What about Houdini? In other words, what is it about Houdini that you admire so much that you wish you could do inside a real-time engine?

What do you need to know where you go; Hey this doesn’t exist, I’ll just make it. Ya know, make an afternoon of it. No big.

ಠ‿ಠ

Is magic involved? I’m pretty sure magic is involved.

The question is, indeed, retorical. I’m just making an observation at “I noticed there was no mathematical method to explain the acceleration of falling bodies as to describe the position or velocity of the object at any given point in time, so I went and invented calculus!:grin:

Geeze. :laughing:

Good stuff. I look forward to understanding it. >_>


@Keyserito

What does that mean? How do you mean? It may be a given, but I don’t want to assume.
What counts as intuitive?

To interject, it’s not the tools, it’s the design of the tools. I’ve actually made mention of this before, in a previous post by Chris. Tech is either right or wrong, 1 or 0. For art there is no such thing, we can make two or 2 or thr33. If a Tech makes a mistake, they delete it and it is exactly that. Remove. Destroy. Poof. Yet for an artist, this is not for removing mistakes. As an artist, we don’t make mistakes - we realize them. An eraser is for sculpting lines, shading, and can even be used to draw. The pencil is the “eraser” then.

In other words Techs are Integer Numbers and Artists… heh… Irrational. How do we make a UX & UI that works for both minds?


#6

Wow Chris! That’s amazing! I’ll definitely start playing with this post-GDC.

I think this will be the year of the node graph for vfx. Both frostbite and Epic are showing off their node based particle editors this year and I’m pretty sure Guerilla also uses a node based system.

I think the procedural nature of Houdini can be used for a lot of different aspects of realtimevfx. I lean towards the more technical side and with performance always being an issue I’ve imagined a system that takes a particle system and does a pre-composite. So instead of spawning 5 particles which overlap and increase overdraw you’d have one card for the same look.

Another example which I believe Stephen Cooney used on Gears Ultimate Edition was to generate a single mesh for every candle flame in the level. It means a single draw call and you could have variations based on the uv’s. I think this stuff is the low hanging fruit. Either generating meshes for environment effects or placing particle systems based on procedural systems. Both are possible right now without too much setup.

@Keyserito, I think part of the reason we haven’t been developing similar toolsets for vfx compared to environment art is that environment art workflows are relatively well defined. VFX not so much. Maybe one way to approach it would be to create toolsets for certain styles or genres. We could definitely do some work to help generate textures but I think a lot of the building blocks are there for meshes and uv work without having to wrap them up.

Chris, I looked at a substance like workflow in Houdini at the end of my COP’s webinar and I believe we’ll be showing some more stuff pretty soon.


#7

Chris you mad bastard!
Lovely stuff :slight_smile:

@Keyserito Oh there’s so many things to do. Anything you can do with a curve is perfect for Houdini engine mesh generation. So many blast shapes, slashes, lightning bolts and so on that you can do that just get uvs done automagically. And if you want to start blowing your own mind with possibilities, check out the trace node.
Look at this video: https://www.youtube.com/watch?v=Ed9sKItjD6M imagine adding a poly extrude, a poly reduce and maybe a deformer or two. Then tell me you’re not excited about all the cool stuff you can make in engine. :smiley:


#8

Woha. This is really, really, really cool. I’ve always known what Houdini was but I’ve never had the time between my classes and free work to ever actually see what it did. I wonder how much I can put this into UE4, should really start looking into that myself. I have some access to Houdini, but its only on my universities computers. :persevere: That node based system is kinda like UE4s Blueprint (not cascade, I’m a dumbdumb ) though, thats honestly really cool to me. (Totally not a UE4 fanboy) Seems like something I might be able to hop into pretty quick, when I can get my hands on it. Thanks for sharing this, popped a lotta sparks in my head!


#9

Chris you absolute madman, definitely going to play with this at home this weekend! Awesome work!


#10

Great questions, @Mez. To answer the first one, “intuitive” for me means fewer steps, buttons, and time spent on any given task. So in the case of the curve generator, there’s a step of importing my character animation into Maya (which includes a few small steps to find the source file, get it set up, etc). Then there’s the step of drawing my curve to match the flow of the animation (or the environment asset I want wind to swoop around). Then there’s lofting a shape along the curve, then adjusting the shape to conform to what I want, all before exporting it out, bringing it into Unreal, and placing it in my scene/particle system/etc. It’s not until that final step that I actually see it in context, with a material on it, that I find out if I need further revisions, which I most likely will. An intuitive workflow would allow me to create my mesh and make revisions all within the context of Unreal.

I agree it’s the design of the tools that crop up as my primary issue. This is overcome in time, once I’ve learned all the quirks and “gotchas” of the toolset in order to break through to the meaty features. That’s a lot of investment for every project, so having standardized plugins like Houdini, with standardized tools from their GitHub, would greatly reduce that ramp-up for various mesh-creation use-cases (and perhaps others down the line).


#11

@mikelyndon I totally hear what you’re saying about VFX workflows being less defined, and it is true that the advanced techniques vary widely across different styles and workflows.

What I’m talking about are mesh, UV, and texture generation techniques that are foundational, and broadly applicable across styles. Creating vertex offset textures to be used in a material is a perfect example, because the final mesh shape and material are flexible per style, while the core of the tool is the same. Andreas’ curve sweeper is the same story: what you do with the mesh and the material on it defines how realistic or stylized the effect will be, not the tool itself.

The same would apply to any material-or-particle-system-referenced asset: UV distortion maps, Vertex Offset Maps, Complex Meshes, Normal Maps, and UV sets are all building-block assets that require fairly tedious workflows to create outside of Unreal, but could be done intuitively with a Houdini plug-in. I only lack the knowledge required to build such plug-ins.


#12

@Keyserito If I’m understanding you correctly, you’re more interested in having this functionality in the game engine. Even though it’s possible to do these things in Houdini, or Maya, etc - it’s cutting down the back and forth by generating uvs, meshes, etc directly in the editor.

I think I should start a new thread where you and others can suggest use cases and then post GDC the team can look at implementing some stuff.


#13

You are correct, sir. Though I may just be the odd man out here. I’m super curious to hear people’s thoughts across the games industry, both at GDC and here on the forum.


#14

This is pretty awesome! Using the Vertex Animation Texture stuff you should be able to export a particle system built this way and get it to playback in a realtime environment. It would be baked, but sometimes that’s what you want.

I do agree with @Keyserito in that there’s a lot more we can be doing along the lines of Andrea’s CurveSweeper. We should be able to generate those procedurally based on the animation for example. I think the splashy mesh type of mesh generation is something that Houdini can be great for, simple stuff like ribbons and swirls that you put some scrolling textures on it and call it done.

The other area that I want to look into post GDC (which is the reason we don’t do a lot of these tools) is viewport feedback in Houdini, mainly custom shaders that would allow you to visualize what you’re doing more.

Keep the thread going :smiley:


#15

To clarify, I want an interface like that of Houdini. Houdini’s node editor surpasses any other I’ve used - it allows you to to change parameters across several nodes at the same time, connecting and disconnecting nodes has just the right amount of sensitivity and accuracy, nodes can be renamed, grouped, colored, hidden, arranged – you can even change the shape of a node if you wanted! Nodes can be copied (or reference-copied) across networks or even separate instances of Houdini. And don’t get me started on the parameters within the nodes, they can be expression-driven, keyframe-driven, referenced from another parameter… The list goes on.

When I first started this project I actually set out to create my own node editor within Unity (GameTutor has an excellent tutorial on this exact subject), but I quickly realized that it’d literally take me years to even get close to it being as intuitive and usable as Houdini.

I’ve always been a big believer in “If you have time the to complain about something, you have time to learn how to make it better”. That being said, this still took me uuhuhh three months to bring to its current state, which is barely functional. But I’m grateful for the kind words!


#16

I’m not that familiar with UE4 scripting (which is completely inexcusable, I’m just really scared of C++ haha), but in order for this to work everything you need is literally the ability to parse a text file and create a particle system. If you decide to pursue this further I’d love to hear about it!


#17

C++ is pretty loony, it can get pretty crazy pretty fast when you start getting into the big stuff (from what I’ve seen at least, I’m just an amateur :joy:), but its really cool to see the outcomes of what you make. The most advanced stuff I’ve done with it for now has been just wiring my FX to key commands, nothing really that big. I’ve never gone too far into coding, so parsing files isn’t exactly my forte, but its just another thing to learn! I’ll be sure to letcha know if I dig a bit deeper, time to make some rabbit holes!


#18

“Don’t come to me with Complaints, come to me with Solutions!” - I hear ya! No complaints here! All praise!

:smiley:

This is cool!


#19

I’m (still) not a regular Houdini or Unity user, but I am really impressed by this. As soon as I saw that you’re able to make use of Houdini’s curve editor, it piqued my interest!

Editor UI is a hot topic for us at the moment, because while we are in the process of building out our gpu particle system from the ground up, we’re still using the same UI “skin” and we can’t spend as much time improving it as we would like. If we were able to bypass an editor’s UI in favor of one that is fully fleshed out/supported/proven, then I think that would be worth looking into.

I know a couple of Houdini/Unity wizards here at CIG, so I’m curious to get their thoughts on this! :thumbsup: