transform view

SOFTWARE: blender

shift + mmb and drag

transform (pan) world view


3d height map from usgs

SOFTWARE: blender

download usgs bil format => microdem => photoshop => blender

I'm still working the details of this one out. But here's what I've found so far. Say you want to get a height map of a real area on earth, and then use it to model the place in a 3d tool like blender. (google earth already maps elevation to satellite imagery automatically -- but doesn't give you the control you can get with a dedicated software package like blender.)

Seamless Data Distribution Delivery from the USGS

The USGS has a really nifty tool for downloading data about the earth. It's a bit cryptic to figure out. "Images" that you can download come in a variety of funky multi-part files. Options for format are things like: GeoTiff, ArcGrid, BIL and GridFloat. So how do you get the data into something your average monkey can use?

Since my goal is simply to get the data into grayscale format to create a height map for use in 3d, I experimented with the formats and found that .bil worked the best in conjunction with microdem (freeware) to convert to something more useful. For some reason GeoTiff kept crashing microdem for me. It is supposed to work, but wasn't, so I just stuck with .bil format.

On the "seamless" tool, you basically select an area to download, then review your download format options, then proceed to get your download in the formats you've specified. Takes a bit of playing with to get all the settings right.


Once an image is in microdem, you can choose to view heights as grayscale, and then export to photoshop readeable, like bmp. (Microdem is PC only - there might be something similar for mac/nix systems, but I didn't find it right away.)

To get .bil format into, and out of microdem:

  • file > open dem
  • select the .bil file in the folder of your download from usgs
  • modify > elevation > grayscale
  • modify > grid > neither
  • file > save image > .bmp format

This got me my bmp version of the height map. For the satellite image itself, the only option for download from the seamless tool was ArcGrid, and that was crashing microdem. Since I wasn't able to successfully grab a nice hirez image from seamless in a format that I could convert, I ended up taking an image from google earth, instead.

To line the two up, I did all my selections based on coordinates (see below.)


Last, we have a nice tutorial on using a grayscale height map to create a landscape in blender available here:

blender landscape tutorial by Olivier Saraja

Note on using Coordinates

On the seamless tool from usgs, it's efficient to download data based on coordinates, rather than selecting an area manually each time. It's faster, and consistent, and you can map it to imagery from another source based on numbers. For Stafford Lake disc golf course I used:

  • Top: 38 07 32.00 N
  • Bottom: 38 05 57.00 N
  • Right: 122 37 15.00 W
  • Left: 122 40 08.00 W

To download via coordinates, use the keyboard/xz icon tool in the downloads section of the toolbar, and then enter your coords.

Then, I could add "my places" (markers) to google earth with the exact same coordinates. This was handy for lining up an image file from google earth with a height map from usgs.

Now, I have a nice image from google earth, and a height map from usgs, both aligned to each other based on common coordinates. Onto blender to build a 3d model of the course ...


blender commands [mac]

SOFTWARE: blender

These notes are all for development on Mac platform. (Some things are a bit different for PC, Linux. IE Save Runtime vs. Save Dynamic Runtime.)

Manipulate Objects

  • R key - rotate an object
  • S key - scale an object
  • G key - grab an object
  • A key - select/deselect all
  • B key - draw a selection box


  • 7 numpad - top view
  • 3 numpad - side view
  • 1 numpad - front view
  • 0 numpad - camera view
  • C key - center on cursor
  • . numpad - center view on active object


  • E key - extrude
  • CTRL R - loop cut (click to select general area first, then click again to determine where to cut.)
  • SHFT S - snap
  • Rem Doubles in Mesh Tools Palette of Editing - use to combine (join) vertices of a given selection tolerance around the ones you have selected.
  • displacement map note: save map as grayscale color space, at 512 square pix dimensions. 7 unit square mesh with 6 subdivisions seemed to work well. Can subdivide, smooth more later after displacing.
  • CTRL TAB toggle vertex, edge, face selection.

Game Engine

  • P key - preview game
  • do all texturing via UV, and save images as JPEGs w/ 128, 256, 512 (exp 2) sizes. (psd format for example will preview OK in game, but not work on game export.)
  • File > Save Runtime... - export as game (make sure to Pack data first! so you get all textures included in your runtime.)
  • Default World gravity is 9.81
  • One blender unit = one meter (roughly) for the physics engine.
  • Frustum Culling: the game engine will only render what it needs to based on the viewable area of the camera. This is great since it speeds up game performance. In my case, I needed to view more distance tho, before culling kicked in so I could see long distances in my terrain. The solution: select the camera, then in "editing" (f9 on pc, but you have to manually select the button on mac) set the Clipping value for "End" to a higher number.

physics tips


Sometimes it's good to create a simple animation for an object, then map that animation to the actuator in the game logic, rather than applying a force directly in the actuator. (IE for "pre-recorded" repeating type actions that you want a game event to trigger.)

IPO Animation Basics

  • Set up your windows so you've got the IPO viewer open in one window.
  • IPO viewer is keyframes, ipo curves that connect them, with values (location, scale etc) in the up axis, and time in the y axis.
  • To create an animation, go to a given time (frame) first
  • Select the object you want to animate
  • Then i key to create an ipo keyframe. This brings up options for which aspects you want to get animation curves for.
  • Modify curves in ipo window. Add keyframes as necessary.

UV Texture Notes

  • make 72 dpi maps with pixel dimensions in exponential 2 sizes: 128, 256, 512 etc. Use JPEG format.
  • On model, select a seam to use and then "mark seam" with ctrl + E.
  • In UV Face Select mode, U key > unwrap.
  • Create new window for UV/Image, open image, rotate, scale etc. faces to align with image.
  • If necessary, screen cap the unwrapped template and adjust image in image editor to fit correctly. Can use template image with numbers as temp for precise alignment and then replace with real image if complicated wrap.
  • View in textured mode.

Skybox Notes

  • Vertex-parent the skybox to the player rig in order to get it to move with the player for location by not for viewer rotation. Regular parenting makes it rotate as well. To do this, in object mode, select the child (skybox) and shift select the parent (player rig). Then go to edit mode and select just one vertex of the player rig. Hit ctrl p. This is cool, since then you can have a small skybox in a big world and it can move around with your character meaning that you can afford a smaller clip range on your camera. Good for big worlds.

blender scripts directory [mac]

SOFTWARE: blender


To add a script to your blender install on mac OS X. The scripts directory is inside hidden files (prepended with .) So access via the terminal:


tree model study

SOFTWARE: blender

notes on tree project

Notes on building a stylized tree optimized for the game engine.

Starting out building everything from scratch by extruding a cube and keeping poly count low. Playing around with flooding as vertex paint for each part, then applying vertex textures from photoshop on top.


  1. Select object
  2. Go to Vertex Paint Mode V key
  3. Pick color by clicking on swatch
  4. Click "Set VertCo" to flood all vertices with chosen color
  5. Preview with "Textured" view
  6. Preview with "P" game preview

Drop into world

  1. Save version as filename_Joined
  2. Select all objects in tree
  3. Object > Join Objects Ctrl J
  4. Save
  5. At world file > File > Append > Select Joined object from tree file

Color Flood Values

  • 8c7341: bark basis
  • 6e9e64: leaf basis

Blender to Crystal Space to Game Server

SOFTWARE: blender

Just starting this, so these notes are raw. Will firm up once I get it actually working.

9/6/2007 updates: still installing all the requirements for my mac system to get an actual game server dev environment set up as well. It would be cool to extract it as a generic framework if that's possible. Shall see.

Note that:


...would be a LOT easier. But it's all windows-based, and I'm more interested in seeing how far I can get with nix-based open source tools.

The idea is to design a basic environment and some actors in blender and then get the game environment accessible to users via an online server.

Blender Foundation is doing and open game in the same spirit as their open movie, so I started by figuring that whatever they were doing was probably well researched and a good way to proceed. Turns out they're going from Blender to Crystal Space first. So I am starting with that approach.

System: Mac OSX Tiger.

Blender and CS exporter script

  • Install latest version of blender += 2.4 blender 2.44
  • Download blender2crystal scripts blender2crystal
  • Read install file inside blender2crystal download folder.
  • Copy scripts directory to blender scripts directory.

This is funky since it's nested inside the Blender directory a bit and lives inside a hidden folder. On my machine (after moving the blender2crystal directory to /Applications) the command was:

cp -R /Applications/blender2crystal-0.6/scripts /Applications/"blender-2.44-OSX-10.3-py2.3-powerpc Folder"/blender-2.44-OSX-10.3-py2.3-powerpc/

Crystal Space and PlaneShift

PlaneShift is an open source MMORPG that uses the CS game engine. Probably makes sense to goof around with this game for a while and go from there.

Install guide for PS dev instance

More detailed guide including server setup - linux

Compiling Guide Links

Terrain Tutorial

Load map into PS tutorial

Note: I'll be building CS and stuff via macports, so I might need to tweak my path settings which live in ~/.bash_profile and ~/.profile if things don't work out right away...

Check mac os status thread for updates on status of current mac client. Install the basic game first, then install the ps dev instance to experiment with the workflow: blender -> cs -> ps -> online access.

The PS client connects to the public server via port 7777.

Set the PS client to connect to your local dev server (once you have it running correctly) at localhost:13331