Geoscope Tilesets
Geoscope tilesets provide a way to display images on the surface of some planets and moons. In this article, we will go over the basics of tilesets and how to create them. KnowledgebaseTileset.zip contains an example custom tileset that depicts the continents. Tilesets can be used to render high-resolution images on Geoscope enabled objects. These tilesets work by dividing the image into different resolution levels and different tiles by row and column within each level.
Each custom tileset is contained within a folder in the Geoscope tilesets folder in the Uniview user folder. Inside this folder, there is a configuration file. This file sets all of the settings for the tile set and all of the images for the tileset. The settings included in the configuration file are as follows:
TextureLevels
sets the number of levels of resolution for the tileset. The simplest tilesets will only have one level of resolution. Each of the levels should have twice as many rows and twice as many columns as the previous layer. This means that each layer has four times as many tiles as the previous layer.NrRows
andNrColumns
sets the numbers of rows and columns of textures for the tileset. The rows are regions of different latitude and the columns are regions of different longitudes. These numbers are provided for the lowest resolution level, i.e. resolution level 0.Bbox
sets the region of the planet or moon's surface that is covered by the tileset. The order is the minimum longitude, minimum latitude, maximum longitude and maximum latitude using decimal degrees where south latitude and west longitudes are represented by negative numbers. For a full plane image the line would look likeBbox= -180.0 -90.0 180.0 90.0
DatasetTile
gives the name of the tile set that appears in the Geoscope tree.Tessellation
sets the tessellation level of the spherical model that is used for the tileset. A higher value improves the appearance of the tileset model but can adversely affect performance. A value of 15 is a good starting pointing.TextureCacheLocation
specifies the folder that contains all of the textures that compose the tileset. This is a subfolder of the folder for the tileset.TextureFormat
sets the image extension that is used for the textures in the tileset.TextureSize
is the resolution of an individual tile texture in the tileset. Due to the way that Uniview processes tilesets, all of the textures (excluding the global texture) should be square textures. This means that only one number is provided as the resolution of the texture in the tileset. ATextureSize
of 512 is a reasonable value.
The textures in the TextureCacheLocation
are organized as follows. In the root of the TextureCacheLocation
there must be an image with the file name of global
and with the previously specified file extension. This image is an image that spans the entirety of the tileset's bounding box. This image serves as a fallback for the tileset. In the root directory, there are also folders named 0
, 1
, 2
, etc. These folders correspond to the different texture detail levels. They are 0 indexed with layer 0 being the lowest resolution layer. Inside the layer file there are more folders also named by number. These numbers correspond with the row of the tile in the tileset. The lowest row indices are the southern most tiles, and again the indices starts with 0. Inside these files are the tile images. These images are named by the row index with the appropriate extension. These images are square due to the way tilesets are processed in Uniview. This means that tile paths relative to the TextureCacheLocation
take the form {level index}/{row index}/{column index}.{extension}.
The simplest tileset only needs to include one tile. In this case the tile is located 0/0/0.png, or with another image format extension. In this case, TextureLevels
, NrRows
, and NrColumns
should all be set to 1. However, a global image file is still required, even if the tileset only contains one file.
Adding Heightmaps in 3.0
Uniview 3 supports adding an optional heightmap to tilesets. These options are used to configure the heightmap that is attached to a tileset, and should be included in the tileset configuration file:
HeightmapCacheLocation
is the heightmap equivalent ofTextureCacheLocation
, it specifies the folder that contains all of the data that compose the heightmap.HeightmapFormat
sets the image extension that is used for the textures in the tileset. See below for more details on the image format.NrHeightmapLevels
is equivalent toTextureLevels
, but for heightmaps.
The heightmap tiles themselves must currently be 16-bit, signed, big-endian image files. The data in the images should be normalized such that a value of 0 represents no displacement relative to the planet's reference ellipsoid (as specified in the planet geometry xml file). Positive and negative and values represent positive and negative displacements from the reference ellipsoid on a linear scale. When you add a tileset with a heightmap attached in the Geoscope Tool, you will be asked to add a height value in meters. The values stored in your heightmap images are normalized into the range (-1,1) and then multiplied by this value to get a physical displacement value for each pixel in your tileset.
The file structure for tiled heightmaps is the same as for the image tiles in a layer, just located in the HeightmapCacheLocation
instead of in theTextureCacheLocation
.
Servicio de atención al cliente por UserEcho
I love this article and I'm using it to create my own Tilesets for various planets. I wonder if anyone knows of a tool or plugin that would automate making the detail levels? I'm making two level tilesets. I've created some Photoshop actions to Automate part of creating the details but I'm thinking there must be something else out there.