• entries
67
89
• views
52150

# More on Subdivision Surfaces

268 views

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):

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.

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).

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.

## Create an account

Register a new account