How to create simple space skybox?

Hey ,

There’s some useful information on cubemap system in UE4 you can look at here:

You can also take a look at BP_Sky_Sphere seen in Default level (File > New Level > Default) to take a look at an implemented example.

Hope that helps!

I want to create skybox without atmosphere, with only stars everywhere. I create a .dds cubemaps, a .hdr images, but how can I use any of them to get a simple space skybox? I still didnt find any descriptive info about skybox customization. No guides, nor tutorials.

Take a space image you like, cube map it, open UE4, open your project. in content browser import image to what folder you want. Right click it in content browser drop down will have a MAKE MATERIAL select that it will them create a mat for you. make a GIANT sphere for your mat attach it and you have a sky dome.
there are good you tubes on it.

Oh, nice. I’ll give it a try. Many thanks.

searching BP_Sky_Sphere in my content browser doesn’t bring anything up am i supposed to look for it somewhere else?

Nevermind I found it, it’s names BP_Sky_Shere for me for some reason

I’m also trying to create a stars skydome and I’ve found some problems to make it work way I want. I will try to describe process I followed best I can so others won’t waste precious time trying to figure out what’s wrong with their space skydome. Instead of modifying default Skybox I wanted to create my own from scratch. It may sound a bit lame, but that way I force myself to learn how things work in UE4.

First we need to create our cubemap texture, so go [here][1] where you can find a step by step process for how to create cubemaps for Unreal Engine 4 and [here][2] for an awesome application to create space skyboxes.

Before continuing we need to know what exactly is skydome we are going to create, which is basically a really HUGE spehere enveloping our scene. We start creating a new Blueprint and in Blueprint’s components we add a Scene component as Root and a Static Mesh component as child of Scene Component just like this.

We need a sphere for Static Mesh component. I used one called SM_SkySphere located in /Engine/EngineSky. By default the Engine folder is hidden but can be revealed by an option in context menu of Content Browser. There are other spheres in the /Engine folder bur this one is a blank one without clouds nor scripts. As said before we need skydome to be a huge sphere so set scale of sphere to (400, 400, 400) and make it static (usually sky don’t move, right?). category is optional and I created BP_Skydome just for organization purposes.

Before moving forward we need to change one small setting so we can actually see something inside our skydome, and that’s switch Cast Shadows off in Static Mesh component properties. Why? Because if we add a Directional Light to our scene (and we’ll likely do to represent sun’s light) light from Directional Light won’t lit objects inside our skydome because our spehere is projecting a shadow on them. Also we want to change collision type to “NoCollisions” since we don’t need to check when something collides with our skydome.

Now we need to assign material that will be displayed in Skydome. Go to Graph section of Blueprint and in Construction function create a node to set material of Static Mesh. Create a public variable of Material type (you can make variables public with eye icon next to them). Through this variable we will set material used in sphere, so next step is to assign whatever material we have in this variable to spehere. Create a Set Material node and set sphere as target (in my case I named Static Mesh component as Skydome and material variable as Sky Material) and material as material.

Now whatever material we assign to material variable will be applied to sphere’s material. It’s time to create material. Import your DDS Cubemap Texture created following the [steps in Unreal documentation][6]. In Content Browser right click on it and select Create Material. Edit material so it looks like this:

node is a TextureSampleParameterCube with texture we created assigned. Why do we send data to emissive channel? Because our skydome won’t be lit by lightning of scene so it will have to lit him himself. In fact, we need to tweak some properties in material properties. Select material (big node with all channels on right) and change following properties like in image.

If we let material to be lit by lighting system, when we add directional light we will only see part of skydome which is lit by lightning and other one will be hidden in shadows. other option es very important because we are inside mesh, so we need material to be displayed in both sides, outside and inside so we can actually see it.

And that’s all. Maybe this is not best way to do this and there is more accurate or efficient ways to achieve effect, but this works in a way that makes sense for me. I’m just starting with Unreal Engine 4 and sure I’m missing a lot of options and systems, but I hope this helps any of you in some way :wink:

1 Like

Good heavens that took FOREVER to figure out - THANK YOU for a good step-by-step!

That was a great explanation.

Is there a reason to use spheres over cubes though? Spheres are of course more polys than cubes. It probably doesn’t matter as much nowadays, even on mobile, but a part of me wants to keep things as efficient as possible, and I’m not sure what benefits are.

Seems like your instructions work equally well for any mesh type.

Also, if you make material be unlit, then shouldn’t it make no difference whether you make texture emissive or just diffuse?

There is no Skydome in “Add Component” (New in Content Browser->Blueprint->Actor) in UE 4.5

You need to add a Static Mesh component from drop down list, and then see top image above, in details panel set the “Static Mesh” to SM_SkySphere (or whatever your sky sphere is named).

Hope that helps! :slight_smile:

You can’t make a texture emissive or diffuse, you can plug a texture to emissive or diffuse (Base Color in UE4) parameters of material.

If you set a material as unlit, you will only have Emissive and World Position Offset sockets available. I guess reasoning behind it is that if a material is not iluminated by light (Unlit), only way that it can seen is if it emits light, thus why Emissive is only available. Also, Base, Metallic and others are all used to calculate final result taking into account light received by object. If material is not affected by light (that’s meaning of unlit), they are useless.

Here you have a screenshot for completeness.

After trying to follow this instruction with 4.11.2 I found out that Spacescape doesn’t export cubemaps in a way that makes a seamless skybox in UE, even if there is “UNREAL” preset in cubemap export dialog. Here is how cubemap looks like after it’s saved to DDS from Spacescape:

Here is how should it be rotated to make it a functioning skybox texture in UE 4.11.2:

Hope it saves someone time.

I really appreciate your tutorial. Thanks for your time!

Instead of exporting for UNREAL, select OGRE3D. This configuration seems to jive with Unreal Engine, at least as of version 4.22

Thank you! still relevant after 7 years.