Skip to content

Add parallax effect to stars#4023

Merged
alex-w merged 22 commits into
Stellarium:masterfrom
henrysky:parallaxeffect
Jan 13, 2025
Merged

Add parallax effect to stars#4023
alex-w merged 22 commits into
Stellarium:masterfrom
henrysky:parallaxeffect

Conversation

@henrysky
Copy link
Copy Markdown
Contributor

@henrysky henrysky commented Dec 24, 2024

As discussed in #3982, this PR will add support for modelling parallax effect caused by the difference between the Earth's heliocentric location at the star catalog epoch and the current observer's location. Meaning the parallax effect here should be correctly modelled on different planets/moons too. This PR depends on the work of PR #3992 to be merged first which is work-in-progress, I am opening this PR now to show a work-in-progress preview.

This PR also adds support to update parallax of stars displayed in info string when on different planet/moon.

Fixes # (issue)

Screenshots (if appropriate):

I have added an option to enable/disable Parallax effect, and to exaggerate parallax effect from 1x to 10000x.

Screenshot 2024-12-24 at 1 17 03 AM

<img width="823" alt="Screenshot 2024-12-24 at 1 38 04 AM" src="https://github.com/user-attachments/assets/f99c0cdb-a288-4097-aeda-bdd945df5730" />

To sanity check for now, you can stay on Earth or go to a different planet, enable parallax but disable aberration (so only parallax effect is shown), display ecliptic plane line. Stars near the ecliptic plane should move in 1d motion parallel to the ecliptic plane while stars farthest from the ecliptic plane should move in circular motion. The period of the motion of stars should match the orbital period of the planet. Keeping the same exaggeration factor, stars should have greater motion caused by parallax when you are on an outer planet like Uranus.

Here are video showing the parallax effect:

On earth near ecliptic plane (exaggerate 1000x):

1.mov

On earth near ecliptic pole (exaggerate 1000x):

2.mov

On Uranus near ecliptic plane (exaggerate 1000x):

3.mov

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • This change requires a documentation update
  • Housekeeping

How Has This Been Tested?

Test Configuration:

  • Operating system: <Name, version number>
  • Graphics Card: <Manufacturer (likely Intel, NVidia, AMD?), Model (HD, Geforce, Radeon..., with model number), driver version?>

Checklist:

  • My code follows the code style of this project.
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation (header file)
  • I have updated the respective chapter in the Stellarium User Guide
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • New and existing unit tests pass locally with my changes
  • Any dependent changes have been merged and published in downstream modules

@github-actions
Copy link
Copy Markdown

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.

@henrysky
Copy link
Copy Markdown
Contributor Author

henrysky commented Dec 25, 2024

A real world check with Proxima Cen. NASA New Horizon's observation where the parallax computed here match what New Horizon has observed "near" Pluto in Apr 2020 (I emphasize "near" because it has passed Pluto in 2015 so long gone from Pluto in 2020 but it is the closest object I can select in Stellarium). Ref: https://www.nasa.gov/solar-system/nasas-new-horizons-conducts-the-first-interstellar-parallax-experiment/

This is the images NASA took, I have added a few anchors to help you navigate:

nh-proxima-centauri-parallel

This is from this PR:
Screenshot 2024-12-24 at 7 07 16 PM
Screenshot 2024-12-24 at 7 07 46 PM

@github-actions github-actions Bot added the has conflicts The pull request has conflicts label Dec 25, 2024
@github-actions
Copy link
Copy Markdown

This pull request has conflicts, please resolve those before we can evaluate the pull request.

@github-actions github-actions Bot removed the has conflicts The pull request has conflicts label Dec 25, 2024
@github-actions
Copy link
Copy Markdown

Conflicts have been resolved. A maintainer will review the pull request shortly.

@alex-w alex-w added the purpose: didactic Issues, pull requests and proposals with didactic purposes label Dec 25, 2024
@alex-w alex-w added this to the 25.1 milestone Dec 25, 2024
@gzotti
Copy link
Copy Markdown
Member

gzotti commented Dec 25, 2024

The placement of the marker ring is off (should be simple to fix), but the result is impressive!

@Atque
Copy link
Copy Markdown
Contributor

Atque commented Dec 25, 2024

The placement of the marker ring is off (should be simple to fix), but the result is impressive!

Stars don't connect to the constellation lines either, perhaps the same reason.

EDIT: Nevermind, I was using yesterday's build.

@alex-w
Copy link
Copy Markdown
Member

alex-w commented Dec 25, 2024

Awesome feature! When multiplier is 1000 - I think it can be very impressive demo for real planetariums too

Comment thread src/core/modules/StarWrapper.hpp Outdated
Comment thread src/gui/configurationDialog.ui Outdated
@gzotti
Copy link
Copy Markdown
Member

gzotti commented Dec 25, 2024

This is fabulous. Watching Proxima Cen or Barnard's star with all effects (nutation, aberration, parallax) together with equatorial grid is a somewhat dizzying experience, showing the difficulties in actually measuring position. And greatly funny to see a two-color rendition of Barnard's star, Proxima, Wolf 359 or Groombridge 1830 in DSS - you can date the plates!

Yes, at 1000x it reminds me of one special projector in Vienna's old Zeiss Model IV which had a wobbling Sirius to demonstrate parallax, probably at 1000x. Not many bright stars can be said to have notable parallax, though.

@Atque
Copy link
Copy Markdown
Contributor

Atque commented Dec 25, 2024

Hmm, standing on another planet/moon and pressing "Return to default location" crashes the program for me.

@gzotti
Copy link
Copy Markdown
Member

gzotti commented Dec 25, 2024

Uh, yes, selecting Jupiter and pressing GOTO (Ctrl-G) also crashes. IIRC the same call.

@henrysky
Copy link
Copy Markdown
Contributor Author

henrysky commented Jan 9, 2025

I've added barycentric position and velocity function for DE43* and DE44*, otherwise the Sun is assumed to be at the barycenter of the solar system. I've switched parallax and aberration to use barycentric position and velocity.

I think a high aberration will also mess up the "zoning" of stars but outside the scope of this PR. @alex-w @gzotti @10110111 this PR is ready to be reviewed

@10110111
Copy link
Copy Markdown
Contributor

Please rebase this against the current master, this should fix your build problems on Windows/Qt5.

@alex-w alex-w added the subsystem: catalogs The issue is related to supported catalogs of planetarium... label Jan 12, 2025
@gzotti
Copy link
Copy Markdown
Member

gzotti commented Jan 12, 2025

Selecting Mars and pressing Ctrl-G for "goto" still crashes :-(

@alex-w
Copy link
Copy Markdown
Member

alex-w commented Jan 12, 2025

Selecting Mars and pressing Ctrl-G for "goto" still crashes :-(

Yes, I can confirm crash when parallax is enabled only

@henrysky
Copy link
Copy Markdown
Contributor Author

I think the root cause is planet to planet transition, now I have set to use cached parallaxdiff until the transition is completed. Seems to have fixed the problem.

Copy link
Copy Markdown
Member

@alex-w alex-w left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@github-actions github-actions Bot added the has conflicts The pull request has conflicts label Jan 13, 2025
@github-actions
Copy link
Copy Markdown

This pull request has conflicts, please resolve those before we can evaluate the pull request.

@alex-w
Copy link
Copy Markdown
Member

alex-w commented Jan 13, 2025

Oops… @henrysky please resolve conflict

@github-actions github-actions Bot removed the has conflicts The pull request has conflicts label Jan 13, 2025
@github-actions
Copy link
Copy Markdown

Conflicts have been resolved. A maintainer will review the pull request shortly.

@alex-w alex-w merged commit 4a9e458 into Stellarium:master Jan 13, 2025
@henrysky henrysky mentioned this pull request Jan 14, 2025
@alex-w alex-w added the state: published The fix has been published for testing in weekly binary package label Feb 10, 2025
@github-actions
Copy link
Copy Markdown

Hello @henrysky!

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

@alex-w alex-w removed the state: published The fix has been published for testing in weekly binary package label Mar 23, 2025
@github-actions
Copy link
Copy Markdown

Hello @henrysky!

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

purpose: didactic Issues, pull requests and proposals with didactic purposes subsystem: catalogs The issue is related to supported catalogs of planetarium...

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants