| |
|
|
||||
![]() |
||||||
| |
|
|||||
|
Exhibition Floor: Software Improv Technologies. On the software side, Siggraph had two nice surprises in store for me. First, there was a new company on the expo floor called Improv Technologies, which is a spin-off from New York University's Center for Advanced Technology. The company is headed by Ken Perlin, who is also the guy behind the well-known noise function that bears his name. He was awarded the scientific achievement Academy Award in 1997 for the development of this function, as it's been widely used in many movies. The goal of Improv Technologies is to create and deliver products based upon research that's been going on at NYU over the last two decades -- research that is closely related to game development. NYU research has traditionally been focused on the production of procedural character animation, using turbulence and noise functions as control systems. Their work tackles both the high and low levels of this problem. At the low level, it controls small character movements (such as frowning and smiling) in a realistic and convincing way. You can experience a very nice hands-on Java demo at http://mrl.nyu.edu/perlin/facedemo. At the high level, the folks at Improv have also explored layered animation (which was the goal of the original Improv system), which allows improvisational actors to interact and behave in real time in complex, networked environments. You can find additional information on those research subjects in the bibliography at the end of this article.
At Siggraph, Improv premiered their first two products: Orchestrate3D and Catalyst. Orchestrate3D is a project management tool for animation. It's core module is the Scene Conductor, an animation compositor. Using the same paradigm found in the original Improv system from NYU, animators can assign motion sequences to body parts, blend different motions in different areas of the body, layer motions, sequence animations, and so on. Catalyst, on the other hand, is a generic game engine with emphasis in the graphics subsystem. It includes an advanced character animation engine, plus a level engine. The character animation engine is designed to work with an animation package such as Maya or 3D Studio Max, and supports low (e.g. facial expressions) and high (e.g., full-body layered control) levels of detail. The level engine supports a number of advanced features like curved geometry, real time shadows, cartoon rendering and collision detection. Although neither product is available yet, the demos and talks at Siggraph make me believe that it would be wise to keep an eye on Improv, as their company is capable of creating some spectacular game development tools. SGI's Marc Olano. The second software highlight doesn't come from the expo floor, but from a technical paper presented by Marc Olano and others from SGI. The technique introduced is based on a simple idea: to achieve Renderman-quality shading power using standard OpenGL calls. To those of you unfamiliar with CG software, Renderman is a widely accepted rendering standard that Pixar developed in the late 1980s, which has been used to create blockbuster movie effects shown in hits like Toy Story, Jurassic Park, and The Abyss. Renderman's main advantage is a very flexible, C-like shading language, which allows procedural definition of surface attributes, texturing, lighting, and so on. This language is the Renderman Shading Language, and its "programs" are called shaders. You can see an example Renderman shader (the ubiquitous marble texture) below: #include "marble.h" surface
marble() Renderman shaders are compiled into byte code, similar to the way Java operates, and they are executed during the rendering process. Although they deliver very high quality results, they are not well suited for real-time applications like games. Some games (the most noticeable example being Quake 3) have tried to replicate this "shader power" in real time, but results have never been close to what's possible with Renderman. What Marc Olano showed at Siggraph is a prototype technology called Interactive Shading Language. This shading language is roughly equivalent to Renderman in features and power. The great thing about it is that SGI has developed a technique to convert Renderman-style code into OpenGL calls automatically, so the CG shader becomes usable in a real-time environment. Theatrically, one could take a shader from movie production, plug it into SGI's shader compiler, and get pure, optimized OpenGL code. In a sense, the system turns shader instructions into rendering passes into OpenGL's pipeline. Thus, using multitexturing on today's hardware, you can achieve similar results to those created by Renderman. Below, you can see a top-down comparison of the same scene rendered using Pixar's Photorealistic Renderman (top) and OpenGL multi-pass rendering with a shader compiler (bottom). The benefit of this new technique is clear: a company will be able to use the same technology in the production/CG area and the games department. And the fact that today's game hardware implements more and more Renderman-style functions (Nvidia's per-pixel lighting and shading are a good example) certainly helps. So someday soon we may see huge gains in visual quality by porting shaders to OpenGL, without incurring a significant performance hit.
|
|
|