Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion ProjectSettings/ProjectSettings.asset
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ PlayerSettings:
16:10: 1
16:9: 1
Others: 1
bundleVersion: v1.1_RC.03
bundleVersion: v1.1
preloadedAssets: []
metroInputSource: 0
wsaTransparentSwapchain: 0
Expand Down
14 changes: 6 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,16 +50,13 @@ While iDaVIE has many useful features already, there are still many features tha

In the **short** term, we list features that we are actively working on and will be included in the next major release. This is not an exhaustive list and will be added to as development progresses. **Medium**-term goals are major feature additions that will require several weeks to months of dedicated development, with an initial idea or prototype already available. **Long**-term plans are major features that are dreams still, with no concrete plans on how to implement them yet.
#### Short-term
* Address bugs that arise after the release of 1.0.
* Add the ability to load a subcube. That is, load a contiguous portion of the cube, specified by the user by providing the bounds of the subcube. This includes a major rework of all file operations. This will allow users to use less memory when viewing large cubes, and could result in faster load times. See the relevant [pull request](https://github.com/idia-astro/iDaVIE/pull/320), [branch](https://github.com/idia-astro/iDaVIE/tree/cilliers/fix-issue-307), and [discussion](https://github.com/idia-astro/iDaVIE/discussions/402) for more information.
* Add the ability to select a different HDU (rather than the default first). Some instruments, noticeably integral field spectrographs (IFUs) such as MUSE, NIRSpec, or MIRI, produce cubes where the data is stored in the second HDU. To load this, the rework mentioned for adding subcubes is required. Therefore it will be added along with that feature. See the relevant [issue](https://github.com/idia-astro/iDaVIE/issues/290) and [branch](https://github.com/idia-astro/iDaVIE/tree/alex/hdu_selection) for more information.
* Improve the performance of the scripted video rendering.
* Separate the visualisation from the analysis tools. At the moment, much of the radio astronomy analysis tools and the visualisation are hardcoded together, such as the menus. The actual analysis code is contained within a `.dll` plugin. Unity allows for dynamically created menus (see the generic popups in the subcube [pull request](https://github.com/idia-astro/iDaVIE/pull/320)), which opens the possibility of moving all analysis tools into a separate plugin, while the visualisation code remains as is. Creators of the analysis tools can then potentially specify their menus through a script or API file, while iDaVIE (the visualisation tool) creates the menus dynamically from prefabs. More work will be required to look at how Unity deals with dynamic code, as well as a major refactor once the framework is made possible. This will be of significant use in the multidisciplinary domain, allowing the end user to download iDaVIE the visualisation tool and the analysis plugin relevant to their field. See the related [issue](https://github.com/idia-astro/iDaVIE/issues/405) and [discussion](https://github.com/idia-astro/iDaVIE/discussions/408) for more information.
* Release a version of iDaVIE that allows for particle datasets to be visualised. In particular, sparse multiparameter datasets, such as simulations, benefit greatly from visualisation in VR. A prototype has been created and sample images can be found on our [documentation pages](https://idavie.readthedocs.io/en/latest/multidisciplinary.html#astronomy). A publicly available prototype will be available in due course.

#### Medium-term
* Allow users to switch between rendering for emission or absorption. At the moment, the rendering shader (a ray-marching algorithm) samples values along the ray and returns either the maximum or the average value. To account for absorption in the foreground, a new shader will have to be developed, possibly based on [radiative transfer](https://en.wikipedia.org/wiki/Radiative_transfer) equations. See the relevant [issue](https://github.com/idia-astro/iDaVIE/issues/256) and [discussion](https://github.com/idia-astro/iDaVIE/discussions/403) for more information.
* Release a version of iDaVIE that allows for particle datasets to be visualised. In particular, sparse multiparameter datasets, such as simulations, benefit greatly from visualisation in VR. A prototype has been created and sample images can be found on our [documentation pages](). A publicly available prototype will be available in due course.
* Create a scripting wrapper or API to allow for smooth videos flying through the data to be generated. Currently, recording the user's view of the data is done through recording the screen showing the view of one of the user's eyes. This is invariably jittery and not of good quality. Recording a video from a Unity camera moving through the data results in smoother and better quality video. A prototype was created that utilised a hard-coded route for the camera to follow. It is desirable to create a way for the user to control the movement of this camera, without sacrificing the quality. One way to do this would be by having a script with commands that the camera will follow, and a button on the desktop interface to have it execute. See the [relevant](https://github.com/idia-astro/iDaVIE/issues/132) [issues](https://github.com/idia-astro/iDaVIE/issues/240) and [discussion](https://github.com/idia-astro/iDaVIE/discussions/406) for more information.
* Allow for a movable projection plane that highlights a 2D cross-section in a separate window, akin to the existing moment maps feature. This can be a single channel, or a position-velocity graph, or potentially overlaying one dataset on another. See [the](https://github.com/idia-astro/iDaVIE/issues/74) [relevant](https://github.com/idia-astro/iDaVIE/issues/197) [issues](https://github.com/idia-astro/iDaVIE/issues/404) and [discussion](https://github.com/idia-astro/iDaVIE/discussions/407) for more information.
* Separate the visualisation from the analysis tools. At the moment, much of the radio astronomy analysis tools and the visualisation are hardcoded together, such as the menus. The actual analysis code is contained within a `.dll` plugin. Unity allows for dynamically created menus (see the generic popups in the subcube [pull request](https://github.com/idia-astro/iDaVIE/pull/320)), which opens the possibility of moving all analysis tools into a separate plugin, while the visualisation code remains as is. Creators of the analysis tools can then potentially specify their menus through a script or API file, while iDaVIE (the visualisation tool) creates the menus dynamically from prefabs. More work will be required to look at how Unity deals with dynamic code, as well as a major refactor once the framework is made possible. This will be of significant use in the multidisciplinary domain, allowing the end user to download iDaVIE the visualisation tool and the analysis plugin relevant to their field. See the related [issue](https://github.com/idia-astro/iDaVIE/issues/405) and [discussion](https://github.com/idia-astro/iDaVIE/discussions/408) for more information.

#### Long-term
* Integrate a Python console into the application. The idea will be to have a PYTHON tab in the desktop GUI where the user could interact with the console. The Python interpreter will have access to different states of the iDaVIE session through an API that will allow both reading states (e.g. user location, source information, and the loaded cube data) and executing actions (e.g. transporting user, drawing adding new ROI as sources, or reloading the cube with a filter applied). There will also be the ability run custom Python scripts either in the GUI or by voice command.
Expand All @@ -70,7 +67,7 @@ In the **short** term, we list features that we are actively working on and will
* Allow for state or workspace saving. This is a fairly standard feature in many visualisation software (such as [CARTA](https://cartavis.org/)), and would be good to have for iDaVIE. This will require a careful design to take care of what is saved, and how to call the relevant functions when loading the saved state.

### About iDaVIE
iDaVIE (the immersive Data Visualisation Interactive Explorer) was conceived by and is being developed by the IDIA Visualisation Laboratory, who serves as the custodian for this open-source project. The documentation for iDaVIE and tutorials can be found on [Read the Docs](https://idavie.readthedocs.io/en/latest/).
iDaVIE (the immersive Data Visualisation Interactive Explorer) was conceived by and is being developed by the IDIA Visualisation Laboratory, who serves as the custodian for this open-source project. The documentation for iDaVIE and tutorials can be found on [Read the Docs](https://idavie.readthedocs.io/en/latest/). You can [send us an email](mailto:vislab@idia.ac.za?subject=Subscribe%20to%20iDaVIE%20mailing%20list&body=Please%20add%20this%20email%20address%20to%20the%20iDaVIE%20mailing%20list.) if you want to be added to the iDaVIE mailing list to receive news about updates and new features to iDaVIE.

#### Contributors
The development of the iDaVIE project is a joint effort from the following institutes:
Expand All @@ -91,6 +88,7 @@ Other relevant references are:
* "Exploring and Interrogating Astrophysical Data in Virtual Reality", [Jarrett et al. 2021](https://www.sciencedirect.com/science/article/pii/S2213133721000561?via%3Dihub>)
* "iDaVIE: immersive Data Visualisation Interactive Explorer for volumetric rendering", [Marchetti et al. 2021](https://ui.adsabs.harvard.edu/abs/2020arXiv201211553M/abstract)
* "Virtual Reality and Immersive Collaborative Environments: the New Frontier for Big Data Visualisation", [Sivitilli et al. 2021](https://ui.adsabs.harvard.edu/abs/2021arXiv210314397S/abstract)
* "iDaVIE v1.0: A virtual reality tool for interactive analysis of astronomical data cubes", [Sivitilli et al. 2026](https://doi.org/10.1016/j.ascom.2026.101109)

A library of publications that utilised iDaVIE can be found on the SAO Astrophysics Data System at [this link](https://ui.adsabs.harvard.edu/user/libraries/4GkpXb-OQD2v79CvQuNxRw).

Expand All @@ -116,5 +114,5 @@ iDaVIE is mainly built using the [Unity game engine](https://unity.com/) and wit
See our [NOTICE](https://github.com/idia-astro/iDaVIE/blob/main/NOTICE.md) file for full licence information of the third-party libraries we use.

#### Copyright and Licence
Copyright (C) 2024 IDIA, INAF-OACT. This program is free software; you can redistribute it and/or modify it under the terms of the [GNU Lesser General Public License (LGPL) version 3](https://github.com/idia-astro/iDaVIE/blob/main/LICENSE.md) as published by the Free Software Foundation.
Copyright (C) 2026 IDIA, INAF-OACT. This program is free software; you can redistribute it and/or modify it under the terms of the [GNU Lesser General Public License (LGPL) version 3](https://github.com/idia-astro/iDaVIE/blob/main/LICENSE.md) as published by the Free Software Foundation.

31 changes: 31 additions & 0 deletions Scripts/VideoScripts/Basic_Turntable.idvs
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# Video settings
Height : 720
Width : 720
FrameRate : 25
LogoPos : BR

# List of positions:
# Takes the form:
# <alias> is {<location>, <direction>}
# Alias can be any combination of characters, excluding whitespace.
# Both location and direction are Vector3, printed in the form `(x, y, z)`,
# and are relative to the datacube's normalised position and rotation.

center is {(0,0,0), (0,0,0)} #cursor

# Script:
# Accepted commands (see documentation for details):
# - Start at <alias>
# - Wait <n> seconds
# - Move in <METHOD> to <alias> over <n> seconds
# - Methods allowed: (LINE, ARC)
# - Rotate around <alias> <n> times

Start at front

Wait 0.5 seconds

#Simple turntable using Rotate
Rotate around center 1 times turn 0 seconds orbit 8 seconds

Wait 1 seconds
79 changes: 79 additions & 0 deletions Scripts/VideoScripts/how_the_turntables.idvs
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
# Video settings
Height : 720
Width : 720
FrameRate : 25
LogoPos : BR

# List of positions:
# Takes the form:
# <alias> is {<location>, <direction>}
# Alias can be any combination of characters, excluding whitespace.
# Both location and direction are Vector3, printed in the form `(x, y, z)`,
# and are relative to the datacube's normalised position and rotation.

center is {(0,0,0), (0,0,0)} #cursor

# y is up, views from all around
front is {(0, 0, -2), (0, 0, 0)} #head
right is {(2, 0, 0), (0, 270, 0)} #head
back is {(0, 0, 2), (0, 180, 0)} #head
left is {(-2, 0, 0), (0, 90, 0)} #head

# up-and-over turn-table views
over_top is {(0, 2, 0), (90, 0, 0)} #head
over_back is {(0, 0, 2), (0, 180, 180)} #head
over_bottom is {(0, -2, 0), (270, 180, 180)} #head

#sideways x is up, views from all around
x_up_front is {(0, 0, -2), (0, 0, 270)} #head
x_up_right is {(0, -2, 0), (270, 90, 180)} #head
x_up_back is {(0, 0, 2), (0, 180, 90)} #head
x_up_left is {(0, 2, 0), (90, 90, 0)} #head

# Script:
# Accepted commands (see documentation for details):
# - Start at <alias>
# - Wait <n> seconds
# - Move in <METHOD> to <alias> over <n> seconds
# - Methods allowed: (LINE, ARC)
# - Rotate around <alias> <n> times

Start at front

Wait 0.5 seconds

#Simple turntable using Rotate
Rotate around center 1 times turn 0 seconds orbit 8 seconds

Wait 1 seconds

#Using ARCs for turntable
Move in ARC to right over 2 seconds
Move in ARC to back over 2 seconds
Move in ARC to left over 2 seconds
Move in ARC to front over 2 seconds

Wait 1 seconds


#Using ARCs for up-and-over turntable
Move in ARC to over_top over 2 seconds
Move in ARC to over_back over 2 seconds
Move in ARC to over_bottom over 2 seconds
Move in ARC to front over 2 seconds

Wait 1 seconds

#Re-orientating for x-up
Move in LINE to x_up_front over 2 seconds

#Using ARCs for x-up turntable
Move in ARC to x_up_right over 2 seconds
Move in ARC to x_up_back over 2 seconds
Move in ARC to x_up_left over 2 seconds
Move in ARC to x_up_front over 2 seconds

Wait 1 seconds

#Re-orientating back to normal front view
Move in LINE to front over 2 seconds
Binary file added Scripts/VideoScripts/how_the_turntables.mp4
Binary file not shown.