Making Skyboxes Directly in Unity
Here’s how you can create skybox assets directly in Unity.
All the tutorials I could find were actually for creating skyboxes in Blender and importing them to Unity. They all follow the same rough procedure — use the blender vertex painting tools to paint on a sphere, then reflect that skybox onto a cube, and then unwrap the cube into a texture. I’m bad at Blender (but learning!), and so I was looking for another way to do the same thing.
I figured out that in a few steps, you could do something similar directly in Unity:
- First, you make a new blank scene where you will compose your skybox. The camera “background” should be the background / default color of your skybox. Since my skybox is stars in space, my background was black.
- Then you place objects in your scene that you want to bake into your skybox — in my case, this was bright spheres that served as stars. In your case, you could have mesh clouds or even particle systems. Since I needed to place a lot of “stars”, I made a script to place them procedurally. You could place objects by hand. Billboards are great for this. Since this scene will be reduced to a still image, billboard effects are not noticeable. In my case, I also included a few “nebula” billboards.
- Once your scene is composed the way you want, you attach this script to your camera:
Run the scene. When you hit a key, the script will capture a cubemap from the camera’s perspective and save it as a cubemap texture asset. You can then use the Skybox > Cubemap shader to create a skybox usable in your main scene.
I like this approach for a couple of reasons. You can re-use familiar 3D assets to create a more cohesive look between skybox and scene. It plays well with procedural generators. You could even tweak this approach to do procedural skyboxes at load time.
Hope it helps.