Monday, August 17, 2009
Class preparation
I'm a blender fan, but I really need to train people on 3dsMax. I purchased an edu copy a year ago (still way to expensive) and I'm finally forcing myself to use it. I've been going through the tutorials and think it will be a good way to learn max. I also need to get through all the skeleton animation stuff so I know how to do it in Max. I've done it with Blender, but for this class I really need to use the tools that we have on the computers in class.
It starts in two weeks. I have a ton of material so far, but there is still a lot to go over.
I also went back and looked at the pinball game in second life and I have been itching to do some more work on it. I finally think I know how to fix the bumper mechanic and add a little skill to the game. Too much going on at this point, but hopefully the idea can slowly rise to the top of the queue and I can do some more work in SL since I enjoy that environment.
Friday, April 10, 2009
Testing some shading options
(http://store.payloadz.com/go?id=254377).
I’ve been testing some shading options and working on the 3D aspects of XNA that I have been needing to learn. One of the problems is that I have 3DStudioMax, but it is only on a machine I don’t use as much. I’ve been contemplating moving the license, but that has issues. I’ve used Blender in the past and have enough knowledge to be dangerous to myself, but went back to it as I have not been able to use Max when I need it. So, this was as much a Blender session as an XNA lighting session.
I’m using Reimer Grootjan’s book XNA 2.0 Game Programming Recipes
The section I used was on directional lighting on page 514. It shows how to get the BasicEffect to work with a directional light.
My code looked like this when I was done.
effect.LightingEnabled = true;With, specPower and light0Pos set at the top of the class definition.
effect.DirectionalLight0.Direction = light0Pos;
effect.DirectionalLight0.DiffuseColor = Color.White.ToVector3();
effect.DirectionalLight0.Enabled = true;
effect.PreferPerPixelLighting = false;
effect.DirectionalLight0.SpecularColor = Color.White.ToVector3();
effect.SpecularPower = specPower;
Vector3 light0Pos = new Vector3(-0.5f, -1.0f, 0.0f);After weeks of procrastination and thinking I was going to have to create a custom shader it was nice to find out that adding a directional light was very simple. One of the games I was going to do requires a spotlight and I do think that will require a custom shader so it's off the list until I get some extra time.
float specPower = 64;
So, first up with Blender. I’m trying to display a gemstone. I created a isosphere then scaled and stretched it to look like a gem stone. Then I added a red texture. You can see that I set the Col (Color), Spe (Specular Color) and the Mir (Mirror Color) for the gem.
This was fine, except that the gem came out all smooth.
I know from experience that this is caused by the rendering system using vertex normals to draw the individual triangles of the gem as smoothly as possible. This is almost always the case. But for a gemstone, you want it to have facets. I spent a ton of time trying to figure out how to get blender to remove the vertex normals and only use surface normals.
This ended up being easy inside of blender, but took a while to figure out how to get this information into the direct X file. To do this in blender, you select the object in edit mode, then click the Set Smooth button to use vertex normals for rendering and Set Solid to use surface normals for rendering.
Easy and you can see the two rendered versions here.
That’s all well and good in Blender rendering, but XNA kept displaying the gem as a smooth surface. After tons of fiddling, I noticed one of the options on the Blender DirectX exporter was “no smooth”. The tool tip says exactly what I wanted to hear “Every vertex has the face normal, no smoothing”.
Once I exported with that setting everything worked.

Getting back to Blender, I found it really hard to learn, and hard to relearn, but for the price (Free) it really is an amazing tool. I have a book on it that I've barely touched called Introducing Character Animation with Blender by Tony Mullen
My real problem with Blender came in the classes I was teaching on Torque last year and the fact that we could never get the bone systems to work properly. It seemed that 3DSMax was the only real way to do modeling for Torque. Maybe that has changed?
I did find this great reference image on the Blender hotkeys (http://en.wikibooks.org/wiki/File:BlenderHotkeysObjectMode.png. If you are going to use Blender, you are going to want to learn as many as possible. It really is a fast fast tool once you get to know the UI. Mostly I only use Space Bar, B (box select), A (select/deselect all), S (scale), R (rotate X,Y,Z).
(http://store.payloadz.com/go?id=254377).
Tuesday, April 3, 2007
3d game development tools and Torque
PaintShopPro is a great paint program. The first edition of the book used this tool, while the second edition uses Gimp. Since I already had a number of students in an earlier class that had used PSP I chose to stick with it. Also, it is my favorite paint program and in my opinion better than Photoshop for everything except CMYK. I've done a ton of image and print work over the years and PSP is an amazing value. Corel bought it from an independent developer a few years ago and I've been expecting a $400 price increase. I'm sure I'll grudgingly switch to Gimp if that happeens.
Milkshape is the tool used in the book and we made sure it was available for the students. It's not the best 3D tool by a long shot. It is missing a lot of features which also makes it a lot easier to learn. A double edged sword, but still a great value for $25.
For texture mapping you have to used a second tool called UVMapper. It's free and easy to use.
QuArk (Quake Army Knife) (free) is the tool we used to create interiors. Interriors are BSP trees that have a lot of properties that speed up rendering and collision detection. The cost is that the tools that do BSP are all very confusing and QuArk is no different. If you use QuArk for Torque, make sure you read the PDF tutorial that comes on the Game Programming All In One CDROM (it's not printed in the book any longer). It is a great tutorial that will take a lot of the guess work out of a confusing UI. Also, make sure you download QuArk from the Garage Games site and not the one main site as it's already configured for Torque. The Unreal editor is a BSP editor and it is just as confusing. Just because you pay more you are not going to find a good BSP editor.
Audacity (free) is not my first choice of audio tools, but my first choice (CoolEdit by Syntrillium) was purchased by Adobe and the price raised by $400. I'm not one to pay hefty fees for software and have found that I can live with Audacity. I'm going to be really mad if Corel does the same thing with PaintShopPro.
Blender (replacement for Milkshape) is my last tool of choice and it is a controversial one. You either love it or hate it. Blender was a commercial 3D editing tool that moved into the open source community driven world and is well updated and supported. It is absolutely free. That's not the controversial part. You either love it or you hate it as the UI takes a little getting used to, but once you have it down it is extremely fast. The commercial equivalent is 3D Studio Max and is used by 98% of the game studios. My only problem with it is the $3500 price tag. I'll do another blog entry just on Blender.
That's my list of (cheap/free) software to use in 3D game development.