Monday, January 21, 2008

O-Cubes: Objective Oriented Objects

Hey! It's been at least a year since I coined a new, ridiculous term. So here it is: O-Cubes (as in O's-to-the-third): Objective Oriented Objects. As per usual with the new term coinage, the aether fairly rings with the sound of, "What you talkin' about, Havens?"

Anyone mildly familiar with programming (I qualify as "mildly" in the most mild interpretation of the word "mildly") will know the term "Object Oriented Programming (OOP)." The basic idea behind OOP is that it's easier to have chunks of code that can be fitted together in various ways as opposed to writing all programs from scratch. See? Mildly mild familiarity... The "objects" in OOP are code routines. Not actual objects, of course. For O-Cubes I'm using the term "objects" with reference to rendered, 3D objects for use in games, virtual worlds, design, architecture, art, etc.

I had read somewhere else, but was reminded today, of a new 3D program called Dryad out of Stanford. The purpose of Dryad is to allow users to create virtual 3D trees using an intuitive, "game-y" interface. If you've ever done any 3D design, even with great programs, you know that designing 3D objects is, at best, a delicious pain.

In OOP, the assumption is that programmers want to start with reasonably discreet, meaningful chunks of programs, rather than from first-order tools. With something like Dryad, the assumption begins with, "Users want to create a tree that looks something like a tree, but with lots of options." That's a good assumption. I can't ever remember wanting to create a 3D image of a tree and thinking, "I hope it comes out looking like a Swiss Army Knife."

In standard 3D programs, you often start with what are sometimes called "prims." Which is short for "primitive," meaning "primitive geometric shape." Depending on the program, there can be lots or a few prims, and the tools to modify them range from simply (grow, rotate, stretch) to complex (combine, extrude, bevel). But, in the end, anything you build is made from lots of wee cubes, toroids, pyramids, etc., all woven together carefully over a loooong period of time.

What many users (me) often do, is search for a finished 3D object (from a royalty free collection, of course) that is close to what is needed, and then modify (mod) it. You want a blue, 1940's style sports car? Find a green 1960's style one and mess around with it. Much easier than primming a car from scratch.

Which is, essentially, what Dryad is doing: providing base forms to mod. They're just doing it on purpose, and with a specific end form in mind. I would call this a basic O-Cube: you have an objective ("I want a big, bushy red tree"), and the objects presented to you are oriented towards that.

Users of Second Life will be familiar with the in-game tool that lets you create very specific, highly customized avatars. You can change, simply by manipulating a couple dozen sliders, body shapes and sizes in an endless variety of ways. One slider, for example, will control leg length. Move it to the left, longer legs; to the right, shorter ones. The same goes for, as I said, dozens of other features: head, shoulders, knees (you can make them knocked or bowed) and toes (big or small feet). Further manipulation is possible by layering flat images (textures) on your avatar, both for clothes and "skins" (basically, clothes that are under all the other clothes). So, with almost no training, a player can create an avatar that looks like... well, just about anyone. This kind of avatar is another example of an O-Cube, of course. And I'm going to call the tools that allow you to create avatars (SL) and trees (Dryad) "O-Cube Extruders." Yeah. That's really odd and unsexy. Should catch right on.

But then, in Second Life, if you want to create anything else... it's back to pyramids, blocks, spheres, etc. In 20 minutes a design novice can create a person-figure that looks a lot like Albert Einstein. But in 20 hours, an Albert Einstein couldn't create a decent looking boat. Or car. Or shoe. Or tree.

Making the design of 3D objects *part* of the game is the next step in creating more interesting, compelling virtual reality spaces, I believe. I'd love to build my own wonderful, specific, creative house in Second Life. I just don't want to do it from blocks.

Is this the "dumbing down" of design? It depends on what level you examine the term "design." I haven't ever made my own paint from minerals and oils. But I have painted. Is that a dumbing down of the painting process? Same for graphic design: I use programs like Photoshop and InDesign. They are highly object oriented, in many cases.

Imagine a virtual world where there were "Dryads" for hundreds or thousands of objects. You want your in-game house to be a giant aquarium? Great. Rather than design 100 different fish pets from scratch, start with the Fish-o-matic.

What someone should design is a virtual world where the tools to make O-Cube extractors are provided. Sliders to control what the sliders control. That way non-programmers (and non designers) can create the things that they (and others) can then use to create things. Which will then populate the virtual worlds.

If that sounds far-fetched to you, try Second Life just long enough to mess around with the avatar creation tool. It feels very intuitive and is a bunch of fun. Now imagine being able to have that much control over all kinds of stuff.


No comments:

Post a Comment