Archive for the ‘3D Modeling’ Category

Generation Y and low-poly 3D models

Wednesday, June 4th, 2008

I read an article in the newspaper (yes, they still have those) on Tuesday that talked about the nature of people in my generation (Generation Y, whatever that means). We are self-centered, confident, and hell-bent on instant gratification. We also want respect in the workplace now, or else. These insights are news to me, of course. Whatever leverage my peers are using to threaten their employers was clearly not shared with this humble peon.

Aside from the fact that we aren’t very nice, m-m-m-my generation is also, according to the much nicer folks who decide these things, quite tech-savvy. We were raised using the internet and have all embraced Satan’s favorite crime: file sharing. In effect, we think everything should be free.

Now, for the record, I don’t think everything should be free. I frequently purchase music from iTunes, I am a long-time subscriber to Netflix, and I will gladly pay $.99 for a Frosty. But YouTube, Google Analytics, and the open-source software movement have taught me that while quality usually costs, it doesn’t always have to.

No, the internet is home to an amazing array of kind-hearted people who build web sites offering free stuff to download (if you can wade through all the ads). Ok, most of it is crap, but a diligent search for just about anything will generally yield a site or two offering the real deal.

It was this thought process that convinced me to search for a site offering free, low-polygon 3D models to help me test a concept for my latest project. (Before you chastise me for cutting corners, let me remind you that I am a one-man shop.) You can imagine my surprise when the search yielded nothing of use. There are plenty of good sites selling 3D models, and there are plenty of horrible sites offering free models, but I found few good sites with free models, and, even worse, I didn’t find any sites at all with a dedicated library of free, low-poly models.

You might argue that the niche for aspiring game developers with no money is too small to warrant such a site, and you might be right; however, consider the number of low-cost (or free) game-development platforms on the market, the hordes of young computer programmers, and Microsoft’s XNA Creators Club.

It seems more likely to me that the limiting factor is the number of skilled modelers around. Most are probably employed (and sick of modeling by the time they get home), disinclined to post their work for free, or not that interested in low-poly work.

Regardless of the reason, the results of my search make me sad. Partly I’m sad that I couldn’t find any models to use, but really I’m just disappointed that my instant gratification will have to wait.

A shortcut for modeling people

Wednesday, May 28th, 2008

As a way to settle on my next project, I decided to do some character prototyping. It’s something I haven’t done in a while, and it seemed like a good time to try a more in-depth 3D modeling project.

The human form is, as you might imagine, a fairly complex thing to model. It’s easier with a solid reference drawing, but I’m not a particularly skilled artist either. So, armed with a basic line drawing enough skills to be dangerous, I set out to figure a way to cut some corners.

After some digging for a free alternative to Poser, I stumbled on a relatively new, open-source product called MakeHuman, a free piece of software designed to help people create 3D models of the human form. Turns out it’s not quite complete, but I think it’s going to be pretty effective for my purposes.

Upon first opening the program, though, my first thought was, Wow, that’s quite an androgynous figure. This might not work at all. The model had kind of a masculine face and a vaguely female body. It turns out, though, that MakeHuman takes an interesting approach to body shape. Rather than selecting “male” or “female” when you start, you get to adjust the values along several continua, including male/female, age, muscle mass, body shape, and weight. The default model happens to lie right in the middle of the male/female spectrum.

After tweaking parameters for an hour or so, I had a character that I thought looked decent, so I exported a model to fine-tune in Cheetah. I’ve been working the last few days to dress it and simplify the mesh.

The only hitch so far has been that MakeHuman outputs a fairly high-resolution model with about 12,000 polygons. I ultimately want one that has four or five thousand, which should provide plenty of detail. Though Cheetah doesn’t have a method for polygon reduction, Blender has a good one, so I used that first to get things down to a reasonable level. Despite the extra step, I’m hoping to end up with a decent model that doesn’t require building a human form (particularly the head and face) from scratch.

It remains to be seen whether MakeHuman provides a shortcut that’s actually shorter, but so far it looks like it will be a huge help in modeling.

Blender 2.46 released

Thursday, May 22nd, 2008
This news is a few days old now, but Blender 2.46 was released on Tuesday. This new version adds an impressive list of features, including:
  • Better hair and fur simulation
  • An improved particle system
  • Cloth simulation
  • Render baking for effects like normal maps
  • Ambient occlusion
  • UV texture editing

I haven’t used Blender much in my game development process so far, since Cheetah provides most of the features I need in a friendlier package, but this program continues to amaze me. In my opinion, Blender is one of the true success stories of the open-source movement. It is actively developed and delivers a host of professional-quality features in a cross-platform package, for free. To buy a program with the same capabilities would cost thousands of dollars.

And, by the way, it plays nicely with Unity. Blender is definitely my app of choice for advanced 3D modeling and animation effects.

Take a look at the official Blender gallery if you want to be amazed.

Modeling a tree (the easy way)

Tuesday, October 30th, 2007

Like so many things in life, I have discovered after days of work that there is an easier way to do something. That’s right, my irritatingly complex description of how to model a tree has been rendered obsolete in 48 short hours. Ok, it was obsolete when I started — I just didn’t do my homework before I set to modeling.

What’s the easier method, you ask? It’s called Arbaro. It’s an open source tree generation program based on a paper by Jason Weber and Joseph Penn outlining an algorithm for computer-generated trees. It’s platform-independent. It’s free.

Here are some images of trees created with the same algorithm.

I downloaded Arbaro and played around with it for about 30 minutes. Parts of it that are less than intuitive, but some helpful diagrams and more-or-less hidden documentation provide a little guidance. Regardless, this is the kind of program that invites exploration, so I don’t mind some healthy trial and error.

Besides generating 3D meshes for trees, it also creates automatic UV maps, which are required for texturing. The UV maps aren’t perfect, but they’re a good starting point.

Lest you think this is turning into a blog solely about trees, I would like to declare an end to this brief series on vegetation. Next up: rocks and stones. Just kidding. Maybe.

Modeling a tree, and (r)ambling through the woods

Sunday, October 28th, 2007

After some fairly tedious work on my pine tree, I have something that doesn’t look half bad.

Unity’s restrictions for in-game trees require that each tree include a single mesh (for my non-gamer readers, a mesh is just a 3D object composed of triangles) using two textures: one for the bark and one for the foliage. Unfortunately, I didn’t know how to place two textures on a single mesh in Cheetah (my 3D modeling program). It is possible, and pretty easy to set up, but it took some time to figure it out.

Create the foliage
Armed with the requisite knowledge of Cheetah’s features, I set out in earnest to fill in my tree. The process I settled on ended up being fractal-ish in a way, which seems a fitting way to create a tree:

  • First, I created a small group of six polygons that would act as a small branch and a group of pine needles.
  • Then I duplicated this small branch 10 or 12 times along the bottom-most big branch on the tree. I scaled and rotated each copy so the foliage would feel random.
  • Rather than repeat this process for each of the 20 or so branches, I just did it for the first three. This gave me three distinct sets of small branches (anybody confused yet?).
  • Then I used those three branch sets to fill out the rest of the large branches, copying each set several times and moving/scaling it into position.

Remove (some of) the foliage
Another one of Unity’s guidelines for trees is to keep each one below 2,000 polygons. Alas, after my foliage frenzy, I was about 1K over the limit. Time to optimize. My first inclination was to remove some of the small branches that didn’t add much to the density of the foliage and wouldn’t be very visible from a distance. This activity, sad as it was to remove the pretty pine needles, didn’t get me far enough. How could I remove more polygons without thinning out my lush tree?

Finally it occurred to me that the branches near the top of my tree would never be seen up close. What’s more, the branch sets up there had been shrunk down to the point that the polygons wouldn’t be visible even if you were up close.

The solution, while probably obvious to you (if you’ve made it this far), seems poetic somehow. At the very top of the tree, the sets of branches aren’t much bigger than a single branch at the bottom of the tree, so I just removed four of the branch sets at the top and replaced them with single branches. The difference is nearly indistinguishable, and I eliminated several hundred polygons. Final polygon count: 1,970. Yeah, I’m kind of awesome.