Atmosphere transition

So I saw a gif from the developers of Ro-verse where they made a skybox transition to make the sky look like if you were leaving a planet and going to space. I wanted to know how to do I could replicate this. I thought it was a cool project to take on.a4dcadf17393496d95402e9e9f6fc3aa_orig (1)

Hope you can help me!

9 Likes

It seems like they change transparency gradually when leaving atmosphere, so try add a space sky and set its transparency to 1, then make some invisible parts that on touched will change a number value on player that has a localscript to change sky.

1 Like

Better: do a script that checks height and depending on that change sky transparency

1 Like

@jcnruad900 Skies don’t have a Transparency property

What you can do is blend an image your original skybox with your space skybox in an image-editing program and change the transparency / opacity of your original skybox to change to the space skybox, or vice versa. Of course, this is very time consuming because you’ll be making a lot of frames and uploading them to roblox, and you’d have to repeat on all other 5 sides. You could find an online tool / resource for this, maybe…

I have another idea, which is basically making a cube on the client and change its position and size in accordance to the player’s position and the distance from the camera’s CFrame to the player’s position + an extra offset (maybe) respectively. You can blend the two images together with decals and change the opacity / transparency of the original sky image over time until it’s fully transparent on all surfaces or vice versa

3 Likes

You could use ViewportFrames to create a fake skybox by creating an inverted cube, applying the skybox faces as decals on each face, and positioning the viewport camera at the centre of the cube while preserving its rotation. Then, just set LightColour to 0, 0, 0 and AmbientColour to 255, 255, 255, then position that ViewportFrame behind everything in the world and make it the size of the entire screen. From there, you can manipulate the viewport’s transparency to fade that skybox in and out.

This is the same method which I use in my skybox plugin, and which EgoMoose uses in his portals tech demo.

6 Likes

I could see you being able to do this by constantly cframing a giant inverted sphere mesh (you can go negative with the SpecialMesh size property) to your root part or camera on the client and slowly changing the transparency of the part depending on the height of the player from the ground.

1 Like

What’s happening in the gif is quite simple. They have a light blue inverted sphere mesh, and a local script moves it to the same position as the camera every frame. Then as the character goes further up, the mesh is made more transparent.

1 Like

Thanks for the reply, I’ll try it out…

Would I just use a giant inverted sphere?

1 Like

If done correctly, I’d presume an inverted sphere that follows the player would work actually quite fine. Just make sure to disable shadows on it so that it doesn’t become the next slenderman :sweat_smile:

Honestly, you can probably have the giant sphere be blue then make the transparency 1 when going to a certain height and have the actual sky box be night/etc. Or just go simple and make on for space as well :+1:

Or if you really wanted to get special, make some gradient skyboxes with transitions :thinking:

Yes, that seems how they did that amazing effect.

Instead of using a giant Part shaped to “Ball”, make a tiny part (I recommend you to set its size to, e.g., 1, 1, 1 and its CanCollide to false). Then use a special mesh, with MeshType “Sphere”, and change its Scale to bigger numbers. Put some or all of the Scale components to their opposite to make it fit well with your place, e.g. -500, 500, -500. Use a scale (as well as a material) that reflects the Sun properly.
If you don’t like how it looks, you can always look for a higher poly sphere in the mesh library, or even upload your very own sphere mesh!

Then, use a LocalScript to gradually modify that part’s Transparency depending on the character’s height.

Please note that if you use this method, the atmosphere will not fade when a player approaches its extents in other directions (as when they walk across the base towards the edge of the planet).

If you prefer using different skybox textures, make sure to load all assets when players join, or it will look weird during transitions.

I Hope this Link can Help you.

I think the script should look like this:

local Lighting = game:GetService("Lighting")
local Player = game.Players.LocalPlayer --This is only in a LocalScript
local Character = Player.Character
local HRP = Character.HumanoidRootPart
local CurrentPosition = HRP.Position.Y    
local Tropopause = 15
local Stratopause = 50
local Mesopause = 80
local OutAtmo = 100

spawn(function()
    HRP:GetPropertyChangedSignal("Position"):Connect(function()
        if not CurrentPosition == HRP.Position.Y then
            CurrentPosition = HRP.Position.Y
        end
    end)
    
    if CurrentPosition >= Tropopause and CurrentPosition < Stratopause then
        print("You reached the Tropopause!")
        
    end

    if CurrentPosition >= Stratopause and CurrentPosition < Mesopause   then
        print("You reached the Stratopause!")
        
    end

    if CurrentPosition >= Mesopause and CurrentPosition < OutAtmo  then
        print("You reached the Mesopause!")
        
    end

    if CurrentPosition >= OutAtmo then
        print("You reached the OutAtmo! You are in the space!!!")
        
    end

end)

Its WIP (Work In Progress). Pls dont try to copy my Code.

2 Likes

I’m pretty sure that GIF is just an atmosphere instance inside of Lighting having its haze reduced as your altitude increases.

1 Like

I think its a tall sky box, which they injected something in it to change as you move upwards.

Wow, I totaly forgot this topic here. Ehm, wich person exactly made the GIF? I am asking this, because:

  1. The best way to know how someone made something is to asking the creator itself
  2. I self want to ask.

@Evercyan and @madattak here were almost entirely correct. We used a giant inverted sphere, and adjusted its transparency with the player’s elevation, however it is centered on the planet instead of following the character. For the transition effect, rather than color the mesh itself, we used a light blue colored fog - a feature that has the side effect of not applying its color to the exposed skybox, but any part or mesh between you and the skybox, regardless of transparency, gets fogged out. The skybox is our space skybox, full of stars and galaxies, and at night the transparency is dimmed as well, making the stars come out.

Now that atmospheres have released, they’re likely better for most applications you’ll need them for, however, RoVerse has actual spherical planets, and Atmospheres cant be rotated, so the fog solution will likely remain.

Thanks to whoever dropped by the RoVerse Community and asked me directly, I didn’t see this post when it came out. Always glad to help.

3 Likes

Thanks, this will help a lot! I only dont understand the “inverted sphere”

i think that by inverted sphere they mean that you can only see it from the inside

Ok but how can it help creating this effect? I want to make a tutorial about if possible so I need lots of information

Edit: nvm, I understand now what you mean and what @IdyllicDestroyer meant. Idyllic, may I make a tutorial about?

Go for it. I’d love to see people using more creative solutions.

1 Like