Jump to content
  • Advertisement
Sign in to follow this  
  • entries
  • comments
  • views

More on Subdivision Surfaces

Sign in to follow this  


Ok, so I thought I'd explain more on this subdivision surfaces stuff. My original idea for the editor was to end up with something in which I could design an object as a low-poly model and get the algorithm to "create" a nice smooth tesselated object by itself. After spending many months trying different algorithms, I ended up using the one described in the paper "A Factored Approach To Subdivision Surfaces" by Joe Warren and Scott Schaefer.

I first came across the concept of SubDivision Surfaces in this excellent article on GamaSutra. After reading it I originally used the suggested Butterfly algorithm. It was really great for creating nice-looking curves and, as its an "interpolating" algo, you can guarantee that all the original vertices are in exactly the same places in the tesselated mesh. Unfortunately, it's not terribly good for creating crease or "sharp" edges (or at east, I don't think it is). So on the search continued. After looking at loop and even n-patches (neither or which gave satisfactory results), I came across the gem described above.

Unfortunately it's an approximating algo, meaning that the original verts may not be in the same spot after tesselation. Aside from that it had everything I wanted. It produces nice curves and handles crease edges and points very nicely. After including "hard" edges myself (edges that remain sharp, not forming a nice curve like the crease edges), I was pretty happy with the result. Here's another example of what it can do (remembering this is all programmer art):

Untesselated object.
Tesselated with multitexturing.
A view from above in wireframe.

The untesselated object has 29 faces (including triangles, quads and creases) and the tesselated one has 1856. That's after 3 levels of tesselation (each face becomes 4 faces per iteration of tesselation).

Currently I'm working on the scene-editor that allows me to place many of these objects together to create a scene or level. Eventually I'd like to work with an artist to create some nicer textures and low-poly characters. The long-term goal is to use this engine to make a 3d platformer.
Sign in to follow this  


Recommended Comments

So, what format will it save to? And, will it be able to export to other file types, if so... this could be the program I've been looking for (though it propbably won't be finished for about 6 months, if it finishes at all).

Share this comment

Link to comment
Currently it saves the scene to my own level format. It also saves object shapes out to another custom format if you want. It only saves the un-tesselated shapes at the moment, as the focus of the engine is to avoid saving large amounts of data to or from disk.

I suppose I could add support for saving the tesselated data, but I reckon a better approach would be to use the editor to design the objects, then use a dll or something to load my format into your game.

Share this comment

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!