/wwt-home

This is a meta repository to help navigate the repositories of the WorldWide Telescope community on GitHub.

Primary LanguageRubyCreative Commons Zero v1.0 UniversalCC0-1.0

Welcome to WorldWide Telescope

This is a meta repository to help navigate the repositories of the WorldWide Telescope developer community on GitHub.

What is WWT?

WorldWide Telescope (WWT) is a visualization environment that enables your computer to function as a virtual telescope—bringing together imagery from the world’s best ground- and space-based telescopes for the exploration of the universe. WWT blends terabytes of images, information, and stories from multiple sources into a seamless, immersive, rich media experience. Explorers of all ages will feel empowered to explore and understand the cosmos using WWT’s simple and powerful user interface.

Repositories

Title Description Repository Skills Required
WWT Web Client The WWT web client is rich client with a subset of the features of the Windows client, and since it is created as web delivered components it can be extended and reused in a variety of ways. Some of these options don’t require modifying the underlying code, just re-using it through WWT’s web control API. You can integrate WWT into your data back end to search for and visualize data from databases of imagery, catalogs or simulation data. You can replace or extend the existing UI with your own special purpose UI. You can also add custom rendering of types of data you define. The User interface for the WWT Web client created in JavaScript with the AngularJS framework. You should be familiar with JavaScript, AngularJS and JSON to modify or extend the web client. The core rendering code is written in C#/.NET and cross compiled to JavaScript using ScriptSharp. There is custom HTML5 Canvas rendering code, with graceful transition to WebGL when available. Working in the core rendering code requires understanding of low-level 3D rendering, 2D and 3D transforms and data structures as well as HTML canvas and WebGL rendering techniques.
WWT Windows Client The Windows client is the most powerful component, and the most complex. It can power desktop visualizations, power walls, or even full dome multi-projector clusters. For developers with the right set of skills, WWT in Windows can be adapted to an even wider set of requirements. The WWT Windows Client is built in Visual Studio 2013 with the .net framework 4.5x. It uses custom Winforms controls for the user interface, and DirectX11 for the 3D rendering. The interface between the C# .NET code and DirectX11 is the SharpDX library, another open source component. The client also has significant amounts of HLSL Shader code for both rendering and GP/GPU computation (such as orbits, temporal animation, lighting, etc.). There is a significant amount of TCP/IP networking code, as well as a full HTTP server implementation. To modify the core rendering code you need to know advanced 3D & spherical math and 3D rendering techniques similar to that of 3D Game engines. You also need to understand astronomical mathematics.

There is a layer class model that can be derived from to allow new layer types to be defines without having to modify much of the core WWT codebase. This will be the most popular way of extending WWT, and will probably be exposed as a plug-in model for allowing the main-line installations to take 3rd party WWT layers without having to compile them into the mainline code.
WWT Kinect Swing Control Swing to the Moon art installation https://muda.co/starfield/
WWT Tile SDK WWT offers curated access to many terabytes of image data, but the most important imagery for you might be your own. If you have relatively small amounts of data that fit in single image files, WWT’s standalone image-tiler app or on-line image import and tiling service will be all you need, but if you have very large image sets that cover large swaths of the sky or a planet’s surface, or provide terrain or bathymetric data, you may need to construct a software pipeline to process such data to make it efficiently delivered as multi-resolution image and DEM tile pyramids. The Tile SDK is a c# framework with samples that will help you create processing pipelines for large data sets, with TOAST and Mercator outputs as options. The WWT Tile SDK requires understanding of how to code, compile, debug and run C# applications. You should also have a strong understanding of general imaging including sampling, bitmaps and reading image data from your input sources. You should also understand the projection you intend to have for your input and output sources and know how to properly sample data from them.
WWT Excel Plugin WWT Layer Control with Excel
WWT Remote Cluster Controller for WorldWide Telescope running in multi-channel domes, power walls and other multiple machine or headless operation
WWT Website The WWT Website http://www.worldwidetelescope.org ASP.NET MVC 5 and the Razor view engine
WWT Documentation A meta repository of WWT documentation Some experience using WWT
Layer Control API In addition to using the layer manager interactively, you can use scripting and programming languages to send commands and data into WWT from your own code driving the visualization of data in WWT. You can write code that can read data from a database, or create it mathematically and send it to WWT to render. In addition almost all of WWT functionality can be controller through the LCAPI. This means you can create control mechanisms for automated or interactive control of WWT through your own hardware and software. A good example of the use of the LCAPI is the ADS All-Sky Survey as seen in WorldWide Telescope, at adsass.org/wwt/. Part of WWT SDK. Windows Installer available here You need to be familiar with the programing language or your choice and get the LCAPI documentation and learn how to use HTTP request to send and receive data from WWT. There is also a library called Narwhal that provides a .NET wrapper and high level programming features for those who use .NET. Any language that can call HTTP web services can control WWT, and a Python interface has already been implemented, as pyWWT, (see www.jzuhone.com/pywwt
pyWWT Python interface to the WWT Windows and Web clients Novice level python knowledge

Get Involved

What is needed, how to contribute ... to be written