Modeling Racetrack Collision Meshes

While working on a racing-game-idea, I noticed that sometimes parts of a track seemed to be really bumpy for no apparent reason. Have a look:

Looks alright, doesn’t it? Well, as I already suggested there is of course a reason for this and it’s actually not all that non-apparent now that I figured it out…

What happens is this: I model a track in quads, change it around a lot, finally export/import it and notice that it’s bumpy in Unity. The reason is that the quads get triangulated automatically on import as game-engines only work with triangles. This is not a problem by itself, it only becomes a problem if the quads are non-planar (- that means that not all 4 vertices of a polygon are on the same plane). If you triangulate non-planar quads you get this result:

not so nice… now there’s several possible solutions:

1.) Try to make all polygons planar by hand – this is a pain, as fixing one breaks two others…
2.) Subdivide until you have enough polygons to ensure a smooth ride – this is suboptimal because performance goes down if the collision mesh is too dense. But how much polygons you need depends very much on your track and game, so only testing can determine if this is a viable solution…
3.) Change the texture to something that looks bumpy ;)

or 4.) Recreate the polygons in a way that ensures they’re planar: Create a Cone that contains the wanted curve, delete the base, flip the polygons, delete all the other polygons you don’t need and replace those non-planar troublemakers…

PS: Modo-Tip: In the Statistics pane under Polygons > By Type > Non-Planar you can select all non-planar polygons to see where troubles might occur

Bookmark the permalink. Follow any comments here with the RSS feed for this post. Trackbacks are closed, but you can post a comment.

One Comment

    chad on March 17, 2009 at 18:30 | Permalink

    nice tip

Post a Comment

Your email is never published nor shared. Required fields are marked *


You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>