Expanding on a previous project I’ve done a while ago I’ve had the chance to work with floorplanner.com again. The basic requirements haven’t really changed since then: take a load of 3D models and do things to them automatically. In this case “doing things” meant
- first running a custom script
- compress the meshes
- unwrap and lightbake
- export the file to four formats
- render a bunch of thumbnails, also in cartoon style
Of course, what they need now will change in the future. Maybe they won’t need the compression anymore. Or they would like to add a part which uploads the 3D model to a website. Or they just want to generate quick renders of their models and skip the rest of the tasks. This means the pipeline needs to be flexible. I’ve done this by mimicking an object oriented approach in 3dsMax. Each task contains the same interface for finding some settings and running the task. This means the entire pipeline doesn’t care which task comes when, as long as each task has the same “on/off” switches. In the meanwhile the result of each task is stored, ready to be used in the next task. For instance, the texturebaking task saves textures, the compression task saves a compressed model and an export task bundles both the textures and model.
This modular approach gives floorplanner what they need now: a series of tasks to process thousands of 3D models with. But it also gives them what they need in the future: a flexible and extendable framework to add new tasks to. Each building block also comes with a few relevant settings they can adjust themselves, like setting the compression ratio of the render resolution. Giving them just the right amount of control. It runs in 3ds Max and runs completely without human intervention. You setup your tasks, point it to a list of 3D models and watch it happen.
After writing this small article about this project I’ve noticed it’s probably only interesting to programmers and not to potential clients. So, if you have a bunch of 3D models and need to do stuff to them automatically and repeatedly come talk to me. I can help you out, really.
I’ve also noticed I’m using words people might refer to as bullshit bingo:
- flexible pipeline: a 3D model is edited in several steps, one after another. You can change the order or number of steps
- object oriented: each step is completely separated from the others
- interface: each step has the same structure. The software running the steps doesn’t care which step is up, as long as the interface is the same
- modular approach: instead of gluing all steps together into one superstep which does what the client wants now, steps are kept separate and interchangeable
- extendable framework: the framework is the thing running the steps. It’s extendable because you can add, remove or change steps with ease