Skip to content

Add Custom Nebula Textures Plug-in #4003

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 90 commits into from
Jun 9, 2025
Merged

Conversation

ultrapre
Copy link
Contributor

@ultrapre ultrapre commented Dec 11, 2024

For amateur astronomers to parse their own nebula images and use them as textures.
By inputting photos and Astrometry.net's API to Plate-solve images online, and calculating the four corner coordinates, finally rendering textures of custom nebula images.

The project is work-in-progress, welcome guiding and joining.

Plan:

Initial functional points:

  • 1. Online solving.
  • 2. Local solving. (Deferred)
  • 3. Calculate the RA Dec J2000.
  • 4. Goto the identification.
  • 5. Render and undo the image.
  • 6. Add the image to management.
  • 7. Management and deleting.
  • usage manual and debug.

Copy link

github-actions bot commented Dec 11, 2024

Great PR! Please pay attention to the following items before merging:

Files matching src/**/*.cpp:

  • Are possibly unused includes removed?

Files matching guide/**:

  • Did you remember to update screenshots to match new updates?
  • Did you remember to grammar check in changed part of documentation?

This is an automatically generated QA checklist based on modified files.

@ultrapre
Copy link
Contributor Author

ultrapre commented Dec 11, 2024

@10110111 @alex-w @gzotti Do you have any suggestions for conflicts between custom texture rendering and original texture rendering? Should we let users choose to turn off the original texture and then display the custom texture, or use some algorithm to detect and compare the texture area and then turn off the conflicting texture?

Should it add a json for custom configuration? Or can it directly modify the original texture json and add a key to distinguish between the original and customized ones?

@alex-w alex-w marked this pull request as draft December 11, 2024 12:51
@alex-w
Copy link
Member

alex-w commented Dec 11, 2024

Please fix compilation of the code

@gzotti
Copy link
Member

gzotti commented Dec 11, 2024

I am not sure: Can we handle user catalogs independently? There is probably infrastructure for more, but just one "default" nebula catalog. Maybe users could make (manually) a copy of default and then replace whatever they want to replace. Or they just want to use this welcome plugin to then contribute their own images of so far not included DSOs. Given the very latest developments, you need this plugin to platesolve/fit the image with stars, and then apply some de-starring filter to extract the nebula alone. (Unless image is of a cluster of course.)

@ultrapre
Copy link
Contributor Author

ultrapre commented Dec 11, 2024

I think it would be cool for astronomical photographers to be able to map their images in the software without having to deal with complex file editing. Rather than just giving developers predefined tools

It would be better to have separate user-defined json and image storage and management, and allow users to choose to hide conflicting original textures (by algorithm).

Another question is that the following formula still has a slight position deviation when calculating the four corners based on wcs fits. Does it also involve the calculation of parameters such as A_0_0, B_0_0, AP_0_0, BP_0_0? Maybe it is related to field of view distortion? I just started to get started, so it would be great if you could help me take a look.

delta_col = x - crpix1
delta_row = y - crpix2
RA = crval1 + (delta_col * cd1_1 + delta_row * cd1_2)  / cos(crval2)
DEC = crval2 + (delta_col * cd2_1 + delta_row * cd2_2) 

@gzotti
Copy link
Member

gzotti commented Dec 11, 2024

Sorry, will be of no help here. Not my field. For fitting, you may want to disable aberration (to show mean positions). Small-angle (telescope) images should usually be OK, for large images it is not enough to have the corner coords, but need to take lens distortion into account.

@ultrapre
Copy link
Contributor Author

ultrapre commented Dec 11, 2024

Perhaps another use is to allow users to analyze their own images and then locate the position in Stellarium, which would be a very practical function

Small-angle (telescope) images should usually be OK, for large images it is not enough to have the corner coords, but need to take lens distortion into account.

This can of course be explained to the user in advance, my plan is that most of the image (within 2-3 degrees) can be displayed accurately

@alex-w
Copy link
Member

alex-w commented Dec 11, 2024

From the log:

gui/NebulaTexturesDialog.cpp:226:70: error: call to member function 'arg' is ambiguous
   QString contentType = QString("multipart/form-data; boundary=%1").arg(boundary);

Compilation the qt5-based edition is broken

@alex-w alex-w added the subsystem: plugins The issue is related to plugins of planetarium... label Dec 11, 2024
@ultrapre
Copy link
Contributor Author

ultrapre commented Dec 12, 2024

wcslib works well for converting pixel to RA/Dec. Stellarsolver is also good for it.
I plan to introduce one of them

New:
Oops, I seem to find the simple formula to solve it, no need for things above.

@ultrapre
Copy link
Contributor Author

ultrapre commented Dec 13, 2024

Accuracy of the algorithm as follows:
image

image

It works well even at a large scale.

5B7D623247086A1F5F3B6F5473BEC1F9_看图王

@alex-w alex-w added the feature Entirely new feature label Dec 13, 2024
Copy link

Hello @ultrapre!

Thank you for proposing of the feature.

@ultrapre
Copy link
Contributor Author

ultrapre commented Dec 14, 2024

@alex-w @gzotti @10110111
Sorry, it seems that StelSkyLayerMgr::loadSkyImage is deprecated? The rendering result of the call is different from what I debugged using textures.json. The code of StelSkyLayerMgr and StelSkyImageTile is hard to read and understand for me.

@gzotti
Copy link
Member

gzotti commented Dec 14, 2024

I fully agree this is hard to read and follow. To me it appears even more features were planned but then not completed.

@ultrapre
Copy link
Contributor Author

ultrapre commented Dec 16, 2024

Anyone know how to disable rendering a selected image in the default texture?

@gzotti
Copy link
Member

gzotti commented Dec 16, 2024

Alexander invented some trick to hide M1 before 1054. Maybe you can go a similar way based on other conditions? Or you will have to add a scriptable function setVisible(QString imgName_or_JSONkey, bool visible). Sorry, I am not enough familiar in this section and would have to study the code again myself.

@sunshuwei
Copy link
Contributor

sunshuwei commented Dec 16, 2024

It is best to have a UI that can manage turning each texture on or off.
Since the Crab Nebula can be turned off under certain conditions, I think perhaps every texture should be able to do the same.

@ultrapre
Copy link
Contributor Author

The display of M1 is not related to the method of manipulating the display separately, as this also uses the filtering criteria in the data

"birthJD": 2106215.0

@gzotti
Copy link
Member

gzotti commented Dec 16, 2024

If there is no built-in way and you need it, you may need to add a key "visible" which should default to true. Then add the setVisible() command as outlined above. While you are exploring, everything about minResolution and probably other fields need better documentation IMO.

@ultrapre
Copy link
Contributor Author

Please review the code changes in core.
Does multi-language support only require q_ to wrap the strings that need to be translated?

@alex-w
Copy link
Member

alex-w commented Dec 18, 2024

Does multi-language support only require q_ to wrap the strings that need to be translated?

Yes, it's enough

@sunshuwei
Copy link
Contributor

Could we consider adding an option in the future that is turned off by default, but can be turned on after consulting with the user, giving the image to Stellarium, using CC BY 3.0 or CC BY 4.0 copyright, and then the official can use these images as materials. It is even possible to develop a community in the future, similar to the Creative Workshop in Steam games, where users can freely choose mods provided by others.

@ultrapre ultrapre changed the title [WIP] Add Custom Nebula Textures Plug-in. Add Custom Nebula Textures Plug-in. Dec 18, 2024
@ultrapre
Copy link
Contributor Author

Could we consider adding an option in the future that is turned off by default, but can be turned on after consulting with the user, giving the image to Stellarium, using CC BY 3.0 or CC BY 4.0 copyright, and then the official can use these images as materials. It is even possible to develop a community in the future, similar to the Creative Workshop in Steam games, where users can freely choose mods provided by others.

This requires server storage and a multimedia community, although uploading to a designated interface is easy to achieve. Anyway, such functionality can be envisioned in the future, as it is not currently required for this standalone software and the first version of the plugin.

@ultrapre
Copy link
Contributor Author

ultrapre commented Jun 7, 2025

How did you export the PNGs? I don't find shadows or glows in the SVG file, while they are present in the PNGs. Same for boundaries. And the infinity sign stays separate from the icons layer...

Sorry, I need to clarify that I was not able to figure out how to use inkscape to directly create the final effect and export this icon, so it also went through the editing process of AI, PS, etc, and the intermediate file is not the svg. Can any technical support intervene?

@10110111
Copy link
Contributor

10110111 commented Jun 7, 2025

Have you seen the "documentation" layer in data/gui/icons.svg? It's quite detailed. If you still can't, I suppose I'll have to fix it up afterwards.

@ultrapre
Copy link
Contributor Author

ultrapre commented Jun 7, 2025

I don't find shadows or glows in the SVG

When I attempt to separate target from icons.svg, they losts. Selecting and deleting a lot of unnecessary elements in inkscape is difficult. I think I need some time to start with other software

@10110111
Copy link
Contributor

10110111 commented Jun 7, 2025

Selecting and deleting a lot of unnecessary elements in inkscape is difficult.

Just tried, I can easily select a bunch of elements by rectangle selection and then press Del to delete them. Just make sure that you've unlocked the necessary layers before this.

@10110111
Copy link
Contributor

10110111 commented Jun 7, 2025

Anyway, this seems a minor issue to stop from going further with this PR. I'll fix this after merge. Just need to make sure that all my review comments have been addressed.

@10110111
Copy link
Contributor

10110111 commented Jun 7, 2025

I've updated my review comment with checkboxes that are unchecked next to the points that I haven't seen addressed. Please take care of them.

@ultrapre
Copy link
Contributor Author

ultrapre commented Jun 9, 2025

I've updated #4003 (comment) with checkboxes that are unchecked next to the points that I haven't seen addressed. Please take care of them.

Thanks, the previous submission missed some changes and are now added along with the new suggestions.

@10110111
Copy link
Contributor

10110111 commented Jun 9, 2025

Thanks, the previous submission missed some changes and are now added along with the new suggestions.

Thanks, I've added a couple of comments to your commit. When you fix them, I think this PR will be OK for merging.

@10110111
Copy link
Contributor

10110111 commented Jun 9, 2025

Not sure why my comments don't appear here, I've re-posted them in the review format.

@alex-w alex-w merged commit 3e19e6d into Stellarium:master Jun 9, 2025
15 checks passed
@github-project-automation github-project-automation bot moved this from In review to Done in Plugin Jun 9, 2025
@alex-w
Copy link
Member

alex-w commented Jun 9, 2025

@ultrapre thanks for the new plugin! Please assign issues #75 and #3170

@alex-w alex-w added the state: published The fix has been published for testing in weekly binary package label Jun 16, 2025
Copy link

Hello @ultrapre!

Please check the fresh version (development snapshot) of Stellarium:
https://github.com/Stellarium/stellarium-data/releases/tag/weekly-snapshot

Copy link

Hello @ultrapre!

Please check the latest stable version of Stellarium:
https://github.com/Stellarium/stellarium/releases/latest

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature Entirely new feature subsystem: plugins The issue is related to plugins of planetarium...
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

Drag and drop an image, platesolve it and display it with variable transparency above background Interactive Editor Plugin for nebula images
5 participants