Real-Time Rendering with AAA Studio's FurryBall for Maya
March 8, 2010 1:48 am
Product Review: Art And Animation Studio's FurryBall for Maya
I’ve noticed GPU rendering (or real-time rendering) has been a hot topic since 2008, although the concept itself is not something new. Many of you surely remember Gelato, a rendering engine developed by Nvidia (Gelato is no longer under development, though).
During SIGGRAPH 2009, I had the chance to attend a presentation where ATI showed off Cinema 2.0 which is an amazing technology based on real-time voxel rendering; Chaos Group is working on VRay RT, a real-time version of the VRay renderer widely used for architectural visualization; StudioGPU released MachStudio Pro a few months ago, a real-time stand-alone rendering engine recently reviewed by staff columnist Ricky Grove; Mental Images is also working on Mentalray Core 3.8, which will include a GPU-based rendering technology called “Iray.” Real-time rendering is, as many adequately put it, a paradigm shift, allowing you not only to yield faster rendering times, but also making you rethink the way you work.
Art And Animation Studio (AAA Studio) has developed FurryBall, a GPU-based solution that works directly in Maya, aiming to save you the extra work needed to send your assets to a different rendering environment (which is the case of MachStudio Pro, for example). The idea is to offer an end-to-end solution by combining the power of Maya software and FurryBall.
FurryBall is not a render engine like Mentalray or Renderman for Maya. It’s more of a viewport renderer that outputs rendered frames at the user’s request. This is the first step in the paradigm shift I mentioned, as you don’t set up your scene and hit the render button in Maya. Every change you make shows up in the FurryBall viewport and what you see is what you get.
Since FurryBall utilizes the GPU to render your scene, the developers at AAA Studio have made sure the technology will be available to almost every Maya user (who doesn’t live in the Czech Republic), as it works on any modern gaming or workstation-class video card from both ATI and Nvidia. This will surely be welcomed by many Maya users as not everybody invests in a Quadro or FirePro videocard just to run Maya (on the other hand, the limitations when you’re using Maya on a gaming card are still present).
FurryBall uses the DirectX technology to render your scenes, which to me is a strange choice of technology since Maya’s visualization is OpenGL based. However, at the end of the day I don’t really mind the technology being used, but the results I get, and FurryBall is capable of yielding very good results (although I can’t help but notice OpenGL and DirectX colliding when I use specific tools, especially those that need overlays).
You can think of FurryBall as a Maya Software renderer on steroids. It can do everything the Maya Software renderer can, plus ambient occlusion and color bleeding (it can’t do ‘real’ GI, or at least not yet).
When you enable the FurryBall viewport, Maya creates a “render node.” You can enable and disable features, and change quality settings, on that render node to speed up your workflow and viewport response. The more features you enable, the slower the viewport response, and the more video memory you use.
Shadows in FurryBall are limited to depth map shadows. If you want to create sharp shadows, such as those created by raytraced shadows, you don’t have a choice but to use depth map shadows and increase the shadow resolution. If you’re like me, this will pose another paradigm shift, as I use raytraced shadows (with Mentalray area lights enabled) for soft shadows, so I find myself going back to depth map shadows.
A feature I find extremely nice and useful is the hair generator (although it would have been very ironic if a renderer called ‘FurryBall’ wasn’t able to render out hair). The reason why I like this feature over the rest is pretty simple: it takes forever to render out realistic hair.
When you create a FurryBall hair system, Maya will internally create a Maya Hair system and connect it to the FurryBall hair so that it’s driven by Maya Hair dynamics. This allows you to use the tools you already know to animate the FurryBall hair, instead of forcing you to learn a different set of rules and parameters.
As easy as it is, the hair creation workflow is not the one I’d normally use, though. Every time I create a hair system for my characters, I use the Paint Hair Follicles tool. If there was a tool to “paint” FurryBall hair, I’d be a happy man.
FurryBall also supports normal maps, including the 32-bit normal maps generated in Mudbox. It doesn’t support displacement maps yet, although this is a planned feature for the next version. According to the documentation, displacement maps will require a DirectX 11 capable videocard.
DOF is also available and produces good results. The DOF control is somewhat clunky for my taste, as the only way to control it is a locator created in your scene that moves independently to your camera. You move the locator around to define the portion of your scene in focus. However, since the locator is not constrained to the camera in any way, you can even place it behind the camera.
The focus range is also obscure, due to the attribute name: ‘DOF Unit Conversion Coef.’ They could have simply named it ‘DOF Range’ or even ‘Focus Region Scale’ like the Maya DOF attribute. Luckily, DOF is something a lot of people apply in post so this will not affect them.
The software doesn’t offer ‘real’ GI, although it offers real-time ambient occlusion and color bleeding. This means you need to fake the lighting in your scene and then add these effects to completely sell the effect. In the following screenshots, I show you color bleeding and ambient occlusion effects as separate layers.
The majority of effects are enabled via FurryBall nodes. If you want to create reflections, for example, you add a Geometry node to the reflective object and activate reflections there. The same applies to ambient occlusion, advanced shadow settings and such. This is something you should keep in mind all the time, as sometimes you may enable a feature in the FurryBall viewport and wonder why that feature is not being rendered.
After your scene is completely configured, you’re ready to render. FurryBall allows you to enable different passes for output. For example, maybe you just want to render out the ambient occlusion pass, or the shadow pass. Then you go to the Output Settings node and render out your scene or animation. Rendering an animation takes just a few seconds as you’d expect.
Personally, I found the output formats somewhat limited. The available formats may be enough for some, but not for me, as I usually use multi-channel OpenEXR files (they are extremely friendly for compositing, as you can store all your render passes in one single file). I would absolutely love it if a future version offered the ability to output to multi-channel EXR files.
Another thing I need to point out, is that FurryBall does not support NURBS or Subdivision Surfaces rendering, so you need to convert every model to polygons before using FurryBall to render your scenes. The image below shows a scene where the bunny and floor models are polygons, but the wall is a NURBS plane, and you can see the wall is not rendered by FurryBall.
I’ve read some users complaining that the demo version takes the “this is a demo” message too far. If you’re using the demo version, FurryBall will display a large amount of watermarks on top of your viewport and rendered images. This is completely understandable and even expected if you ask me. However, you will also be seeing an annoying pop up window reminding you that you’re using a demo (in case you missed the very noticeable watermarks).
AAA Studio plans to implement Sub-Surface Scattering on their next update, which is more than welcome as you will no longer need to fake skin with standard Maya shaders. I would also love to see real GI as well.
FurryBall comes in 3 different flavors, depending on your needs. FurryBall Light is pretty much aimed to people who will only work on setting up scenes. FurryBall Design can output images, but can’t render hair, nor DOF. FurryBall Master includes all the features.
As I said, real-time rendering for production is a paradigm shift, not only because it moves the rendering task away from the CPU, saving money on large render farms with hundreds of cores, but also because it changes the way you look at rendering. GPU-based rendering should get a lot of momentum these days when CPUs no longer keep up with the requirements of high-end images.
If you are part of a small studio using Maya, and can’t afford to have a render farm to finish renders in a decent timeframe, FurryBall is for you. In general, if you are a 3D graphics professional, you should really keep your eyes on real-time rendering technologies as they become available.
Sergio Aris Rosa [nemirc], is Sr. Staff Writer for the Renderosity Front Page News. Sergio discusses on computer graphics software, animation techniques, and technology. He also hosts interviews with professionals in the animation and cinematography fields. You can follow him on Twitter, and if you want to see what he's up to you can visit his blog.
March 8, 2010
Please note: If you find the color of the text hard to read, please click on "Printer-friendly" and black text will appear on a white background.