Propagation in PKFX

PopcornFX is a great tool for realtime applications in that it brings to developers a ready-to-integrate particle system which can be used to author sophisticated effects in a nodal/visual style akin to Houdini, ICE etc. I find it much more intuitive than Niagara while easily being as powerful, and it’s integration into After Effects brings those users a level of sophistication with particle effects they simply haven’t had access to before. That said, when I push the limits it understandably can’t chew through the millions of particles Houdini can handle.

For example in PKFX this frost-like propagation effect, which is admittedly computationally expensive, tops out in usefulness at about 50,000 particles. The in-editor framerates are still good (relatively speaking) at 220 ms, comfortable enough for cinematography work in After Effects for example. But when you push the number of particles up beyond that times go up exponentially. By 100k particles (for this particular task, which involves getting neighboring particle information) the editor becomes increasingly likely to crash.

But to be fair this kind of propagation effect is waaay beyond what most realtime engines are engineered to handle. Other effects in PopcornFX can get into the realm of millions of particles without too much trouble, which means those After Effects users have a system which lets them perform most particle effects they are likely to need extremely efficiently… and only need to go to a package like Houdini for the really intensive stuff.

And at the moment these computations are only on the CPU as PKFX is still implementing its GPU support. There is a lot of improvement on the near horizon for these kinds of intensive effects… we may see sph fluids and the like running realtime soon enough.

(It’s also worth mentioning that there is a LOT of room to optimize the effect as built, both with regular settings and as one of the PopcornFX devs points out massive increases in efficiency should be possible by only performing spatial queries on the particles changing values and depositing stable values into a static layer.)

It’s significant that those integrating PopcornFX into realtime tools get a system sophisticated enough that a comparison with Houdini is even possible.

In all, I’m pretty impressed with PKFX and as an effects guy would welcome jobs where it’s integrated into custom pipelines dealing with realtime media even over Niagara and certainly over Unity’s particle system. It is elegant to use without sacrificing power, and it’s universal nature means one day artists might be able to share and use particle assets across multiple engines and custom pipelines.

Newtonian Universe Simulation

I’ve been using PopcornFX a lot lately and have been using it as a playground to explore some simple physics simulation. For example Hooke’s law and compressible springs:

And it was pretty fun exploring Newton’s law of universal gravitation with a classic “orbit” simulation:

But then it occurred to me… PopcornFX is pretty efficient, why not scale up my basic simulation to handle not only a few orbiting bodies, but hundreds of thousands? While not correct to the universe we live in the result should look a bit like elliptical galaxies, right?

Let’s try it.

Ok then, here’s a screenshot of a sim of around 900k particles, running 30-50ms per frame. Too slow for game work but pretty fast for cinematics, and PKFX is integrated into After Effects so I really should try rendering out a movie.

In motion the effect is mesmerizing, with “galaxies” merging, splitting, devouring each other and for some reason periodically seeming to explode into rope-like strands. Nowhere near physically correct of course, but evocative of space imagery and very beautiful. 

Why no spiral galaxies? In the real world a lot more is going on, with gasses compressing and angular momentum preserved. This little simulation doesn’t account for more than the most basic, crude motion so, alas, the “galaxies” which form are elliptical only and rarely stable for very long.

Popcorn FX fractalFlame

Popcorn FX is capable of some pretty sophisticated particle effects. With a little effort one can get past the “usual” turbularized effects and push the limits a bit. Here’s a “fractal flame” look made by spawning, coloring and moving particles with layered noise fields. Given the number of particles used to give the soft look it’s not really something you could include in a game or application but was a fun way to explore some techniques which could be used for more efficient effects. You can get a similar look with much better performance using a vertex shader to distort a mesh and a fragment shader with an additive fresnel transparency, but again the point of the exercise was more an exploration of PopcornFX. That said, this does run in realtime with about 24 fps in the editor, pretty nice.

Glassworking and Kilnforming, Music, Photography

I was recently asked if my work was all computer graphics. No, not at all. I think it’s important for all artists to experiment with various media. I dabble in photography and writing music, for instance.

Here is an audio sample:  

Other World Jazz

 

And here are a few photography samples . . . 

And not long ago I spent a few years exclusively exploring fine art glassworking, specifically “kilnforming.” I continue to create glass to this day.

This isn’t glass blowing, which takes a fair amount of infrastructure, constant energy demands, and teams of people… kilnforming instead is a more individual approach to fine art glass where glass is heated in kilns and the artist uses a variety of techniques to shape the glass over time.

I have and regularly use a personal glassmaking studio in my home. It took a long time to build and wasn’t cheap, with two professional glass kilns and a host of tools and workspace. But there is something about having a physical studio space in which one can create things of beauty out of nothing which is magical, and it was worth all the effort, time away from the VFX world, and cost. I have yet to regret any choice I’ve made where I make personal growth as an artist my priority.

While I will never get famous as a glass artist, that’s also not the point… I find glassworking to be very rewarding and completely different from the other creative avenues I explore.

Glass is magic. It can cut you, burn you, shatter and explode. While working glass it moves and changes, grudgingly allowing you to shape it. And then there it is, static and frozen and… hopefully… beautiful.

So far I’ve made textures, gifts, signs, wall art, tableware, jewelry, vases and bowls, and rewarding odd shapes. I’ve also accrued a few scars and a very healthy respect for how dangerous something can be when it’s heated several thousand degrees. As an art form glassworking is completely different from any other artistic pursuit I’ve explored, and I wouldn’t have it any other way.

The free .fga vector fields work fine with PopcornFX

Be advised the scale of the vector fields in this pack should be around .01 or so. If your vector field appears odd, try tweaking the overall scale and magnitude of the fields. The orientation of the vector fields may also need to be adjusted, -90 on the x axis should do it. 

PKFX has a very nice vector field visualizer, but some fiddling around is probably going to be needed since each one of these vector fields was built for other purposes and on a different platform.

Once you get dialed in, however, these .fga vector fields are great.

NPR Final Touches

It’s wrapping up, I’ve added all the bells and whistles – Ambient Occlusion, Depth fading, Image Adjustment, etc. Highlights can now be dialated or eroded. Support for separate outlines of normals. Presets and clean menus. I think this shader is about done.

The shader allows for a pretty broad array of looks, from architectural sketches to classic toon shading. Below is an example of a more painterly rendering.

Here are some presets:

NPR Shading Continued

I’m continuing to refine the NonPhotoRealistic (NPR) sketch post-process in Unreal. This is using completely different methods now, I’ve changed the method of convolution edge detection for outlines, and am using world-aligned sketch texturing in the shadow and highlight regions.

The background is also given a custom color and texture. The light source is defined through any number of unreal lights.

There is now support for sketchy highlights and varying line colors, and much better response to light. Ideally the post process would support variation in outline width, although I don’t have a good method for that yet.

There are options to use procedural line, dot and crosshatching for a more comic/newsprint look.

The results are very solid and smooth in motion, with no temporal swimming or distractions. I see this shader being ideal for architectural stylization and general NPR usage. 

To get a more chalk-like effect with ink outlines I take this post process and combine it with an NPR painterly process which applies brushstrokes on the image in world space. Here’s the result: