So many problems making a skybox

Hi all,

I’ve followed several tutorials online about how to create skyboxes, and so far I’m not having any luck, I’ve been at it for many hours.

I’ve got latlong format JPG images that look like this:

When I bring them into UE4 I notice that I cannot make a TextureSampleParameterCube out of it. My guess is that I can only do this with a dds file. So instead I tried making it into a standard TextureSample, but my skybox is “mirrored” As seen below:

So I’ve tried to figure out a way to “Unmirror this” but no luck.

Meanwhile I also tried making dds files to use. I’m using SpaceScape to export a single cube map dds file when I export skybox, but whenever I try and load it into UE4 I get a “Failed to import … Failed to create asset” error. Perhaps this is because I am on a Mac? I tried converting my JPG shown above into a dds using a file converter but I get the same “asset failed to load” error.

I’m really stuck and all I want to do is import my images into UE4. Can anyone please help?

No help there → Google ?
Video comments…

Thanks Luftbauch. I’ve definitely spent hours scouring all of those tutorials. Every link you sent me bears the “purple means visited” link color.

My specific question is why doesn’t my set up work? Will only a dds file work? If so, how come I can’t pull any test dds files into Blueprint? If not, how can I achieve what I’m looking for using the file type that I have?

Have you tried setting your material to two sided and putting it on a really big sphere with collision disabled? A sphere with a scale of 10000000.0 is indistinguishable from a skybox, and I don’t see the mirroring this way.


Thank you xnihil0zer0 for the suggestion. I did follow that technique and made a skybox class blueprint that looks like this:

Then I create a skybox Material as shown above. The tutorial I’m watching suggested bringing in a dds file,and then creating a material like this:

The process being to create a float3vector, connected to a ReflectionVectorWS node, followed by a TextureSampleParamaterCube, and eventually putting that all into the emissive color input of my SkyboxMaterial that I created.

This doesn’t work, and I get the error that “(TextureSampleParameterCube) ParamCube> requires TextureCube” which I take it to mean that the jpg I loaded in as a parametercube is not valid, and I need the proper .dds format. So with that, I get rid of all of those things and I just load in a TextureSample with my JPG as shown in the screenshot from my first post.

This gets a texture on the sphere, but it’s mirrored. The material does indeed have collision turned off and is two sided.

I scale the texture way up like you suggest but the problem is that I need the total image to wrap all the way down around the sphere. Instead what I am seeing is it is repeated once on the top hemisphere and once again on the lower hemisphere, so even scaling it gives me that distinct “horizon line” that I want to avoid.

As an alternative I also tried to load in all kinds of .dds files from well known programs like SpaceScape, but UE4 will not load and of these .dds files.

I just don’t know what do do here… I’ve been trying for days.

Are you sure you’re not overlooking the simplicity of what I was suggesting? Try this material:

On this sphere:

Get this:

You need to save your image as .hdr . I know that photoshop is capable to do this but gimp isn’t.

If you save it in this format you can use it in your skylight to fully utilize pbr lighting.

Ok xnihil0zer0, thank you! That worked for me. I’m not sure why my method didn’t work (I was following a tutorial):

  1. Create new Blueprint Class
  2. Add new component to that class (Static Mesh)
  3. In the details panel set Static Mesh to “SM_Skysphere”
  4. In the construction script, add the static mesh and the material to a “Set Material” node
  5. After this, the materials are set the same way.

Either way, thank you!

I’ve done some work to replace the image with a video, then set the video to only play when the game is run.

I’m very close to meeting my goal for this prototype. The only thing I need to do is disable player movement when the keyboard is pressed, and instead enable video playback while the keyboard is pressed to play and reverse the video. So:

  1. Unlink keypress to player movement
  2. Link Keypress to video playback instead

Any suggestions? Thanks again for all help! This is fun :slight_smile:

I have big fun with ue4 too. ^^
Here are tutorials for playing video, dunno how you want it. Google
You could disconnect every keypressevent inside your playerblueprint, dunno your player name.
You could setup a keypressevent for playing video inside your levelblueprint.
Should the skybox be the video?

Hi for some reason my skybox material wont work

Use a regular texture sampler with a texture object parameter for the tex input.

You’ll need to load a TextureCube asset into the texture object to get it to compile. There are built in ones that come with the engine, just search for HDRI.

1 Like