Commit 78b3d445 authored by Genial-O's avatar Genial-O
Browse files

misc: merge release 21.1.0

parents 71925f74 579f93c6
Pipeline #197172 passed with stages
in 2 minutes and 12 seconds
### Summary
### Description
(Summarize the bug encountered concisely)
_Summarize the bug encountered concisely_
### Steps to reproduce
(How one can reproduce the issue - this is very important)
_How one can reproduce the issue - this is very important._
_If the bug depends on a particular environment or platform, please give all relevant details._
_Paste any relevant logs. Please use code blocks (```) to format these._
### Dev environment
### Proposal
* OS: (Linux, Windows, MacOS)
* CMake version: (cmake --version)
* Compiler: (gcc/clang/... & version)
* Build type: (debug/release)
* Commit: (current commit or tag)
* (Any related repository commit/tag e.g ...)
_Optional section to give some functional or technical hints_
### Relevant logs and/or screenshots
### Functional specifications
(Paste any relevant logs - please use code blocks (```) to format console output,
logs, and code as it's very hard to read otherwise.)
_If there is any change to the workflow, UX/UI design, screenshots, etc..., please describe it here_
### Possible fixes
### Technical specifications
(If you can, link to the line of code that might be responsible for the problem)
_Details of the implementation of the fix_
/label ~"Type:bugfix"
### Test plan
_Describe how you will verify that the implementation fulfils the specifications_
/label ~"Type::bugfix" ~"Priority::medium"
### Description
(Include problem, use cases, benefits, and/or goals)
_Describe briefly the existing feature and what is the enhancement, use cases, benefits, and goals_
### Proposal
(How you will do it)
_Optional section to give some functional or technical hints_
### Outcomes
### Functional specifications
(What could be the benefits (readability, performance, ...)
_Workflow, UX/UI design, screenshots, etc..._
### Links / references
### Technical specifications
(Any references)
_Details of the implementation_
/label ~"Type:enhancement"
### Test plan
_Describe how you will verify that the implementation fulfils the specifications_
/label ~"Type::enhancement" ~"Priority::medium"
### Description
(Include problem, use cases, benefits, and/or goals)
_Describe the need, what would be the feature, use cases, benefits, and goals_
### Proposal
(How you will do it)
_Optional section to give some functional or technical hints_
### Links / references
### Functional specifications
(Any references)
_Workflow, UX/UI design, screenshots, etc..._
### Documentation blurb
### Technical specifications
(Write the start of the documentation of this feature here, include:
_Details of the implementation_
1. Why should someone use it; what's the underlying problem.
2. What is the solution.
3. How does someone use this
### Test plan
During implementation, this can then be copied and used as a starter for the documentation.)
_Describe how you will verify that the implementation fulfils the specifications_
/label ~"Type:feature"
/label ~"Type::feature" ~"Priority::medium"
### Description
_Describe the existing code and why there is a need for a refactor, benefits, and goals_
### Proposal
_Optional section to give some functional or technical hints_
### Functional specifications
_Usually a refactor does not alter functional specifications,_
_but if there is any change to the workflow, UX/UI design, screenshots, etc..., please describe it here_
### Technical specifications
_Details of the implementation_
### Test plan
_Describe how you will verify that the implementation fulfils the specifications_
/label ~"Type::refactor" ~"Priority::medium"
......@@ -201,19 +201,19 @@ Example
<!-- ******************************************** begin readers/writers ******************************************** -->
<service uid="imageReader" type="::sight::module::ui::base::io::SSelector">
<service uid="imageReader" type="sight::module::ui::base::io::SSelector">
<inout key="data" uid="imageUID" />
<type mode="reader" />
</service>
<!-- *********************************************** begin editors ************************************************* -->
<service uid="sliceEditor" type="::sight::module::ui::qt::image::SliceIndexPositionEditor" autoConnect="yes">
<service uid="sliceEditor" type="sight::module::ui::qt::image::SliceIndexPositionEditor" autoConnect="yes">
<inout key="image" uid="imageUID" />
<sliceIndex>axial</sliceIndex>
</service>
<service uid="snapshotEditor" type="::sight::module::ui::qt::viz::SnapshotEditor" />
<service uid="snapshotEditor" type="sight::module::ui::qt::viz::SnapshotEditor" />
<!-- ************************************************ begin 3Dscene ************************************************ -->
......
......@@ -48,13 +48,6 @@ Which prerequisites do I need to develop new services and modules ?
You must have a good knowledge in C++. Concerning the configuration files, they are written in XML.
What are the BinPkgs?
======================
The BinPkgs (binary packages) contain all the extern libraries needed by sight.
For each BinPkg, a CMakeLists provides the OS specific instructions to build it.
They can be downloaded on https://git.ircad.fr/sight/sight-deps.
Is it difficult to compile an application with sight?
======================================================
......@@ -128,63 +121,3 @@ i.e. for sight::data::Image, itk::Image vs vtkImage ?
sight::data::Image<=>itk::Image and sight::data::Image<=>vtkImage.
- Otherwise, you can just encapsulated an itk::Image in sight::data::Image and create an accessor on it. ( however,
this choice implies that all applications that use sight::data::Image need ITK library for running. )
.. _campPath:
What is a camp path ?
======================
A **camp path** (also called sesh@ path) is a path used to browse an object (and sub-object)
using the introspection (see fwDataCamp and :ref:`SADSerialization`).
The path begins with a '@' or a '!'.
- ``@`` : the returned string is the fwID of the sub-object defined by the path.
- ``!`` : the returned string is the value of the sub-object,
it works only on String, Integer, Float and Boolean object.
Sadly, we do not have yet a document giving the paths for all existing data.
To know how an object can be accessed with a sesh@ path, you can
have a look at the corresponding fwDataCamp implementation of the object.
For instance, the file *fwDataCamp/Image.cpp* shows :
.. code:: c++
SIGHT_IMPLEMENT_DATA_REFLECTION((sight)(data)(Image))
{
builder
.tag("object_version", "2")
.tag("lib_name", "fwData")
.base< sight::data::Object>()
.property("size", &sight::data::Image::m_size)
.property("type", &sight::data::Image::m_type)
.property("spacing", &sight::data::Image::m_spacing)
.property("origin", &sight::data::Image::m_origin)
.property("array", &sight::data::Image::m_dataArray)
.property("nb_components", &sight::data::Image::m_numberOfComponents)
.property("window_center", &sight::data::Image::m_windowCenter)
.property("window_width", &sight::data::Image::m_windowWidth)
;
}
Which means that each property is a reachable by a **camp path**.
This is notably used by services in the ``ctrlCamp`` module, like ``SExtractObjObj`` or ``SCopy``.
For instance the height of the image can be retrieved using:
.. code:: xml
@size.1
Other examples:
----------------
To get the image contained in a ``sight::data::Composite`` with the key ``myImage``
.. code:: xml
@values.myImage
To get the first reconstruction of a ModelSeries contained in a ``sight::data::Composite`` with the key ``myModel``
.. code:: xml
@values.myModel.reconstruction_db.0
......@@ -14,16 +14,16 @@ CMakeLists.txt
.. _HowTosCMakeLists.cmake:
Each target (application, module, library) contains one `CMakeLists.txt`. We use
Each target (application, module, library) contains one ``CMakeLists.txt``. We use
standard CMake commands and properties, and a few custom macros.
The *CMakeLists.txt* should contain the macro *sight_add_target()* which will create the correct CMake target depending
on the TYPE parameter:
- APP for a XML-based application
- MODULE for a module
- LIBRARY for a library
- EXECUTABLE for an executable
- APP for a XML-based application
- MODULE for a module
- LIBRARY for a library
- EXECUTABLE for an executable
Then you can use classic CMake commands to link with others sight libaries or with external libraries.
......@@ -40,12 +40,13 @@ Here is an example of CMakeLists.txt of sample module which links with Qt5:
set_target_properties(module_foo PROPERTIES AUTOMOC TRUE)
The next lines allows to compile with the support of some external libraries (sight-deps), in this example this is Qt.
The first thing to do is to discover where Qt is installed. This is done with the regular CMake command ``find_package(The_lib COMPONENTS The_component)``.
The first thing to do is to discover where Qt is installed. This is done with the regular CMake command
``find_package(The_lib COMPONENTS The_component)``.
Eventually, you can also add custom properties to your target with ``set_target_properties``.
Modules without C++ code, like XML-based applications or activities need to ensure that the necessary modules are
built. To achieve that, we use the `add_dependencies()` CMake command.
built. To achieve that, we use the ``add_dependencies()`` CMake command.
Last, in XML-based in applications, you will find the line:
......
******************************
How to add a new Dependency ?
******************************
Sight dependencies are based on the `ExternalProject <http://www.cmake.org/cmake/help/v3.0/module/ExternalProject.html>`_ concept.
The concept is to create custom targets to build projects in external trees.
Each project has custom steps for download, update/patch, configure, build and install.
You may want to add a new dependency into sight-deps or you may want to add your own folder of dependencies.
.. tip::
You need to know that the main CMakeLists.txt is in sight-deps, and you can add as many additional folders as you want.
Use the ``ADDITONNAL_DEPS`` option in cmake to set the path of your custom dependency.
Add a new dependency in sight-deps
------------------------------------
Adding a new dependency is quite easy, the only things to do is to add a new folder *myNewDeps* and put a CMakeLists.txt
file into it. And you also have to add a add_subdirectory directive in the parent CMakeLists.txt.
The CMakeLists.txt should contain at least:
- cmake_minimum_required(...)
- project(...)
- include(ExternalProject)
- ExternalProject_Add(...)
Here is a simple example from glm :
.. code-block:: cmake
cmake_minimum_required(VERSION 3.0)
project(glmBuilder)
include(ExternalProject)
set(GLM_CMAKE_ARGS ${COMMON_CMAKE_ARGS}
-DBUILD_DOXYGEN:BOOL=OFF
)
set(CACHED_URL https://github.com/g-truc/glm/archive/0.9.8.4.tar.gz)
ExternalProject_Add(
glm
URL ${CACHED_URL}
URL_HASH SHA256=a220e60f8711265595be3221e530d632d5823641ecd46a3a54bc174933bff14c
DOWNLOAD_DIR ${ARCHIVE_DIR}
INSTALL_DIR ${CMAKE_INSTALL_PREFIX}
CMAKE_ARGS ${GLM_CMAKE_ARGS}
)
The important parts are in the *ExternalProject_Add* function:
- URL: is the download link of the sources
- DOWNLOAD_DIR: The folder where the sources will be stored (set globally for all dependencies)
- DEPENDS: The dependencies of the current library (will be compiled before)
- INSTALL_DIR: The folder in which the library will be installed (set globally for all dependencies)
- CMAKE_ARGS: CMake options for library which have a cmake build system
.. note::
Note that in other script you can have much more options like:
- PATCH_COMMAND
- CONFIGURE_COMMAND
- BUILD_COMMAND
- INSTALL_COMMAND
Refer you to the documentation of `ExternalProject <http://www.cmake.org/cmake/help/v3.0/module/ExternalProject.html>`_ for more informations.
Add a custom dependency repository
------------------------------------
You may want to add your own folder of dependencies. In this case your main need to create a
CMakeLists.txt in the root of your folder (myDepsFolder/CMakeLists.txt)
in order to list the subdirectories of your dependencies.
.. code-block:: cmake
cmake_minimum_required(VERSION 3.1)
project(CustomDeps)
list(APPEND SUBDIRECTORIES myDeps1)
list(APPEND SUBDIRECTORIES myDeps2)
# ...
Then when you do a *ccmake* or *cmake-gui* in the build of your dependency, you need to add the path to your custom
repository in the ``ADDITONNAL_DEPS`` option. Then cmake will automatically parse your folder.
......@@ -218,7 +218,7 @@ You can also use this service in C++:
mesher->configure();
mesher->start();
mesher->update();
sight::data::Mesh::sptr obj = mesher->getOutput< sight::data::Mesh >("mesh");
sight::data::Mesh::sptr obj = mesher->getOutput<sight::data::Mesh >("mesh");
mesher->stop();
sight::service::remove( mesher );
......
......@@ -9,6 +9,5 @@ How-Tos
ServiceCreation.rst
ModuleCreation.rst
ApplicationCreation.rst
DepsCreation.rst
Troubleshooting.rst
QtCreatorSetup.rst
......@@ -15,7 +15,7 @@ Prerequisites
.. group-tab:: Linux
Until now, only Ubuntu 20.10 is supported, other distributions may work but have not been
Until now, only Ubuntu 21.10 is fully supported, other distributions may work but have not been
tested.
.. group-tab:: Windows
......@@ -53,22 +53,24 @@ If not already installed (please, note the recommended version):
.. code:: bash
$ sudo apt install libfontconfig1-dev libfreetype6-dev libiconv-hook-dev \
libpng-dev libjpeg-turbo8-dev libtiff5-dev libxml2-dev libexpat1-dev \
libicu-dev libopengl-dev libglew-dev libssl-dev libudev-dev \
libusb-dev libusb-1.0-0-dev libavcodec-dev libavutil-dev \
libavformat-dev libswscale-dev libavresample-dev libavcodec-extra \
ffmpeg libboost-all-dev zlib1g-dev libcppunit-dev libhdf5-dev \
libqt5opengl5-dev libqt5x11extras5-dev qttools5-dev libvtk7-dev \
libgdcm-dev libinsighttoolkit4-dev libann-dev libvtkgdcm-dev \
libvtk7-qt-dev libcamp-dev libglm-dev libogre-1.12-dev libopencv-dev \
libceres-dev qtmultimedia5-dev qt3d5-dev \
qt3d-assimpsceneimport-plugin qt3d-defaultgeometryloader-plugin \
qt3d-gltfsceneio-plugin qt3d-scene2d-plugin qtquickcontrols2-5-dev \
libpcl-dev dcmtk libva-dev libvdpau-dev libopenni2-dev \
libarchive-dev libyaml-cpp-dev librealsense2-dkms \
librealsense2-utils librealsense2-dev libopenigtlink-dev \
libqt5multimedia5-plugins
$ sudo apt install build-essential python3 iputils-ping git git-lfs sudo ssh \
xvfb clang clang-tidy clang-tools git-restore-mtime graphviz doxygen \
cmake-format ccache ninja-build zstd gnuplot uncrustify keyutils \
cppcheck valgrind valgrind-mpi gdb gdbserver glslang-tools gcovr \
libfontconfig1-dev libfreetype6-dev libiconv-hook-dev libpng-dev \
libjpeg-turbo8-dev libtiff5-dev libxml2-dev libexpat1-dev libicu-dev \
libopengl-dev libglew-dev libssl-dev libudev-dev libusb-dev libusb-1.0-0-dev\
libavcodec-dev libavutil-dev libavformat-dev libswscale-dev \
libswresample-dev libavcodec-extra ffmpeg libboost-all-dev zlib1g-dev\
libcppunit-dev libhdf5-dev libqt5opengl5-dev libqt5x11extras5-dev\
libqt5multimedia5-plugins qttools5-dev qtmultimedia5-dev qt3d5-dev \
qt3d-assimpsceneimport-plugin qt3d-defaultgeometryloader-plugin \
qt3d-gltfsceneio-plugin qt3d-scene2d-plugin qtquickcontrols2-5-dev \
libvtk9-dev libvtk9-qt-dev libgdcm-dev libvtkgdcm-tools libinsighttoolkit4-dev dcmtk \
libann-dev libglm-dev libogre-1.12-dev libopencv-dev libceres-dev \
libva-dev libvdpau-dev libopenni2-dev libarchive-dev libyaml-cpp-dev \
libopenigtlink-dev nlohmann-json3-dev libcpprest-dev libgrpc++-dev \
libomp-dev lld lldb protobuf-compiler protobuf-compiler-grpc \
Ogre package is currently bugged and need a little help to allow CMake to use it:
......@@ -95,7 +97,7 @@ If not already installed (please, note the recommended version):
.. code:: bash
cmake -P <BUILD_PATH>\sight\cmake\build\download_deps.cmake
cmake -P <SOURCE_PATH>\cmake\build\download_deps.cmake
This will create a folder in the parent directory named sight-vcpkg-<sha1>, where <sha1> is the commit used to create the export from the sight-vcpkg repository.
......@@ -181,10 +183,7 @@ Setting up your environment
Building your sources
----------------------
* `Clone <http://git-scm.com/book/en/v2/Git-Basics-Getting-a-Git-Repository#Cloning-an-Existing-Repository>`_ the following repository in the (Dev/Src) source folder:
* `sight <https://git.ircad.fr/Sight/sight.git>`_
* `Clone <http://git-scm.com/book/en/v2/Git-Basics-Getting-a-Git-Repository#Cloning-an-Existing-Repository>`_ sight `repository <https://git.ircad.fr/Sight/sight.git>`_ in the (Dev/Src) source folder:
.. code:: bash
......@@ -213,43 +212,41 @@ Configuration
.. group-tab:: Linux
* Set the desired Build directory (e.g. Dev/Build/Debug or Release)
* Set the desired Source directory (e.g. Dev/Src/sight)
* Click on "configure".
* Set the desired Build directory (e.g. Dev/Build/Debug or Release)
* During configure step, choose the generator 'Ninja' to compile Sight sources.
* Set the desired Source directory (e.g. Dev/Src/sight)
.. tip:: An error will be raised, which is perfectly normal if you don't have set ``CMAKE_BUILD_TYPE``
to either ``Debug``, ``Release`` or ``RelWithDebInfo``. You can set it now and click again on "configure".
* Click on "configure".
.. tip:: If you compile an other project than sight, you will need to set the ``sight_DIR``
to the following path <SIGHT_INSTALL_PATH>/lib/cmake/sight.
* During configure step, choose the generator 'Ninja' to compile Sight sources.
.. tip:: An error will be raised, which is perfectly normal if you don't have set ``CMAKE_BUILD_TYPE``
to either ``Debug``, ``Release`` or ``RelWithDebInfo``. You can set it now and click again on "configure".
.. tip:: If you compile an other project than sight, you will need to set the ``sight_DIR``
to the following path ``<SIGHT_INSTALL_PATH>/lib/cmake/sight``.
.. group-tab:: Windows
* Set the desired Build directory (e.g. Dev/Build/Debug or Release)
* Set the desired Build directory (e.g. Dev/Build/Debug or Release)
* Set the desired Source directory (e.g. Dev/Src/sight)
* Set the desired Source directory (e.g. Dev/Src/sight)
* Click on 'Add Entry' and add the entry ``CMAKE_TOOLCHAIN_FILE`` with the value ..\sight-vcpkg-<sha1>\scripts\buildsystems\vcpkg.cmake
* Click on 'Add Entry' and add the entry ``CMAKE_TOOLCHAIN_FILE`` with the value ``..\sight-vcpkg-<sha1>\scripts\buildsystems\vcpkg.cmake``
.. warning::
This must be done on the very first configuration, otherwise, CMake will fail to find the Vcpkg binary packages.
If you miss this step, please erase your build and start again.
.. warning::
This must be done on the very first configuration, otherwise, CMake will fail to find the Vcpkg binary packages.
If you miss this step, please erase your build and start again.
* Click on "configure".
* Click on "configure".
* During the configure step, choose the generator 'Ninja' to compile Sight sources.
* During the configure step, choose the generator 'Ninja' to compile Sight sources.
.. tip:: An error will be raised, which is perfectly normal if you don't have set ``CMAKE_BUILD_TYPE``
to either ``Debug``, ``Release`` or ``RelWithDebInfo``. You can set it now and click again on "configure".
.. tip:: An error will be raised, which is perfectly normal if you don't have set ``CMAKE_BUILD_TYPE``
to either ``Debug``, ``Release`` or ``RelWithDebInfo``. You can set it now and click again on "configure".
.. tip:: If you compile an other project than sight, you will need to set the ``sight_DIR``
to the following path [path to sight install dir]/lib/cmake/sight.
.. tip:: If you compile an other project than sight, you will need to set the ``sight_DIR``
to the following path [path to sight install dir]/lib/cmake/sight.
Generation
......@@ -259,35 +256,35 @@ Generation
.. group-tab:: Linux
* Set the following arguments:
Set the following arguments:
``CMAKE_BUILD_TYPE``:
Set to Debug or Release or RelWithDebInfo.
``CMAKE_INSTALL_PREFIX``:
Set the install location (e.g. Dev/Install/Debug).
Set the install location (e.g. ``Dev/Install/Debug``).
.. tip:: If you are generating an a sight-dependant project that you expect to integrate as a dependance in a third project,
it is recommended to set the same ``CMAKE_INSTALL_PREFIX`` as for sight.
``sight_DIR``:
If you generate a _Sight_ dependent project, set to [path to sight install dir]/lib/cmake/sight.
If you generate a _Sight_ dependent project, set to ``[path to sight install dir]/lib/cmake/sight``.
.. group-tab:: Windows
* Set the following arguments:
Set the following arguments:
``CMAKE_BUILD_TYPE``:
Set to Debug or Release or RelWithDebInfo.
``CMAKE_TOOLCHAIN_FILE``:
Set to ..\sight-vcpkg-<sha1>\scripts\buildsystems\vcpkg.cmake
Set to ``..\sight-vcpkg-<sha1>\scripts\buildsystems\vcpkg.cmake``
``CMAKE_INSTALL_PREFIX``:
Set the install location (e.g. Dev\Install\Debug).
Set the install location (e.g. ``Dev\Install\Debug``).
.. tip:: If you are generating an a sight-dependant project that you expect to integrate as a dependance in a third project,
it is recommanded to set the same ``CMAKE_INSTALL_PREFIX`` as for sight.
``sight_DIR``:
If you generate a sight dependent project, set to [path to sight install dir]\lib\cmake\sight.
``sight_DIR``:
If you generate a sight dependent project, set to ``[path to sight install dir]\lib\cmake\sight``.
* Click on "generate".
......@@ -299,24 +296,24 @@ If you want to launch the ``cmake`` through the command line with the appropriat
.. code:: bash
$ cd Dev/Build/Debug
$ cmake ../../Src/sight -G "Ninja" -DCMAKE_INSTALL_PREFIX=../../Install/Debug -DCMAKE_BUILD_TYPE=Debug -Dsight_DIR=[sight install dir]/lib/cmake/sight
$ cd Dev/Build/Debug
$ cmake ../../Src/sight -G "Ninja" -DCMAKE_INSTALL_PREFIX=../../Install/Debug -DCMAKE_BUILD_TYPE=Debug -Dsight_DIR=[sight install dir]/lib/cmake/sight
.. group-tab:: Windows
.. code:: bash
$ cd Dev\Build\Debug
$ cmake ..\..\Src\sight -G "Ninja" -DCMAKE_TOOLCHAIN_FILE ..\sight-vcpkg-<sha1>\scripts\buildsystems\vcpkg.cmake -DCMAKE_INSTALL_PREFIX=..\..\Install\Debug -DCMAKE_BUILD_TYPE=Debug -Dsight_DIR=[sight install dir]\lib\cmake\sight
$ cd Dev\Build\Debug
$ cmake ..\..\Src\sight -G "Ninja" -DCMAKE_TOOLCHAIN_FILE ..\sight-vcpkg-<sha1>\scripts\buildsystems\vcpkg.cmake -DCMAKE_INSTALL_PREFIX=..\..\Install\Debug -DCMAKE_BUILD_TYPE=Debug -Dsight_DIR=[sight install dir]\lib\cmake\sight
Build
~~~~~~~
* Compile the Sight source using ninja in the console:
Compile Sight source code using ninja in the console:
* Go to the build directory (e.g. Dev/Build/Debug or Release)
* Use "ninja" if you want to compile everything.
* Use "ninja name_of_application" to compile only one of the applications set in CMake.
- Go to the build directory (e.g. ``Dev/Build/Debug`` or ``Dev/Build/Release``)
- Use ``ninja`` if you want to compile everything.
- Use ``ninja name_of_application`` to compile only one application.
.. code:: bash
......@@ -337,7 +334,7 @@ After a successful compilation any previously built application can be launched
.. tip:: If you are running a _Sight_ application which depends on a secondary project which depends on sight, you should add ``-B [secondary project install dir]/share/[secondary project]/``
.. tip:: If you have issues with some path sellection windows which don't open properly, you should add XDG_CURRENT_DESKTOP=qt before your application run.
.. tip:: If you have issues with some file dialogs which don't open properly, you should add XDG_CURRENT_DESKTOP=qt before your application run.
.. code:: bash
......@@ -369,8 +366,8 @@ Generate an installer
Follow these two steps:
* Run *ninja install application_to_install* in the Build directory
* Run *ninja package* in the Build directory
* Run *ninja install application_to_install* in the Build directory
* Run *ninja package* in the Build directory
The installer will be generated in the Build directory.
......
......@@ -2,10 +2,19 @@
Introduction
************
Sight, the **S**\urgical **I**\mage **G**\uidance and **H**\ealthcare **T**\oolkit aims to ease the creation of
applications based on medical imaging.
It includes various features such as 2D and 3D digital image processing, visualization, augmented reality and medical
interaction simulation. It runs on Microsoft Windows and Linux, is written in C++, and features rapid interface design
using XML files. It is freely available under the LGPL.
Sight is mainly developed by the Surgical Data Sciences Team of IRCAD France, where it is used everyday to develop
innovative applications for the operating room and medical research centers.
.. toctree::
:maxdepth: 2
src/applications.rst
src/features.rst
src/applications.rst
src/samples.rst