Download

Physical Sky - Weather System (Prototype)

###NEW THREAD###](https://forums.unrealengine.com/showthread.php?107786)

Hello everyone!

So I have been watching all you guys do some really amazing stuff that inspired me to do some things myself.
One of which I want to show you here in my first post.
I think I finally made something that might be good enough to post it here.

I call it Physical Sky and it is part of my bachelor thesis.
Everything except the grass (thank you KiteDemo) and the interface design (by a friend of mine) is made by myself within 3 months of doing research, learning everything and building it.

I hope you can give me some feedback so I can incorporate it when I rebuild the complete system from the ground up.

Future plans include:

  • AI to control the weather based on location, date and time input.
  • way better vfx (rain, snow, clouds etc.)
  • make it a plugin eventually and release it so you can use it

I will post some breakdowns once I’ve finished writing my thesis.
In case there are any questions I am more than happy to answer them.

https://youtube.com/watch?v=Jr2oEbOqv9U

http://i.imgur.com/bB3e7Ha.jpg

http://i.imgur.com/eT3qL3F.jpg

http://i.imgur.com/YvI4ysV.jpg

http://i.imgur.com/z2gXXoU.jpg

This is Radass!

Thank you very much!

This looks amazing, and I am extremely impressed with the snow, how it builds up around the ball, and how it melts. Very impressive!

Glad you like it. I made this snow build up around objects while tinkering with distant fields.

Is there something you guys want to see a breakdown or explanation for? Otherwise I will just do what I think might be interesting.

This is really impressive! I’ll keep a close eye on this. Keep it up!

@Notminor As I said in the YouTube video comments section:

Adding to that,
It would be pretty amazing if you could hook that up to real world weather data to have for use in open-world MP type game world similar to say Day-Z, Miscreated, etc that run their day/night cycles based off the servers time, as I could see such an integration adding a whole new level of immersion into a game world such as those mentioned above where not only the time is in-sync with your location but so is the weather (roughly) :cool:

This something I would love to do. But this adds a whole new level to the system and before I try to build an AI and integrate real world weather data, the basics need to be perfect.

Very impressive.

Different types/heights of the clouds would add to the already fantastic level of realism.

Thank you.
This is something that is possible right now but it will need a bit more work to look right. I will keep you posted on this.

Great stuff Notminor!

You look to have covered the core stuff well, due to the fast speed of things its a bit difficult to tell some aspects and possible improvements, I was going to suggest handling the constellations and moon as well as the sun based on lat/long but I noticed constellations in the list at one point I just don’t think you touched on it, or showed a night sky, possibly because you haven’t had time to work on that yet.

What are you thoughts for the AI weather? Would it be driving primary global motivators which would then be driving local/regional weather values? While having the weather being fed by real time data is a great way to lessen the complexity of the global forces driving local patterns it does limit the ability for events taken place in a world to provide feedback into the global system AI. It also becomes less relevant or useful if you no longer want to represent current earth or its conditions. One approach might be to use current weather data as seeds for driving the AI/unique weather events, that way there is still structure and continuity but the result doesn’t mirror the real world patterns directly and you can still override the results with specific events like a volcano eruption, forest fires, or grand magic! I think your choice of doing the AI for global systems first and hooking in weather data later is the right way to approach it. Best of both worlds that way.

One other thing to note, it looked like the snow was forming and melting around the 15 degree Celsius mark, that’s a bit too warm for that and you wouldn’t see that happening unless there is a severe northerly from the arctic blowing in a cold front, you will generally be closer to the 0 degree mark for snow to be falling, and your accumulation will be based on a number of other factors like ground temperature (melts fast in fall before permafrost sets in, slow in spring etc), sunlight will have a varying effect on thawing rates based on angle but that might be too much to try to factor in there, but perhaps factoring in the relative cloudiness/sunlight the ground is receiving could be a workable factor in the process. Generally though the mass accumulations that occur as you have shown them around wind breaking objects and undulations in the terrain and these will retain themselves longer then lighter amounts of snow in open areas which it actually looked like they were doing at the end of the video, which made it quite realistic looking to this Canadian, well done!

The last suggestion I would make in regards to the snow is its ability and variety to reflect sunlight to the point where it can sometimes even be blindingly bright, it appeared a bit too dull and while it worked for the cloudy days it seemed off for any weather other then full clouds. On a clear sunny day in the winter it can be vary apparent depending on the formation or snow, whether hard wind-packed or soft freshly fallen etc. But generally it all shines in the light to some degree.

That’s about all I can think of right now, except to say I am blown away by how much you’ve covered and how well it looks! Keep up the great work I’ll be very interested in seeing this released.

Thank you very much for your awesome feedback Demarii!

Hopefully answering your questions:

I will do a more indepth video that is not speed up soon.

As for the night sky and moon:
I tried using a scientific calculation with all its error corrections but that is not possible using blueprints because the algorithms need double precision and float is just not enough.
So I had a look into the ocean and weather community project and decided to use the same simplified version they did for their moon.
The night sky is a 360° image from nasa and is rotating as well. But not with the precision I would like it to have.

(I should have made the images a little bit brighter I know, sorry!)

These are some very great ideas! I will definitly consider them when it’s time to do the AI.
As of now I haven’t thought about the AI in detail but the one thing I will ensure you is: In case the user wants 100% control he shall get it.
So there will be an AI that can drive the weather and everything else but you will be able to turn that off at any time.

Right now the user has 100% control over every parameter that is in the system.

This is the reason it shows 15°C while it’s snowing.

The transition to snow is currently set up in a way that it starts to snow before the temperature reaches minus degrees. With a little bit of work on the parameters this issue can be fixed.
There is right now no interaction between for example temperature and snow or rain and snow. These are things that will be done with the AI but if you choose you will be able to do them yourself.
I have ideas for the accumulation areas of the snow but I don’t have the time right now to research them. For example to get the mean sun direction of the day and let the snow melt slower in the shadows.

I had the exact same idea but not the time to do something beautiful. It looks like this right now:

Small update ->

I made a video to show how a new paramter can be added in the prototype. I think there needs to be a better way since it takes way too much time.

I am planning to make it as simple as calling “AddParameter” once or clicking a button in an interface of some kind.
The current method is based entirely on Material Paramter Collections which is not great but it was easy to do in order to get it working.

And yes it is a bit buggy right now but it’s a prototype you know.

https://youtube.com/watch?v=DPPkBwahHAM

What other parameters would you like to use besides Float and LinearColor(can be used for vectors - they will be seperate in the future) ?

EDIT: And working on the second version of the snow right now:

http://i.imgur.com/Q7XRQqb.jpg

Very nice work any idea how your going to release this and when thanks?

Looks really promising this! I’m definitely interested in buying it once you release. The most important thing for our project is being able to have it act and look as realistic as possible.

Obviously it looks epic, perhaps some question though. How is snow buildup handled? Is this actual mesh being added on, or are you using some sort of POM material? Also what is the performance cost on this thing in terms of ms or FPS.If performance cost is cheat i would buy that any time if you sold it.

Thank you all!

I plan to release two versions. One without AI (maybe some basic dependencies will be included) that will obviously be available earlier.
And one with AI and real world weather data.

As to where and when: I aim to finish the version without AI until the end of summer as a full featured plugin. And hopefully it will be on the UE4 Marketplace.

My goal is to have a solid system that works for every kind of product and art style. It will be at least as realistic as it is now when it’s beeing released. If thats not enough for you the system will have many ways for you to further improve on that.

The snow buildup in the video is entirely made with vertex displacement on the landscape. I started it with tesselation but that was way too performance heavy (around 30fps drop).
By using regular vertex position offset I noticed a drop of max 5fps.

To find there areas where to buildup the snow I used the distance field in the landscape material (the landscape has no distance field representation to not necessary to exclude that).
This method is 100% realtime so if you move the sphere the buildup would move with it. In Snow V2 you will be able to edit that buildup with extra vertex paint or landscape blend layers.

The thing that has the heaviest impact on performance are the clouds. They produce super heavy overdraw and I’ve found no way to say: stop when alpha has reached 1.
So depending on whether you look directly at them or not the cost ranges from 30fps to 50fps. I will not try to find out the exact costs in ms as they are so high that it does’nt make sense.

Regarding the performance: Nothing is optimized (thats the reason I am doing a full rebuild).
I just made it so it will run decent on my system for now. Decent meaning at least 40fps on a dev build in fullscreen.

For reference purposes:
i7 4790k @ 4GHz
32GB DDR3 RAM
GTX 980 4GB

Wow, this is beautiful. Nice job.

Are the cloud shapes dynamic or are you feeding it some pre-made maps?

Can you give me some tips on that glitter you’re getting on your snow? Absolutely beautiful.

Are you doing this in blueprints?

The shape of the clouds is entirely done inside of the cloud material with a single noise node.

The snow glitter is far from being final. What you see in this screenshot was done in roughly 10min to have at least something.
I will not go into detail how I did it in this version. I will do that when Snow V2 is finished.
In case you want to recreate exactly what I have done here a screenshot of the glitter part of the material.
The MF_LinearMaskSizeSmooth material functions just increase or decrease the white part of a greyscale mask.

And yes everything in the prototype is done with blueprints.
I’ve just started to learn UE4 C++ to move almost everything to C++ to increase the performance and refine the architecture of the system.

As long as you give the user all those settings which you have in that widgets available in a C++ plugin i think it will be fine, similar to how TruSky does it but TruSky is way to overprice for indie devs, It would be nice to select difference settings/modes as i plan to use it on a survival game I’m working on so not every think offered will be needed, looking forwards to testing it out :).