In this article, we’ll go through basic usage of the new Celestial Vault Plugin, with a focus on creating custom Stars Catalogs
https://dev.epicgames.com/community/learning/tutorials/9XyB/unreal-engine-creating-custom-constellations-for-the-celestial-vault-plugin
This is golden for me, except for one thing. I want to set it up for the sky on the moon.
To do that accurately has wrinkles. It isn’t just that you need to skin the moon with a texture of the Earth - which would be doable, it seems. The moon is tidally locked to the Earth, and so the Earth will always be near the same point in the sky of the moon. Also, it’s 4x the diameter. Also, no atmosphere, so any traces of that due to it being integrated with the sky system are problematic.
This is something I’d really love to have for my project to make an advanced lunar town in a realistic setting, for film making. I hope it sees use and development continues. I love this kind of stuff.
Hi,
I totally got your point, but this system is meant to be used from the Earth perspective.
That said, you might want to have a look at the plugin code and at the Celestial Maths Blueprint function library included. There are functions to compute the Moon location in heliocentric space, same as for the Earth, using VSOP87 functions.
That way, you might be able to load the RA,DEC of the star catalog, and convert them to other coordinate systems. I’m not saying this is easy, but it could be an approach if you’re not afraid of Math.
I have no plan to have the system working from any perspective of the solar system, it’s not such a frequent case.
But Maybe the NASA DUST Tool would help you better…
This helped me set up my jupyter notebook better and I found a lot of benefits from this tutorial. I am just struggling with the photoshop part, I am using GIMP and managed to create 173 rows of data in total but I feel the magnitude was not translating to unreal engine. I am not sure if this has to do with the pixel size 1000X1500 or If I am not generating enough data points.
When I open the fictionalstarsbuilder.xlsx the data points didn’t sync properly either. There was a number of outliers that jumped off from the export within the .py file.
In this image I used the first 173 rows from the export I generated from my samurai constellation from the UE logo because I wanted the RGB values to be the same (hence the blank streak through the logo) however, those data points were stretched over the global sphere and not compacted like the UE logo was.
I am fairly confident this is due to my photoshop skills but I couldn’t follow the instructions that well because I was using GIMP instead of paint.net.
Your work is impressive btw, I am just trying to wrap my head around the logic under the hood with the data points.
Hi there, this is awesome, thanks! I haven’t been able to find Celestial Vault documentation about it’s general use. Could someone please copy the link to that info here? Thanks in advance!
Hi guys,
Thanks for the feedback. And sorry for the lack of official documentation. It has been written (I did it!), but it still needs to be integrated properly in the official EDC website by our doc team. They are working very hard, but there are so many new stuff in 5.6 that it’s longer than expected.
Once the official page will be there, I’ll provide a link here.
Eagerly awaiting your documentation sire! Also Zero2GameDev brought me here
Hey there!
Here we go, the documentation page is now live!
Hey! Thanks for the plugin, it looks great! I wanted to ask - I’m trying to set the location and date at runtime (I used to do this with the sun/sky actor), but it doesn’t seem to be updating the sun rotation when I change it. Is there something I’m missing here?
@Vertex85CL197 The link to the documentation seems to be down.
@acottam1 Have you found a solution for your updating problem?
Hey,
Thanks for your feedback.
The current implementation, with versions 5.6/5.7, which are still experimental, does not cover this use case. It’s strongly linked to the DaySequence System, and changing the Date is not possible at runtime.
I plan to change this behavior for 5.8, with more flexibility, and make the dependency on DaySequence entirely optional.
Doc broken link:"
Ooop’sie… I swear it was there for 5.6. I just reported this to the doc team. Thanks for your feedback.
Date update:
I answered @acottam1, it’s not supported by the current version.
FYI, there was a very stupid bug in the Sun Direction, which was sometimes quite broken depending on where you were on Earth, and not setting at the right time… ![]()
This issue has been fixed in 5.7.1, so please update.
There will be a bigger set of changes for 5.8, so please continue to bring your feedback here.
Thanks!
Hey, i noticed there was non-insignificant cost on tick on the GT for rotating the whole sky, and a large part (more than half) of it was updating bounds for the stars.
Not really sure if this is the “right” way to solve it, but adding
StarsComponent->SetUseConservativeBounds(true);
cut that cost down to basically nothing.
Hi,
Wow, thanks for noticing this! TBH, I did not go into deep profiling, but clearly, updating the bounds of this element make no sense, and your fix seems legit.
I’ll add it to the list of improvements for 5.8!
Thanks again!
Hi,
nice plugin! Is it supposed to replace/integrate Sun Position Calculator? Is the Simulation template going to be updated with this plugin?
Great question! ![]()
Ultimately, yes, it will replace the SunPosition plugin, since it has more features.
But it’s not there yet. I recently added to UE-main some missing features that were available in the SunPosition plugin (North Offset and automatic DST computations). We are almost at feature parity now.
But the Celestial Vault plugin is still experimental. We have very strict deprecation rules when not experimental, and I was not ready to follow them. It means that - Sorry, but it’s for the better- I changed a bit the API and classes for 5.8, and I plan to do other changes over the next few weeks, to integrate all the feedback I received.
I can’t really commit to a maturity level for 5.8, we still have time, but one sure thing, I won’t update the Simulation template as long as the Celestial Vault plugin is not production ready.
Btw, if some brave users want to try the current version on GitHub/Main, happy to get othet feedback and feature requests here.
Hi Alban,
Thanks for the update. Note that SunPosition is used by CesiumSky, maybe the Cesium team could have a look at your new plugin too.
I will try the new plugin from main to give you a feedback. I had UE source access from another github account but no sure I still have my logins. I linked my new Github but no access to the source yet, I must wait for an email it seems.
BTW thanks for the JSBSim plugin.
Hi Alban,
Two words about the Sim template, since you are involved in sim-related stuff: I started my current project from a Simulation template, so my controller inherits from the Sim controller. I was getting a few things for free: Sun Position, the profiling pressing ‘p’, and the current GPS position pressing ‘g’. I now replaced Sun Position with CelestialVault and deactivated everything else but ‘p’ and ‘g’. But those last two dont even use enhanced input… Also no worry for the Sim template, at this stage it’s better to start a Vehicle template and drag & drop in a CelestialVault plugin.
I tested the CelestialVault from main. It works like a charm. Only 2 things (nitpick).
One thing which was not straightforward to me with this plugin actually comes from the DaySequence plugin:
the BP variable “Run Day Cycle” is activated by default, and I thought setting that variable to false would pause the cycle at runtime (for example upon key press). This is not the case. I had to look at the code. At runtime, Run Day Cycle is not picked by the tick. To Pause the sequencer, one must call CelestialVault→Pause( ), inherited from the Sequencer. bRunDayCycle works like a bFreezeAtInitialTime variable, and could benefit from a renaming to avoid confusion.
Second, I was watching the moon, and noticed the moon was “jumping” along its path. I narrowed it down to the moon jumping position at midnight (00:00:00), while before and after it moves nicely in a continuous manner. So you know.
Again, great plugin, I feel a lot of great projects could come from that.
For the moon jump, it was indeed a known issue. The good news is that I write “was” because it’s fixed now (I’ll submit to main in one day or two).
The problem was that the DaySequence had been designed to loop the same day over and over, which is ok for 99.99% of applications (the DaySequence Modifier can help add variations).
The celestial bodies’ movement was not adapted because the moon moves “backwards” continuously.
In the current version, I don’t move bodies anymore using a looping Procedural Day sequence; instead, I update the vault “manually” when the day sequence is updated, allowing the animation to run across multiple days. I had to build a caching system to avoid performance impacts and hitches, and it works like a charm now. We can still use a looping DaySequenceAsset to control other actors’ properties (clouds, fog), but not the vault state.
I’ll now focus on the control we can have over it at runtime and see how Play/Pause/Jump can work. I’ll report your comment to the DaySequence owner, but I doubt they want to make such a small change.
Stay tuned!




