15
$\begingroup$

I've been exploring game development for a while now. I have created a small prototype but the models that I downloaded from the internet were too heavy for its small computational power. I have discovered how I could avoid the use of shaders by baking textures and shadows in blender. But I'm still not proficient in optimizing downloaded models for the internet. Basically many models on the internet contain too much detail on the surface but if I will just use textures, I don't require so much detail.

  1. Can someone help me in to understand how I should convert downloaded models, remove extra detail and make it optimized for my use.

  2. My goal is to not have so much detail, I want to show models only from a distance and from only one view. What other optimizations can I employ in this case? Reasoning suggests that we are just using one view I should be able to somehow remove other useless details? How should I do that.

  3. This problem seems very common for android/iPhone developers, which makes me believe that there should be an automated solution to do this and create some low poly, low detail, baked textured models. Is there??

I don't have much experience in this field so I'm using my intuition to guess what could be done. Please point me in the right direction so that I can learn the topic better.

$\endgroup$
14
$\begingroup$

Often, when you make a model for a computer game, you start out by making a high poly model. Then, from this, you make a lowpoly model that is going to be used inside the game. This is almost always a manual process and it is called retopology. After that you can bake both diffuse texture, ambient occlusion and normals from the highpoly to the lowpoly texture. You will find many many tutorials on this.

In your case, you already have the highpoly model. So do a lowpoly version and start baking.

There are numerous ways to create the lowpoly version.

  • Create the lowpoly mesh from scratch, extrude new vertices and snap them to the faces of the highpoly version. Fill with faces.
  • Create a grid of new vertices, and use the shrinkwrap modified to make them fit the highpoly model.
  • CGCookie have a plugin for this, Retopoflow (previous contours-retopology): https://cgcookiemarkets.com/all-products/retopoflow/
  • BSurfaces allows you to paint with strokes to create the lowpoly model.
  • The decimate modifier can automaticly reduce the complexity of a highpoly model. But almost always it must be manually corrected with one of the other methods.
  • more...

A quick youtube search found this (looks ok): http://www.youtube.com/watch?v=eaqYqkjimD8

Blender cookie have many tutorials on this subject, but not all are free: http://cgcookie.com/blender/page/2/?s=retopology&s_type=tutorials

A super fast tutorial on making a highpoly model super lowpoly:

Step 1. Make your lowpoly model match the outline of the highpoly. Like this: From above, lowpoly is in wireframe mode From side

Step 2. Simple UV-unwrap of the lowpoly (go into edit mode, select all faces and hit U). Mark appropriate edges as seams with Ctrl-E to cut it up. Assign a new image to it. Simple UV unwrap

Step 3. Bake normals to the lowpoly texture like this. Select highpoly, also select lowpoly (select the lowpoly last). Set settings like in the screenshot and hit bake. Save the image as the normal map. Bake normals

Step 4. Change Bake mode to AO and hit bake again. Save out image. Bake ambient occlusion

Final result when combining these two maps into one material in blender. Of course, this will require a shader with a normal texture, but I am pretty certain that JME has it. Preview

This mini-tutorial is very short but it should make you search for more help (or ask questions) on more specific topics (like: how to UV-unwrap a model).

As for your other question. I don't know of any technique to make this more automated.

The dolphin submarine is of my making.

$\endgroup$
  • $\begingroup$ Great this really helped. Could you also guide me regarding point no 2. Can I somehow exploit the fact that I will use only one view of my models. Should I use planes and apply baked textures on one sides. Secondly do you know what bottlenecks prevent automating the conversion of 3d models to planes with simple textures. The idea is to generate a lot of low poly models (whose only one side is texture baked and applied to planes) with the use of a script.. This can save a lot of development time, etc $\endgroup$ – simar Sep 16 '13 at 12:43
  • $\begingroup$ If you are patient, I will make an example an update this answer this evening, when I get home. I will make a really simple flat mesh only showing the outline and then bake to it. $\endgroup$ – Gunslinger Sep 16 '13 at 13:09
  • $\begingroup$ That would be awesome.. Thanks for much needed help $\endgroup$ – simar Sep 16 '13 at 13:13
  • $\begingroup$ That was excellent but if I wont use lightening.j3md, I would use only unshaded texture in jME which doesn't have any option for applying normal maps. How will that affect my final results. To my best understanding, I must use Full render bake for baking AO and shadows.. $\endgroup$ – simar Sep 17 '13 at 9:53
  • 1
    $\begingroup$ Exactly, make a full render instead of (or maybe together with) AO. Skip the normal bake. As you see, there are many bake modes, exepriment and find out what works for you. If your models are going to rotate, it may be best to use AO+texture (and crank up the contrast in an image editor). Also, try checking the normalized checkbox when baking AO. $\endgroup$ – Gunslinger Sep 17 '13 at 10:20
4
$\begingroup$

If you really have a restricted set of viewing angles for the models you might want to use a sprite-sheet instead of full 3d models. A sprite-sheet consists of pre-rendered views of your models from any viewing angle permitted by the game.

This can reduce computation by requiring only that you use a lookup table to cross reference the model orientation with the position of the pixels on the sheet. It's a technique still used by large mobile-oriented game companies.

There is a Blender plugin called Spritify aimed at doing exactly this.

$\endgroup$
  • $\begingroup$ Thats what I was looking for for this particular query. But does the lookup table thing implemented(some API) in game engines like jMonkey or do I have to do it manually?? $\endgroup$ – simar Sep 16 '13 at 13:18
  • 1
    $\begingroup$ I'm not familiar with jMonkey. Yes there is some work involved with Spritify, but if you find yourself using this method repeatedly you will write a script to take care of any labour intensive parts in your workflow. $\endgroup$ – zeffii Sep 16 '13 at 13:32
  • $\begingroup$ Hi, I have installed this plugin but how should I use this plugin?? $\endgroup$ – simar Sep 20 '13 at 6:12
  • $\begingroup$ @simar, there is a support thread at blenderartists.org by the plugin author, I suggest you read it and then if you still have problems ask questions there. $\endgroup$ – zeffii Sep 20 '13 at 6:32

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.