|
[In this sponsored feature, part of Intel's Visual Computing section, Rod Green discusses the creation of art pipelines for the firm's Project Offset engine/game, explaining why studios "should be aiming
to sever the umbilical cord" and implement a 'common format' approach to art pipelines.]
It's no secret that the world
of art development for games
is getting more complicated,
with dynamic rig LODs, real-time
tessellation, sub-d surfaces,
mega-textures, and the like.
The complexity of assets is
increasing, while at the same
time, there's a drive to simplify
the process to create them.
If
the initial technical hurdle is
lowered, artists will be free to be
more creative and spend more
time iterating art, and less time
wrangling their tools to try and
just get the assets into the game
(or so the thinking goes).
One really good initial step
toward helping your artists do
what they do best is to alleviate
their dependency on one specific
software package. Long gone
are the days when a studio
could get by just with a copy of
[insert your favorite package
here].
Studios should be aiming
to sever the umbilical cord and
let their art teams work with
what they know or what's best
for any given task. Beyond the
implicit benefits, there's also a
world of good to be had in using
this approach when working with
outsourced employees.
The trick to making the
switch is to change the studio's
mentality by breaking down the
export barrier and implementing
an import-based pipeline.
Export vs. Import
What's the real difference
between export- and import-based
pipelines?
An export-based pipeline
is typically structured so that
assets are exported directly
to a custom first-party priority
native format. Once exported,
the asset is loaded directly into
the engine to be binarized. The
format is often spec'ed in such
a way that the content is written
in a very specific structure
dictated mainly by the engine's
internal data structures. An
example would be to de-index
vertex data, triangulate, then
section out materials, normals,
and tangents.
Creating your own custom
exporter initially seems like the
path of least resistance. Why
should we try to interpret or work
with someone else's exporter? We
can just quickly write our own and
make it do exactly what we need!
While this is true and can
help jumpstart production, it will
ultimately confine and limit your
production team.

Figure 1 (click for full size)
One of the problems with
an export-based pipeline is it
becomes challenging to support
artists who are working in
multiple art packages. A unique
exporter has to be built and
maintained for each software
application.
Some studios avoid
this maintenance nightmare by
establishing one core package
as the gatekeeper of data
(see Figure 1), a practice that
utilizes a range of third-party
established formats to transfer
between external packages while
ultimately forcing all content to
be passed through one primary
package's exporter before it can
be loaded in the engine.
But what if, during production,
a superstar programmer develops
tech for the engine that will
allow you to render all meshes
via subdivision surfaces? The
programmer tells you that
triangulated meshes aren't
optimal for this new tech and the
system would really prefer quads.
You'll now have to update the
engine's native mesh structures
to support quads, modify the
external exporter(s), and -- you
guessed it -- re-export all the
mesh assets!
Another more common
example is that your project is
targeted for multiple hardware
platforms. You're going to have
to maintain multiple exporters
for different targets and at the
very least re-export the assets in a way that suits
that target platform, most commonly down sampling
the assets in the process. Needless to say, in an
export-based pipeline, managing two distinct sets
of exported assets and art pipelines can get quite
complicated (see Figure 2).

Figure 2 (click for full size)
On the other hand, an import-based pipeline
shifts the task of native conversion from the
export step to the import through a transparent
background process. Rather than defining a
custom export format, the pipeline makes use of a
standardized format (for example, FBX or Collada for
models and PSD or TIFF for textures).
The asset is
saved to this common format and then sourced in
the engine. The act of sourcing the "loading" of the
asset in the engine triggers a background process
that converts and imports the data from the source
asset as needed. It might, for example, convert
units, de-index vert data, Y-up to Z-up, combine,
flatten, resize, recolor, and so forth.
|
Adobe (or someone) will figure it out...
And when mega texturing becomes "mainstream" you will see editors supporting it by allowing 2 things. Mega textures to be generated from smaller textures (content creation process changing only slightly from what we currently see) as well as tools to allow addition of "layers" (dirt/blend/AO/GI) in the development environment (unreal editor, radiant, offset, cry-engine... whichever) otherwise, the amount of time required to create a single asset/environment would be too great. And editing a mega texture in photoshop would make an environment artist quit his/her job.
Also, rendering farms for baking levels/character maps/assets :)... fun!
My opinion... nothing more.
As Carmack explains here, the direction their technology is taking, is making it easier for artists and designers to properly convey subtleties about the "story" (for want of a better term) of an environment.
http://www.youtube.com/watch?v=YB0JzR81SPE