Monday, May 26, 2008

mojoDallas - The First Blog

I have decided to start a new Blog Series. This blog is more aimed at friends and family than my previous blog attempts that were mostly written for programmers, 3D artists and game developers. This blog will track my activity and hobbies in the world of 3D worlds, music, art and gaming. So what have I been up to?

A couple of years ago, I started playing Second Life. Second Life is an on-line game that is unlike most other games because it really is a virtual world that you can explore, build things, make friends and even buy and sell things. It is really more of a community than it is in a game. I have built houses, boats, furniture and musical instruments in Second Life with their tools. I was part of a twice weekly game show called Trivial Obsession that gave away prizes. I raised over $1,000 for Relay for Life by sponsoring a number of events. I have performed music "live" in Second Life at concerts including a Benefit Relief for Earthquake Victims in Japan and even shot a Music Video. I opened and ran a Virtual Clothing Store and Art Gallery. It was a lot of fun and it opened my eyes to a number of other possiblities in the bigger arena of Virtual Worlds. The picture is at my Game Show with avatars wearing a couple of Texas Armadillo Avatars that I sold.


Another term you hear associated with Virtual Worlds is the word Metaverse. A virtual world is considered a metaverse because it is a "universe" made of metadata. In other words, it doesn't really exist except for the data that makes it up. This data is then used by a game engine, in Second Life's case, the game engine is developed by a company named Linden Labs. It can result in an amazing, immersive experience for the Virtual World Resident. While Second Life is the biggest and most mature, it is also the most proprietary. When you use Second Life, you use their tools which are somewhat limiting and expensive. Playing Second Life, you have to buy land if you want to build anything and the land will only support so many objects (called Primitives) that you use in building your object like a house for example. The more complicated 3D model you build, the more it costs. In essence, you are buying time and space on their servers by buying land. Also, since you can only use their tools, you cannot use any other 3D modeling tools or import any 3D models made by other non-Second Life modelers. Second Life was starting to prove expensive and somewhat frustrating for me. Photos of playing music and selling clothes in a store.

So, in the summer of 2007, I started looking at alternatives. I came across Multiverse which was another Gaming Engine much like Second Life that was just coming out of Beta development and early in it's product cycle. What interested me was that it is written in Java and Python. I already knew some Java and had been interested in learning Python, which is a scripting language that sits on top of the C++ language that is very popular with game developers and 3D modelers. I got very involved in the community and concentrated on building what I called "Content Pipelines" for Multiverse. A Content Pipeline is stringing together a number of tools to be able to get models, characters, clothes, animations, etc from one tool into another. I have become an active participant in their community and forums and recently published a guest column in their Developer's Newsletter. They are in Aptos, California which is kind of funny because they are next to my Sister-in-Law and Brother-in-Law's home. After some studying, I decided to use Python as my integrating tool between packages. These are a summary of the tools I built and how I use them at this point:

SL2Blend - this tool is run on top of Second Life. It captures geometry meshes (gray looking 3D models) and textures (what is painted on the meshes). This was a very challenging project because Second Life being proprietary had no way of exporting any of the models you had built with their software, so, I was forced to intercept it going from the Second Life Program to the Graphics Card in my computer. It used Auto Hot Key for the menu to select options for the Export and then Blender, which is a free 3D modeling tool, to capture and display the model. The data I intercepted had the mesh information and the textures, but, I had to write python scripts in Blender to reassemble the "graphics dump" that was being sent to the graphics card. I basically wrote a program that emulated the GPU (Graphical Processing Unit) on the Graphics Card. This was a very rewarding and interesting project in which I learned a great deal on how graphics cards work today with games. Also, the technology can be applied to any 3D model in any OpenGL application, so, it has a lot of uses. I use the tool extensively to get content from Second Life to a standard 3D modeling environment.

Blend2MV - this tool written in Python using the Blender API and takes a model in Blender and exports it into a Multiverse World. I wrote this using the Blender API because besides Blender being free it also has a lot of importers that allow you to bring in 3D content built in other applications into Blender for manipulation. There are literally thousands and thousands of free and low cost 3D models available on the internet. This provided a pipeline to get these models from these many 3D formats into Multiverse. The programming included modifying a Collada DAE (an XML standard interchange for 3D models) exporter, creating DAE modifiers to easily change graphics, scale, etc, and a python importer for Multiverse to get the model into a Multiverse World. Again I used Auto Hot Key for the menu and integration and Python for the model manipulation. I used this and tested it against over a hundred models of different formats. This combined with the SL2Blend completed a Second Life to Multiverse Content Pipeline.

SU2Blend - using much of the programming from my Blend2MV tool, I decided to integrate Sketch Up as well. This took a couple of week ends. Sketch Up is the free Google 3D modeling tool that is hooked to their 3D Warehouse that has tens of thousands of models available. Sketch Up has become a very popular tool for the 3D model hobbiest. Since it was based on the other tools, it uses Auto Hot Key and Python too.

DAZ2MV - DAZ is a tool for creating 3D characters and animating them. I wrote a Content Pipeline to move these animated characters into Multiverse. This required quite a bit of understanding on how to use an animation format called BVH. It basically moves a character by telling the game engine where to put the various parts of the body. It works sort of like a move in that you pose your character frame by frame and then it runs the frames like a little movie and your character appears to be dancing, fightning, running, etc. This project also challenged me to understand the mesh, skinning and rigging of characters. The mesh controls what it looks like in 3D, skinning is controlling what areas of the skin is effected by how bones move which is the rigging. You also texture the character or avatar much like you do a normal 3D model although the art work is a little more challenging because you are doing human figures. This project also included a Blender/Python based tool that took the Second Life Avatars captured in SL2Blend and automated the rigging and skinning. I have done a number of sketches of planned 3D characters using my graphix tablet that allows you to paint and draw using a pen/brush.

After finishing all these tools, I was getting a little tired of just building software and not having fun. I had started concentrating on doing things in Multiverse like getting a new "Character Factory" built to take advantage of the work I had done with DAZ2MV. But, I was being a little overwhelmed with just developing. It was starting to feel more like a job than a hobby. I had created the tools I wanted to and learned a lot about 3D models, 3D characters, animation, etc. I had been trying to build a community and was offering my tools for others to use. I had a site called Mindies.Org (Metaverse Independent Developers), but, decided that this was all too much work. I really did not want a second job and this was what it was turning into with the support of the tools and discussions. So, I have decided to take a break. I decided that I have tools that I can use to do what I want to in this area and I am going back to this as a hobby instead of community and tool building.

So, this is what the blog will now cover. It will cover my hobby. I will be creating things instead of building tools. I plan on creating animation movies associated with the music I have written and performed over the years. I plan on building 3D environments of things I would have like to do and have in real life but couldn't, such as, building houses and other buildings, a studio, a small town and also creating whole 3D landscapes. I am really looking forward to doing this and sharing it on my website with my friends and family. Some of this could posibilly fall over into the things I have done previously in Second Life and Multiverse, but, that is not the intent of my new hobby. The intent is to have FUN! Please come back in and check on what's new via this new blog and website.

No comments: