Changing and controlling views

PyWWT includes the option to toggle between view modes in the same manner as in the WorldWide Telescope Web Client by using the set_view() method. Available modes include a view of the sky, as well as 3D views of celestial bodies, the solar system, the galaxy, or the observable universe. The rest of the documentation is based on the default sky mode, so here we discuss what makes the other modes different.

In general, changing view involves using the set_view() method with a string that indicates the desired view. You can find a list of available views by doing:

>>> wwt.available_views
['callisto', 'earth', 'europa', 'ganymede', 'io', 'jupiter', 'mars',
'mercury', 'milky way', 'moon', 'neptune', 'panorama', 'pluto', 'saturn',
'sky', 'solar system', 'sun', 'universe', 'uranus', 'venus']

Planet view

Use this mode to get individual views of most of the major objects in the solar system – the Sun, the planets, Pluto, Earth’s Moon, and Jupiter’s Galilean satellites. To use this mode, enter the name of your desired object as the argument for set_view():

>>> wwt.set_view('Moon')

Once you’ve done that, your view should resemble the following:


Solar System, Milky Way, and Universe views

These three views come from the same mode at different field-of-view levels.

Solar system

This mode displays all objects that orbit the Sun. To access it, enter:

>>> wwt.set_view('Solar System')

All attributes and methods of solar system mode are housed within the widget’s solar_system object so they’re easier to find. Like the sky view, it’s possible to edit this view to your liking. For example, orbit paths are shown by default, but if you would like to turn them off, use the orbits attribute:

>>> wwt.solar_system.orbits = False

The objects themselves can also be hidden using a similar technique. Another useful attribute, scale, enables you to change the size of the major objects on a scale from 1 (actual size) to 100. We plan to reveal more options soon to match those currently present in the Web Client.

This mode also comes with its own method, track_object(), that centers the viewer on a major solar system object of your choice as it both rotates and follows its orbital path:

>>> wwt.solar_system.track_object('Jupiter')


track_object is similar in spirit and syntax to planet view, but they are not the same. The former exists within the context of the whole solar system, so if you choose to track Jupiter as above, you’ll see its moons in orbit, the Sun in the distance, and the stars and Milky Way as the backdrop. Planet view displays the object in question and nothing else.

Milky Way

The Milky Way view changes the scale of the view such that all of the galaxy is visible:


It can be used as a base point for exploration of galaxies. Access it by entering:

>>> wwt.set_view('Milky Way')


The Universe view zooms all the way out to the extent of the observed universe:



If you’re ever lost inside a mode, backtrack to its initial state by using the reset_view() method.

Panorama view

This view provides 360-degree panoramas taken during various NASA missions to Mars and the Moon. It’s currently only possible to explore a single image from NASA’s Pathfinder rover on Mars. The rest of the panoramas and their view-specific functionalities will be imported from the Web Client in a future release.

Time controls

By default, WWT shows views changing in real time. To pause the passage of time, you can use the pause_time() method:

>>> wwt.pause_time()

You can then resume the passage of time with the play_time() method:

>>> wwt.play_time()

You can also change the rate of passage of time by passing a rate argument to play_time() - for example, to speed things up by a factor of 10000, use:

>>> wwt.play_time(rate=10000)

It is also possible to specify a time in the viewer yourself through the set_current_time() method as long as the time provided is a datetime or an astropy Time object:

>>> from astropy.time import Time
>>> my_time = Time('2017-03-09')
>>> wwt.set_current_time(my_time)

To bring the viewer back to real time, call set_current_time() without an argument.

If you’re unsure of where in time you’ve landed, the get_current_time() method returns the viewer’s current time as an astropy.time.Time object in UTC:

>>> wwt.get_current_time()
<Time object: scale='utc' format='isot' value=2019-09-21T08:02:37.696>