Terrain making
From OpenSimulator
m (Detailed cross-region terrain editing - by Fu Barr) |
m (Detailed cross-region terrain editing - by Fu Barr) |
||
Line 84: | Line 84: | ||
change-region Region1 | change-region Region1 | ||
terrain load path_to_textures/terrain_for_region1.png | terrain load path_to_textures/terrain_for_region1.png | ||
− | + | ||
change-region Region2 | change-region Region2 | ||
terrain load path_to_textures/terrain_for_region2.png | terrain load path_to_textures/terrain_for_region2.png | ||
− | + | ||
change-region Region3 | change-region Region3 | ||
terrain load path_to_textures/terrain_for_region3.png | terrain load path_to_textures/terrain_for_region3.png | ||
− | + | ||
change-region Region4 | change-region Region4 | ||
terrain load path_to_textures/terrain_for_region4.png | terrain load path_to_textures/terrain_for_region4.png | ||
Line 102: | Line 102: | ||
terrain load path_to_textures/terrain_for_region1.png | terrain load path_to_textures/terrain_for_region1.png | ||
terrain multiply 0.45 | terrain multiply 0.45 | ||
− | + | ||
change-region Region2 | change-region Region2 | ||
terrain load path_to_textures/terrain_for_region2.png | terrain load path_to_textures/terrain_for_region2.png | ||
terrain multiply 0.45 | terrain multiply 0.45 | ||
− | + | ||
change-region Region3 | change-region Region3 | ||
terrain load path_to_textures/terrain_for_region3.png | terrain load path_to_textures/terrain_for_region3.png | ||
terrain multiply 0.45 | terrain multiply 0.45 | ||
− | + | ||
change-region Region4 | change-region Region4 | ||
terrain load path_to_textures/terrain_for_region4.png | terrain load path_to_textures/terrain_for_region4.png |
Revision as of 15:10, 1 August 2008
This page describes a workflow for creating large, detailed, cross-region terrains. This workflow works for me, but you may find the whole process to be a little baroque. Feel free to provide the community with a sleeker option.
enjoy!
Fu Barr.
Overview
There are many ways to create heightmaps for terrains. You can use a specialised application with 3D terrain previews, or you can hand-craft each heightmap by drawing the gray-scales with a bitmap editor like the GIMP, Adobe Photoshop or DeLuxe-Paint II.
The workflow described here is based on using a combination of both: a specialised terrain application is used to create each individual heightmap, and a bitmap editor is then used to combine, cleanup and export the maps to OpenSimulator.
The reason for this seemingly convoluted way of doing things is that I like detailed region terrains and the 3D-preview of a terrain editor provides me with more 'control' over what I'm doing compared to using only a bitmap editor.
Creating a detailed terrain map.
Step 1. Sketch the contours of your map.
This sketch should be a birds-eye view only, 3D-ness should remain in your minds-eye.
I cannot stress enough that the secret to good terrain is imagination, and in my experience the fastest path from imagination to workable idea is pen and paper. So, raid the laserprinter and dont be afraid to sketch several versions to see which one does the most justice to your vision.
Step 2. Divide the sketch into squares.
Once you have a map you like, draw straight lines across the map as per the number of regions you want this map to span. For example: a 2x2 grid would have two lines cutting the map into 4 equal squares: one going top to bottom and one going left to right.
Sometimes the lines cut your map into odd shapes like very thin slices of slope at the edge of regions, or little bits of river and lake in the corners of regions. If you redesign around these oddities now you'll have an easier time of it when you come to assembling the terrains.
Step 3. Use the 3D terrain editor to add detail.
Run your terrain editor and draw each square of your map adding in the 3D detail. Save each square as a simple gray-scale bitmap like a PNG or a TIFF.
Take care not to overdo the height thing. A good rule of thumb is not to exceed 60 metres height differential between the lowest and the highest points on the map.
Also avoid creating very steep inclines with a height difference of more than about 15 metres, as this will badly stretch the terrain textures.
Step 4. Assembling the overall terrain map.
Run your bitmap editor and create a new file of size: (256 x grid_x_regions) by (256 x grid_y_regions). For example in a 4x2 grid that would be: 1024x512 pixels. Then drop-in the individual region bitmaps you saved in step 3, taking care to match the region seams perfectly.
Put each region bitmap into its own layer, this makes it much easier to move the layers around.
Save this layered file before you continue. Trust me.
Step 5. Smoothing the region seams.
Flatten the layers of your perfectly arranged region map and then use your colour-copy tool to even-out the grey-scale values on the region seams. Save into a new file, keeping the first layered file as a starting point for new versions.
Why this smoothing business? Well, unless you've taken great care in step 3, there will be (small) differences in the gray values on the region seams. This is bad news as they'll show up as sudden height differences on your regions.
Also at this stage, you might want to use the smudge tool to blend gray-scales on mountain sides and other such details. This softens their slope and makes for prettier terrain in most cases.
Step 6. Cut the large region map into individual regions.
Once your smoothing and smudging is complete, you need to cut the region into 256x256 squares, one tile per simulator region.
Step 7. Rotate and save the region textures.
Rotate the cut bitmaps by 90 degrees and save them to disk as PNG.
Why do we rotate the region textures? It is my experience that OpenSimulator tends to rotate the textures when you apply them to a region, i;m sure this makes perfect sense in the code, and if you're just doing one region per sim you dont really care, but on a grid with detailed landscaping it wreaks havok with your design. You need to counter-act the OpenSimulator texture rotation with the 90 degree rotation you apply here.
I expect this rotation step to become obsolete some time in the future.
Step 8. Upload the textures to your server.
Duh.
Step 9. Making OpenSimulator use the new textures.
You need to now tell OpenSimulator to use the new terrain textures on your grid. For example: if you have 4 regions called Region1, Region2, Region3 and Region4... you need to add a section to your startup_commands.ini that looks like this:
change-region Region1 terrain load path_to_textures/terrain_for_region1.png change-region Region2 terrain load path_to_textures/terrain_for_region2.png change-region Region3 terrain load path_to_textures/terrain_for_region3.png change-region Region4 terrain load path_to_textures/terrain_for_region4.png
Step 10. Restart your OpenSimulator instance and fine tune your terrain height.
You should see your glorious new terrains appear on your regions when you restart the simulator, but it's likely that the terrains are too tall or too flat. You need to add a terrain multiplier factor to each region, to compensate. This looks like so:
change-region Region1 terrain load path_to_textures/terrain_for_region1.png terrain multiply 0.45 change-region Region2 terrain load path_to_textures/terrain_for_region2.png terrain multiply 0.45 change-region Region3 terrain load path_to_textures/terrain_for_region3.png terrain multiply 0.45 change-region Region4 terrain load path_to_textures/terrain_for_region4.png terrain multiply 0.45
The actual multiplication factor will differ from case to case, so you need to experiment with the factor-value till you get the height you want.
That's it. Go forth and multiply!