views:

257

answers:

3

Hi Guys,

I'm trying to learn OpenGL ES quickly (I know, I know, but these are the pressures that have been thrusted upon me) and I have been read around a fair bit, which lots of success at rendering basic models, some basic lighting and 'some' texturing success too.

But this is CONSTANTLY the point at which all OpenGL ES tutorials end, they never say more of what a real life app may need. So I have a few questions that Im hoping arent too difficult.

  1. How do people get 3d models from their favorite 3d modeling tool into the iPhone/iPad application? I have seen a couple of blog posts where people have written some python scripts for tools like Blender which create .h files that you can use, is this what people seem to do everytime? Or do the "big" tooling suites (3DS, Maya, etc...) have exporting features?

  2. Say I have my model in a nice .h file, all the vertexes, texture points, etc.. are lined up, how to I make my model (say of a basic person) walk? Or to be more general, how do you animate "part" of a model (legs only, turn head, etc...)? Do they need to be a massive mash-up of many different tiny models, or can you pre-bake animations these days "into" models (somehow)

  3. Truely great 3D games for the iPhone are (im sure) unbelievably complex, but how do people (game dev firms) seem to manage that designer/developer workflow? Surely not all the animations, textures, etc... are done programatically.

I hope these are not stupid questions, and in actual fact, my app that Im trying to investigate how to make is really quite simple, just a basic 3D model that I want to be able to pan/tilt around using touch. Has anyone ever done/seen anything like this that I might be able to read up on?

Thanks for any help you can give, I appreciate all types of response big or small :)

Cheers, Mark

A: 
  1. Write or use a model loading library. Or use an existing graphics library; this will have routines to load models/textures already.

  2. Animating models is done with bones in the 3d model editor. Graphics library will take care of moving the vertices etc for you.

  3. No, artists create art and programmers create engines.

This is a link to my favourite graphics engine.

Hope that helps

tm1rbrt
it sort of helps, but I really want to know how to do it, I need a basic model imported and animated (very simplistically) into a iPad app. But all I seem to get is high level "you could do this" or "people seem to do that"
Mark
+1  A: 
  1. something many people are surprised with when starting OpenGL development is that there's no such thing as a "OpenGL file format" for models, let alone animated ones. (DirectX for example comes with a .x file format supported right away). This is because OpenGL acts somewhat at a lower level. Of course, as tm1rbrt mentioned, there are plenty of libraries available. You can easily create your own file format though if you only need geometry. Things get more complex when you want to take also animation and shading into account. Take a look at Collada for that sort of things.

  2. again, animation can be done in several ways. Characters are often animated with skeletal animation. Have a look at the cal3d library as a starting point for this.

  3. you definitely want to spend some time creating a good pipeline for your content creation. Artist must have a set of tools to create their models and animations and to test them in the game engine. Artist must also be instructed about the limits of the engine, both in terms of polygons and of shading. Sometimes complex custom editors are coded to create levels, worlds, etc. in a way compatible with your specific needs.

UncleZeiv
thanks a lot for the details. By pipeline, do you just mean a sort of protocol for getting artistic assets from the artist to the developer?
Mark
a protocol, but more importantly a set of tools. all the steps required to transform the artist's output should be as automated as possible; the artist himself should be able, ideally, to test his output in some sort of way without having to explicitly involve the developers at every iteration.
UncleZeiv
+1  A: 

Trying to explain why the answer to this question always will be vague.

OpenGLES is very low level. Its all about pushing triangles to the screen and filling pixels and nothing else basicly.

What you need to create a game is, as you've realised, a lot of code for managing assets, loading objects and worlds, managing animations, textures, sound, maybe network, physics, etc.

These parts is the "game engine".

Development firms have their own preferences. Some buy their game engine, other like to develop their own. Most use some combination of bought tech, open source and inhouse built tech and tools. There are many engines on the market, and everyone have their own opinion on which is best...

Workflow and tools used vary a lot from large firms with strict roles and big budgets to small indie teams of a couple of guys and gals that do whatever is needed to get the game done :-)

For the hobbyist, and indie dev, there are several cheap and open source engines you can use of different maturity, and amount of documentation/support. Same there, you have to look around until you find one you like.

on top of the game engine, you write your game code that uses the game engine (and any other libraries you might need) to create whatever game it is you want to make.

Olof Hedman
thanks for the input Olof
Mark
so many great answers, this one seemed like it was more on track :)
Mark