RenderableGlobe
Inherits Renderable
Used for rendering planets, moons, and other ellipsoidal bodies with tiled surface data. It renders a globe as an ellipsoid whose appearance is assembled dynamically from one or more layer stacks, such as color imagery, elevation data, night textures, overlays, and water masks.
The class is designed for large planetary datasets that cannot be drawn as a single static mesh or texture. Instead, it divides the globe into chunks and continuously adjusts the visible level of detail based on camera position, projected screen coverage, and available tile data. This allows close-up surface exploration while still supporting full-planet views in the same renderable.
RenderableGlobe supports both shape and surface variation. The base body is defined as an ellipsoid, while height layers can displace the rendered surface to represent terrain. When elevation data is available, the globe can also use more accurate normals for improved lighting and shading across detailed topography.
A major responsibility of the class is coordinating tiled layer rendering. It manages multiple layer groups. This makes it possible to combine imagery, topography, and auxiliary visual layers into a single coherent planetary surface.
RenderableGlobe also integrates planetary lighting and shadowing features. It supports standard directional illumination, optional higher-quality surface shading, eclipse-based shadows from other bodies, and shadow mapping for more advanced shadow interactions. If the globe has rings or related shadow components, those systems are incorporated into the rendering pipeline as well.
Beyond the base surface, the class can host globe-specific secondary content such as labels and GeoJSON-based overlays. These allow annotations and vector-based geographic content to appear correctly on or around the planetary body.
Members
Name |
Documentation |
Type |
Description |
Optional |
|---|---|---|---|---|
|
The intensity factor for the ambient light used for light shading. |
|
Value of type ‘Double’ |
Yes |
|
Decides if the object should be dimmed (i.e. faded out) when the camera is in the sunny part of an atmosphere. |
|
Value of type ‘Boolean’ |
Yes |
|
Determines whether this object will be visible or not. |
|
Value of type ‘Boolean’ |
Yes |
|
Specifies information about planetary labels that can be rendered on the object’s surface. |
|
Yes |
|
|
A list of layers that should be added to the globe. |
|
Yes |
|
|
The identifier of a scene graph node that should be used as the source of illumination for the globe. If not specified, the solar system’s Sun is used. |
|
Value of type ‘String’ |
Yes |
|
The tile level that is used as the cut off between rendering tiles using the globe model rendering vs the flat in-game rendering method. The value is a trade-off between not having precision errors in the rendering and representing a tile as flat or curved. |
|
Greater than: 0 |
Yes |
|
This value determines the opacity of this renderable. A value of 0 means completely transparent. |
|
In range: ( 0, 1) |
Yes |
|
The roughness factor that is used for the Oren-Nayar lighting mode. |
|
Value of type ‘Double’ |
Yes |
|
Specifies whether the planet should be shaded by the primary light source or not. If disabled, all parts of the planet are illuminated. Note that if the globe has a corresponding atmosphere, there is a separate setting to control the shadowing induced by the atmosphere. |
|
Value of type ‘Boolean’ |
Yes |
|
The radii for this planet. If only one value is given, all three radii are set to that value. |
|
Value of type ‘Vector3 |
Yes |
|
Tells the rendering engine not to perform distance based performance culling for this globe. Turning this property on will let the globe to be seen at far away distances when normally it would be hidden. |
|
Value of type ‘Boolean’ |
Yes |
|
A value that specifies if the renderable should be rendered in the Background, Opaque, Pre-/PostDeferredTransparency, Overlay, or Sticker rendering step. |
|
In list { Background, Opaque, PreDeferredTransparent, Overlay, PostDeferredTransparent, Sticker } |
Yes |
|
Details about the rings of the globe, if it has any. |
|
Yes |
|
|
Information about any object that might cause shadows to appear on the globe. |
|
Yes |
|
|
|
Yes |
||
|
A single tag or a list of tags that this renderable will respond to when setting properties. |
|
Value of type ‘Table’, or Value of type ‘String’ |
Yes |
|
Determines the targeted level-of-detail of the tiles for this globe. A higher value means that the tiles rendered are a higher resolution for the same distance of the camera to the planet. |
|
Value of type ‘Double’ |
Yes |
|
The type of the renderable. |
|
Value of type ‘String’ |
Yes |
|
Determines whether higher-accuracy normals should be used in the rendering. These normals are calculated based on the height field information and are thus only available if the planet has a height map layer. |
|
Value of type ‘Boolean’ |
Yes |
Inherited members from Renderable
Name |
Documentation |
Type |
Description |
Optional |
|---|---|---|---|---|
|
Decides if the object should be dimmed (i.e. faded out) when the camera is in the sunny part of an atmosphere. |
|
Value of type ‘Boolean’ |
Yes |
|
Determines whether this object will be visible or not. |
|
Value of type ‘Boolean’ |
Yes |
|
This value determines the opacity of this renderable. A value of 0 means completely transparent. |
|
In range: ( 0, 1) |
Yes |
|
A value that specifies if the renderable should be rendered in the Background, Opaque, Pre-/PostDeferredTransparency, Overlay, or Sticker rendering step. |
|
In list { Background, Opaque, PreDeferredTransparent, Overlay, PostDeferredTransparent, Sticker } |
Yes |
|
A single tag or a list of tags that this renderable will respond to when setting properties. |
|
Value of type ‘Table’, or Value of type ‘String’ |
Yes |
|
The type of the renderable. |
|
Value of type ‘String’ |
Yes |
Table parameters for Layers
A list of layers that should be added to the globe.
Optional: Yes
Name |
Documentation |
Type |
Description |
Optional |
|---|---|---|---|---|
|
|
No |
Table parameters for *
Optional: No
Name |
Documentation |
Type |
Description |
Optional |
|---|---|---|---|---|
|
|
Yes |
Table parameters for ShadowGroup
Information about any object that might cause shadows to appear on the globe.
Optional: Yes
Name |
Documentation |
Type |
Description |
Optional |
|---|---|---|---|---|
|
A list of potential shadow casters. |
|
No |
|
|
A list of objects (light sources) that may cause shadows from the provided list of shadow casting objects. |
|
No |
Table parameters for Casters
A list of potential shadow casters.
Optional: No
Name |
Documentation |
Type |
Description |
Optional |
|---|---|---|---|---|
|
|
Yes |
Table parameters for *
Optional: Yes
Name |
Documentation |
Type |
Description |
Optional |
|---|---|---|---|---|
|
|
Value of type ‘String’ |
No |
|
|
|
Value of type ‘Double’ |
No |
Table parameters for Sources
A list of objects (light sources) that may cause shadows from the provided list of shadow casting objects.
Optional: No
Name |
Documentation |
Type |
Description |
Optional |
|---|---|---|---|---|
|
|
Yes |
Table parameters for *
Optional: Yes
Name |
Documentation |
Type |
Description |
Optional |
|---|---|---|---|---|
|
|
Value of type ‘String’ |
No |
|
|
|
Value of type ‘Double’ |
No |
Asset Examples
1-- Basic
2-- This asset creates a translation that places coordinate axes on the surface of a
3-- planetary body. Note that this examples only the position of the coordinate axes, but
4-- leaves the orientation unchanged, causing their rotation to be inherited from the
5-- parent node.
6
7-- The example needs a `RenderableGlobe` as a parent to function
8local Globe = {
9 Identifier = "GlobeTranslation_Example_Globe",
10 Renderable = {
11 Type = "RenderableGlobe"
12 },
13 GUI = {
14 Name = "GlobeTranslation - Basic (Globe)",
15 Path = "/Examples"
16 }
17}
18
19local Node = {
20 Identifier = "GlobeTranslation_Example",
21 Parent = "GlobeTranslation_Example_Globe",
22 Transform = {
23 Translation = {
24 Type = "GlobeTranslation",
25 Globe = "GlobeTranslation_Example_Globe",
26 Latitude = 20.0,
27 Longitude = -45.0
28 }
29 },
30 Renderable = {
31 Type = "RenderableCartesianAxes"
32 },
33 GUI = {
34 Name = "GlobeTranslation - Basic",
35 Path = "/Examples"
36 }
37}
38
39
40asset.onInitialize(function()
41 openspace.addSceneGraphNode(Globe)
42 openspace.addSceneGraphNode(Node)
43end)
44
45asset.onDeinitialize(function()
46 openspace.removeSceneGraphNode(Node)
47 openspace.removeSceneGraphNode(Globe)
48end)