Archive for Strands
Since LK Fabric is out I dug up one of the early test scenes we used on Nike “Evolution” at Royale in which we developed some of the techniques we used to get various looks. This setup is very basic but covers some of the key tricks for getting a natural result and was used as a starting point for a number of shots.
I have replaced the original many-versions-old compounds with ones from Leonard’s public release, and have also left in a few “helper” compounds I built which weren’t part of his official release. I then removed everything superfulous to the basic effect and commented the resulting ICE tree throughout. Any typos or misspellings are entirely my fault. :D
The actual setup is very simple.
This scene demonstrates:
- A basic setup of a single evolving swatch of fabric, with the most basic pattern and the modifiers we used most often.
- Using the “slide profile over U/V” compound and other techniques to shape the leading edge of fabric growth.
- Using the “offset” core parameter to make the leading strands animate and form a shape for the thread tips.
- Using a second ICE “post” effect to add per-strand variance and “frizz” effects.
The early tests like this were pretty chaotic, we knew the system did a good job of creating a “perfect” weave so we were pushing in the other direction and adding ways to create chaos and randomness.
Ironically despite the first briefs being focused on “organic” and “evolving” concepts the client spent much of the latter half of the job dialing in a more out-of-box mechanical look… that’s the way it goes sometimes. But this means there is a lot of capability which hasn’t been seen yet. I’d love to see some people use some of the per-strand and per-thread modifiers, and the capability to create patterns beyond the basic “canvas,” to create a more organic, aggressive look.
Here’s the file (Softimage 2013 scene file, ~0.6mb): LKFabric_AMexample1
Congrats to Leonard Kotch who put his heart and soul into this and who put up with my endless demands for the system during the production.
Pretty much everything you see in the Nike commercials below was built with this system, with Leonard doing daily updates as we worked. We barely touched some of the possibilities of this system, I hope people will try it out because it is cable of some truly spectacular effects. Kudos to Royale for being so cool and sharing it out like this!
Two of 3 spots. “Evolution” was a small team, 3 weeks, lighting and effects with Softimage and Arnold.
I love small but intense projects like this.
“Run” was primarily Maya/Vray with a touch of ICE. The studio (Royale) is only 6 years old but advancing fast, and it’s been a real pleasure working with them. For their first exploration of ICE, Royale invited in some familiar SI friends – Ciaran Moloney, Steven Caron, Leonard Kotch, Billy Morrison and yours truly doing a first gig start to finish as a CG sup (which with guys like this mostly involved saying “go for it.”)
Like the Psyop “Telstra” spot, this commercial essentially required us to create a system for knitting cloth from massive numbers of strands. Leonard Kotch wrote a system which performs many of the same tasks as the Psyop “Entwiner” tool, but he took a slightly different direction, it was fascinating to compare how the two diverged. The progressive animation required for these two shots resulted in a pretty flexible and broad system, which we are currently using for the last of the three spots, which will wrap in production soon.
Royale has been an enthusiastic and fun group to work with and it’s been great getting to show a studio as strong as they are in design some of the possibilities ICE can bring to jobs like this. Expect to see some version of Leonard’s “LKFabric” system gifted to the community before long – very cool Royale, thanks! (They also throw good parties, their 6′th birthday celebration was impressive and… unusual.)
And so is Psyop!
This little commercial project from a while back was a LOT of fun. A very small team of us (5 or 6 total, I think) made this (plus a few shots more) in just a few short weeks (two or three I forget) at the LA studio, using a hybrid Maya/Softimage approach which Psyop does really well. All models and animation in maya are brought to Softimage for lighting with Arnold and additional ICE effects – in this case, the characters, and stuffing are entirely strands. No geometry aside from the little plastic eyes and their teeth.
Psyop’s lighting supervisor Jonah Friedman wowed me with the system for knitting via strands he built, and how fast he built it. He also quickly made it on my “favorite people” list in general, it was a blast working with him and the others there. The system, which we called “entwiner” builds layers upon layers of strands… these knit characters are built down to every individual fiber. And Arnold powered right through these millions of strands without a blip. Pretty cool. It was so efficient at it in fact, that it made sense to make the “stuffing” out of tiny fibers too, which gave it a nice volumetric kind of feel when lit.
The liquid is a simple lagoa setup, with wet maps generated in ICE. While the commercial was so simple I was really pleased with how the studio took pains to take their clients ideas and give it the very best. A couple of knit characters could have been faked with geometry and textures, but going that extra mile even when time was so short is what really impressed me, and the combination of maya/softimage, ICE and Arnold is a powerful one, as Psyop shows even on small jobs like this. My kind of studio. Thanks for having me you guys.
Been playing with Vray. I like it. This is an “out of box” render of some strands, no effort on my part to properly light it, which really is a requirement for fine strands/hair etc. Still, not bad, they have a nice hair shader. I’m less interested in character hair than in fine detail fibers as VFX elements, so I’ll have to see what other looks I can coax out.
This amount of strands doesn’t even come close to taxing Softimage, it’s still interactive on my box…but rendering it at 2k took about 20 minutes, without any optimization. I’d guess that with some effort adjusting some settings I could get a better look at about 2x the speed, which isn’t bad, considering this is a GI render.
It’s a bit splotchy and the exposure is meh – chalk that up to me being a Vray noob. Looks like I was a bit too aggressive with the jpeg compression, too… The full render is much cleaner, and of course this is just a beauty pass, no passes or color correction. A decent lighter no doubt could take this to another level. Hey, I’m a VFX guy I hardly ever get to render stuff.
I’d like to get a feel for how much impact more strands will have on render time. I may have to try a “stress test” over the weekend to see what the reasonable limit for a single machine is in terms of numbers of strands I can get into a 2k half float render while still maintaining this look as a minimum quality…
I am a big fan of Polynoid. Ever since their first images of cybernetic snails came out I’ve been hooked on their often-dark blend of art-meets-tech imagery.
Fabian Pross of Polynoid was, for a while, maintaining a very cool blog (come on Fabian, post new stuff!) One post in particular puts into words a critical concept I and many others often try to get across to newer artists – the importance of avoiding simulation where possible.
Simulations usually don’t quite achieve what you want them to, visually. The trap people fall into is to try to force a behavior out of a simulation. You end up making endless iterations while the setup you’re using grows more and more bloated and slow. A single directoral change becomes a nightmare. You lose control and the limitations of your setup starts to dictate the look.
The solution is to create what I think of as “deterministic” solutions – setups which change over time, but in very strict ways you specify. That’s one of the things I was trying to get at with the “post simulation” tutorials, the benefit of offloading much of the look outside of what is simulated.
Even skilled vfx artists fall into this trap with some regularity. I can’t say how many times I’ve seen production scenes which have grown bloated to the point of containing hundreds of forces and collision objects just to try to achieve a simple effect. You can’t afford it. A simple directoral change blows the whole thing apart. Stop. Take a deep breath. Don’t go over that cliff. Simulate judiciously, in small doses, only where you have to.
Simple simulation + deterministic stuff for a complex look = control.
And control is what makes a VFX artist, in my mind. Anyone can pull levers until they get a nice result out of fumeFX. But to achieve brilliant results which are new or spot-on to what is needed in prodution, you have to have control – be it in fumeFX, ICE, Realflow, Houdini or whatever. And one of the best ways to achieve control is to only simulate where you have to, and keep it simple when you do.
Fabian puts this idea into words better in this post. Even if the techniques he uses here are specific to ICE, the underlying message and workflow is the same everywhere – avoid simulation to gain control and speed.
Even when you use simulation, who says that you have to stop there? Bake it and use it as an element you shape further or build on. This concept is really powerful. A good example of this idea in practice is demonstrated by a little DCC-agnostic tool called Sparta. Simulate, then shape the results.
In the “postSim” tutorial we made shapes out of strands by constructing arrays of point positions. Many ICE users, myself included, forget that there are a bunch of shapes provided already which can be used in this fashion. They are in the “Debugging” section, because arrays like these can also be used with ICE attribute display properties to create onscreen widgets (hint: …or to add points to a pointCloud…)
I’ve found the factory nodes to be quite handy for a number of things, but I wanted some other shapes of my own (such as a star and spiral) - so I made them, as well as made some adjustments to what was already available (with some digging) to suit my personal preferences. Here is a scene with a number of them, each packaged as a compound.
And here’s the file (softimage 2013 322kb): ICE Debug Elements
While experimenting around with these elements as display objects, I made a “protractor” compound.
It’s of limited production use because of a current problem with how softimage displays these elements in a shaded or hidden line view, and because it wasn’t particularly designed as a tool… it just evolved while I messed around. But it serves as an example of how you can use the “Debug” nodes to create visual feedback (another good example of these debug elements is the factory “bend” deformer in ICE.)
Judicious use of these display attributes can make a packaged compound much more useful, as well as act as a handy jumping off point to make interesting shapes with strands etc. Enjoy! – AM
File (softimage 2013 270kb): example_ICE_protractor
The spiral compound plus the postsim tutorial makes a nice basis for a “cloud chamber” like wallpaper… :)
Pretty basic. Shows how you can use a user attribute to effectively create “states” of a simulation without relying on the state machine. Also contains a compound which is part of my regular toolkit, which forces particles and strands onto the closest surface. Like I said, basic stuff, but thats what these examples are… here it is in case anyone could use it for learning or whatever.
Scene (Softimage 2013, .zip) – example_RainOnBunny
The stanford bunny has a hard life.
This isn’t an earth-shattering ground-breaking post, just a simple example of a workaround which came up on the SItoA mailing list…
In Mental Ray rendering out a copy of a Softimage ICE particle’s shape per strand point is easy, just disable the “stranddeform” attribute (when using “generate strand trails” it’s the “loft shape along strand” checkbox.) Now instead of rendering a continuous, lofted result the strand is depicted as a series of particle shapes or instances. Easy enough, and is described as a basic workflow in the softimage documentation.
But when using Arnold as a renderer, particle shapes are lofted no matter what. So how do you get a result where shapes are repeated along a strand? This is the question which came up on the mailing list, and Stefano Jannuzzo and Mathieu Leclaire posted a simple and direct solution: clone (or add manually) a point for each strandPosition on a new cloud. When using add points instead of cloning, you also need to carry over relevant information such as orientation and velocity.
This is a pretty common kind of technique for this sort of thing and is worth putting on the record where people can search for it, so I’ve implemented their suggestion in a compound and example scene here. Enjoy.