A little background information about Sahrani
Sahrani is a fictional terrain, there is no place with Sahrani's landscape layout, therefore it was necessary to make all the textures from scratch and paint them by hand. If real terrain/aerial images + proper matching DEM's are used as reference then this method could be skipped.
On the fly
There was some limits while building Sahrani; the map was under constant development and many changes occurring frequently. It happened in both objects layout (road network, cities, vegetation) and terrain (peaks, coastline etc.). It was important to keep many project elements in editable form, and to have the possibility to easily update basic layers of source PSD for both satellite texture and surface mask. It sometimes lead to work with massive PSB file of 8 GB…
The first and initial information for satellite texture design is the intent of map designer. It is always good to know what style of landscape you're after, what locations you want to create, what do you plan to use as reference and how good your references are going to be. These decisions influence not just how the map will look like, but also how many surfaces you will need. This is the simplified version of plan for Sahrani:
Most useful source of graphics and reference information are websites containing satellite or aerial imagery:
Grid representation of landscape
This is the setting for number of terrain cells. In case of Sahrani, it is 2048×2048 cells. In old style OFP maps, they have a size 256×256 elevations cells.
Terrain cell size
This is the distance between elevation vertices. For Sahrani, it is 10×10 meters, for OFP maps, it is 50×50 meters.
Sahrani has cell size 10m and grid size 2048×2048 cells, the resulting map has a size of 20480×20480 meters. Since resolutions of texture and mask was 1px/1m, the bitmap for Sahrani was 20480'x20480 pixels.
Satellite texture grid
Resolution of satellite texture for Sahrani was 1m/px. It is necessary to edit most features on both texture and surface mask with maximum precision, therefore it is necessary to have reliable reference on your Visitor project. An excellent way of getting the knowledge of objects layout in project is to export kinda “print” of the whole project's area.
Prior to exporting the image, it is good to set proper visualization of objects in Visitor to achieve useful information:
When selecting forest surface based on vegetation, for artificial shadows of trees or painting of roads, you can use symbolic of objects in Visitor to your advantage. For better selection of objects in Photoshop, it is useful to have same color for object border and body:
Size of “blue edge” (TM) is the size of one elevation cell in pixels of satellite texture:
[size of sat. texture's row or column]/[number of cells in row or column]
There is no way of opening a completed EMF file as big of size as Sahrani. A custom tool was then created for converting EMF to PNG. In the Visitor folder, there is tiny executable named EmfToPng.exe, this tool will do the converting to EMF for you.
Magnification function(increases row/column size 2,5x):
Pre-processing of printout for satellite texture
Exported PNG won't have the correct size and would not match when pasted to into your satellite map image. You need to cut the “blue edge” from left and bottom edge of image. Once you remove the blue edge, you should end with image of correct size, where imagery of all landscape elements should match with content of project.
Satellite texture of Sahrani has size 20480×20480 px, which can be sometimes hard to process or work with. The original method of separately editing of smaller parts did not work well especially when global tweaks needed to be synchronized. Most common windows applications can only handle files of maximum size of 2.5 GB, which is very easy to exceed in the case of Sahrani. Therefore it is necessary to use a format capable of handling the size over 2.5 GB, such as the Photoshop PSB format. PhotoShop can use this format since CS (8.0) release and has no size restriction. You may need to allow its use in PS:
Scratch disks and memory
It is not a big problem to work with files of size exceeding ~4.5 GB. On PC with P4 processor with 1GB DDR RAM, work was pretty fluent. The most time-consuming part of working with such a large texture is saving, exporting and application of filter on the whole raster. It is useful to have some RAM reserves and use additional disk space as scratch disks for these operations. To help with the performance allow PhotoShop to swap on 2 physical drives:
Deciding of number and types of surfaces used in mask is not easy process, especially if you handle diverse environments and/or want to have greater number of surfaces. There are several factors limiting the use of detailed surfaces; they originate in map size, terrain grid size and satellite texture grid (how the big mask is cut to squares).
Note: Only 4 surface types per square!
It is possible to have maximum of 4 surface types on single square of satellite mask, including the area which overlaps with neighbor squares. Square size for Sahrani is 512×512 px, which means that on quarter of 1 square kilometer, you are allowed to have maximum of four detailed surface types (e.g. grass, rock, sand, mud). Therefore it is of utmost importance to decide what basic surfaces to use to be able to sufficiently represent all the landscape features. It is wise to limit the design decision to as little surfaces as possible, it's always good to have reserve space for an additional surface on a square if such need arises.
Sahrani map consists of these basic surface types:
In the transition of southern and northern part (Corazol), there are squares with simultaneous occurrence of both basic grass surfaces, which limited the use of further surface types. Only additional surfaces used were basic sand and urban texture; see images for further illustration of surfaces layout.
Representation of surfaces by mask
Colors representing materials in mask
Visitor during import of satellite texture and mask regenerates its own material definition for each square it cuts and processes. It lists the detail surfaces to be used, the position is defined in mask square. For optimization purposes, mask square contains only discrete values of 4 basic RGB colors:
This clearly show why there is surface number limit. However, composition of the surfaces on particular squares may differ. If mask should be edited as a whole, and not just as hundreds of small squares, there must be more than these 4 basic RGB shades present on the map as representation of all the surfaces. Therefore to be continued…
Each material has its own RGB values, which are used in big mask. These RGB values must be set for every surface type in Layers.cfg, which is required for importing satellite texture and mask in Visitor.
Overlapping of mask squares
Import of source data to Visitor
As was mentioned above, Visitor cuts big input raster to small squares according to project settings. In case of Sahrani, squares are 512×512 px, same value is suggested for remake of OFP maps. The squares must overlap on the edges to avoid artifacts caused by texture filtering. This leads to sharing 16-pixel border on the edges. It is important to watch the extent and number of surfaces in squares, especially where there are more surfaces combined on area of few squares. You will need to keep the extent of surfaces, which are not present on both adjacent squares, outside the shared borders in order to avoid strange interpretation of mask during square generation and subsequent visual issues in the game.