A horizon space is a space that lives in the horizon -or background- of a space. Horizons are used to create dynamic sky-boxes comprised of stuff that lives in the distance. For instance, you can place a cube-map into a horizon to surround the viewer inside a 360 image. Another use would be to place large sound sources inside a horizon space to immerse the viewer in sounds that stay regardless of the viewer's position.
Let's take a look at the default space that is created when you first enter Simmetri or go to File/New. The default TerrainSpace created (the foreground space) has as its horizon space a SkySpace (the background space). We can see this by viewing the root properties of the TerrainSpace.
In this case, a SkySpace is a simple space comprised of a simulated sky whose properties we can alter to create sunsets and other time of day effects. Along with defining the horizon of the space, you can also set its distance scale. The 'Distance Scale' property let's us set how the scale of the horizon is defined in the context of the foreground space. For instance, 1 unit in a horizon space rendered at a distance scale of 1000 would be = 1000 units of the foreground space. In other words, if we placed a sphere with a radius of 1 into a horizon space and rendered it with distance scale set to 1000, it would appear on the horizon from the foreground space as if it had a radius of 1000. The sphere would also parallax shift accordingly as the camera is moved.
Since horizon spaces are just spaces, they too can have horizon spaces. This nesting of spaces allows us to define various background layers. We can see an example of this when we use the 'Horizons / Pyramids' tool from the toolbox. It creates a view that looks something like this:
In this case, the foreground space is a TerrainSpace, whose horizon space is an OpenSpace, that contain the pyramids objects. Finally, the OpenSpace's horizon space is a SkySpace that renders the sunset. Since the 'Inherit Atmosphere' property is set to true for both the TerrainSpace and OpenSpace, the SkySpace's atmosphere (which includes lighting and haze effects) is passed through to the foreground space.
Editing Horizon Spaces
Let's look at how to edit horizon spaces. For this example, we will edit the default sky space of a TerrainSpace.
- First, create a new Empty Planet Surface (File/New/Empty Planet Surface)
- Next, click the sky to select it. You should see the property panel's title update to "property panel - [SkySpace]"
- Ensure the property panel is undocked.
- Click the arrow button located next to SkySpace on the left side of the property editor:
- Next, click Edit Contents from the menu that appears:
- You should now be inside the SkySpace.
If you look under the ViewPort panel, you'll see that a new ViewPort has been created. From now on, you can select its viewport there to switch between it and the main space.
This space operates at a different scale as defined by the Distance Scale property (see above). Therefore, every unit in this horizon space is proportional to the Distance Scale. So for example, given a Distance Scale of 1000, an object placed at an x position of 1 in the horizon space will behave as if it's placed at an x position 1000 when viewed through the TerrainSpace. This also applies to object sizes and scales too. A 1x1x1 cube will appear to be 1000x1000x1000 in the TerrainSpace. Also, the radii of sounds will be proportional as well. You could place a sound with an inner radius of 1 at the center point of the horizon space to create a global sound that can be heard up to 1000 units away in the TerrainSpace.
Intuitively speaking, you should treat the horizon space's center point (x=0,y=0,z=0) as the viewer's location in the main TerrainSpace and build around this point.
- When you are done editing the horizon space, click on the TerrainSpace ViewPort from the viewport panel to switch back to the TerrainSpace and see the horizon from the local perspective.
- You can select the horizon space and display its properties by clicking on the sky. If you click the ground, you will instead select the foreground space.