15
\$\begingroup\$

How are 3D models in games designed and displayed? Is it all code? Drawn on paper, then on a 3D graphics software, then... what?

Of course, game programmers won't define every vertex of every shape(/object,) they want to be drawn, all in code (whether in Direct3D or OpenGL.) So, do the game designers have tools to use, like Maya or something like it of proprietary 3D graphics softwares out there; they "draw" the model in that software, export it in whatever format, then programmers parse it via code and automatically enter the decoded/parsed raw vertices of the object/model?

I have Googled much but I couldn't find something solid to explain how this aspect of professional video games is worked on.

\$\endgroup\$
3
  • 2
    \$\begingroup\$ Here's a pretty realistic documentation of the art process: salvationprophecy.com/forum/viewtopic.php?f=4&t=413 \$\endgroup\$ Commented Jun 19, 2013 at 19:13
  • \$\begingroup\$ Hmm... this could be considered too broad to be answered, or not constructive. But at the same time is sounds reasonable to ask for someone who never approached gamedev and wants to start learning, and it could be given a good answer. So, not sure if this should get closed or not. \$\endgroup\$ Commented Jun 19, 2013 at 19:16
  • 1
    \$\begingroup\$ Usually people doing the models are called artists, not designers: character artist, environment artist, animator... Game designer is more about designing the actual game, its rules, etc. \$\endgroup\$ Commented Jun 19, 2013 at 19:19

4 Answers 4

16
\$\begingroup\$

In all the games I've worked on, the the Asset Creation Pipeline goes something like this:

  1. the concept artist (for levels/backgrounds/level models) or character artist (for models) will generate sketches for characters/levels/etc. usually multiple options are given to the creative director / lead art to decide which one they like better.
  2. The concept / character art that has been approved is given to a modeler to use as reference. Sometimes additional profile/front on art is done by the character artist to provide a cleaner frame or reference for the modelling process. I've seen many a modeler with the concept art stuck up within 3d max/maya/etc as direct reference.
  3. The modelers typically generate the base textures for the model as well, usually with the correct shader materials for the runtime. shaders are used to render the model in the game, and may have specific texture/uv/etc requirements which need to be provided by the modeler or assigned texture artist.
  4. It will be the Level Designer's job to piece together the assets to "build" level itself.

    Its unusual for an entire level to be built as a single piece of geometry. Most levels are built of pieces, or sections. (eg: infamous used a set of hexagon "tiles" http://www.gamasutra.com/php-bin/news_index.php?story=118581 and skyrim (and many others) use a lego style approach to piece together levels http://www.gamasutra.com/blogs/JoelBurgess/20130501/191514/)

    There's usually a level editor of some description involved in this process, although many games have used 3d modelers as "level editors" for instancing previously created assets.

  5. Once all this is done, the assets are typically processed by the Toolchain which turns the 3D Modeler friendly files into game ready data which can be loaded directly into the Runtime.

    Toolchains (the bit that takes the raw assets and transforms them into game ready data) are often some of the most complicated pieces of engineering in game development. They need to talk to many different applications, understand many different file formats, and also understand how to transform data into a more efficient and instantly usable format. Toolchains typically also perform lighting pre-passes, vertex welding, LOD generation and so on. Often building the entire data set for a large AAA game will take a very long time, often greater than 8 hours for a complete rebuild. So Toolchains typically also contain distributed processing to spread the load across all the PC's in the entire studio.

    The Runtime is the game itself. The executable which runs on your PC, or Console. Inside the Runtime there will be a system called a Resource Manager. It's the Resource Manager's job to load the assets requested by other systems within the game.

    E.g.: When you tell the game load into a Level, the Level's metadata will provide the Resource Manager with a list of which assets need to be loaded to display the level. Likewise, each Asset will contain a list of any Textures, Materials, or Sub Assets that are required to be loaded.

  6. Once everything's actually loaded into memory. The game will send things which are visible to the Renderer which will then interact with the API used to actually draw things on the screen.

Programmers can (and do) generate vertex information by hand. This is typically called "Immediate Mode Rendering". It's not very efficient, and is only used for situations where its not possible to use pre-generated, or shader manipulated vertex data. Eg: UI Rendering, Fullscreen Quads.

Typically 99% of the objects onscreen will be pre-generated vertex information rendered in "Retained" mode, With shaders performing any manipulation required. Eg: Skinned Animation

\$\endgroup\$
0
7
\$\begingroup\$

Here is a simple answer: They do it all in 3D graphics applications like Maya or 3DS Max. First they do some concept arts (on paper), according to them they create models, textures (in Photoshop or something like that). Simple animations are done whole in software too, more complex animations are done via Motion Capture and then mapped to your model. For animation you usually use Skeleton animation.

All of these data is saved in files.

When your game starts, it parses all these files and loads models, textures, animations. And when it's needed, it displays them.

\$\endgroup\$
4
  • 1
    \$\begingroup\$ I think there is some programming required to morph one animation fluidly into the next so when you get shot in the middle of a jump it doesn't look weird \$\endgroup\$
    – Thomas
    Commented Jun 19, 2013 at 18:05
  • 3
    \$\begingroup\$ @Thomas, Blend trees. I think. But those are like "tweening" systems that are build as an extension in a game engine. Not necessarily created within 3D models. They basically hijack the animation data and interpolate between the data with magic powers. \$\endgroup\$
    – Sidar
    Commented Jun 19, 2013 at 18:37
  • \$\begingroup\$ Yeah. Sure. You need to load, parse and somehow represent model. Also somehow draw it on screen. So definitely - you have to blend between animation. You usualy also use some inverse kinematics, but that are more specific problems. \$\endgroup\$
    – zacharmarz
    Commented Jun 19, 2013 at 21:21
  • 2
    \$\begingroup\$ If only blend trees and animation morphing were as simple as "tweening." There are multiple high-end expensive middleware solutions out there just to deal with this one specific domain of problems. \$\endgroup\$ Commented Jun 20, 2013 at 2:53
4
\$\begingroup\$

The programmers actually can define each vertex individually if they want to. This is, of course, never the case unless they're making some sort of basic cube demo. Normally, what's saved in the model files is something along the lines of a list of vertices that the programmer can effortlessly easily plug into their model-drawing code. There's obviously more to it than that, but basically model formats are giving indirect "instructions" on how to draw a certain model.

In many cases, and for many model file formats, the coding side has been done for you. There are even some text-based model formats, with accompanying drawing code, that make it pretty easy for an amature coder to follow how the model is being translated into code.

I've never been the person to actually write this code, though, so it's possible a few details of my explanation are off.

\$\endgroup\$
2
\$\begingroup\$

I have been working on my own to try to put a game together. I can give you a simple list of the programs I use.

Modelling: 3D Coat, modo

Rigging: modo

Textures: GIMP, Inkscape

Game Engine: Unity

Obviously this is a small list of applications, but for me they work and are affordable for hobbyist and indie developers.

\$\endgroup\$
1
  • 2
    \$\begingroup\$ -1 Giving a list of applications used does not describe the process. This question isn't about specific software, it's about how they're made, not solely what they're made with. \$\endgroup\$
    – House
    Commented Jun 19, 2013 at 22:35

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .