Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ci e2e flake #6

Merged
merged 117 commits into from
Oct 23, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
117 commits
Select commit Hold shift + click to select a range
b9a87c9
chore(ci): install canvas deps for macos
PaulHax Apr 26, 2024
1bbb245
chore(ci): update actions versions
PaulHax Apr 26, 2024
52bf78f
chore(ci): update baseline image for linux
PaulHax Apr 26, 2024
481d4be
chore(ci): different artifact name per os
PaulHax Apr 26, 2024
0934933
Merge pull request #585 from PaulHax/ci-fixes
floryst Apr 26, 2024
6658f90
fix(windowing): more robust loading of multi-component DICOMs
PaulHax Apr 13, 2024
4bb28a5
fix(useWindowingConfigInitializer): reuse vtk fastComputeRange
PaulHax Apr 26, 2024
fccefa9
Merge pull request #578 from PaulHax/multi-component-hax
floryst Apr 29, 2024
d0a4578
fix(VtkSegmentationSliceRepresentation): avoid error after deleting s…
PaulHax Apr 11, 2024
662ff2a
feat(load-data): try to convert SEG DICOMs to Segment Groups
PaulHax Apr 11, 2024
06d764c
feat(segmentGroups): resample when converting to image
PaulHax Apr 11, 2024
9dbe7ac
feat(segmentGroups): create segments from converted image
PaulHax Apr 11, 2024
f127667
feat(load-data): prefer DICOMs with more slices as primary selection
PaulHax Apr 12, 2024
62c8747
fix(load-data): only add SEG modalities as segment groups
PaulHax Apr 12, 2024
d2c77aa
feat(SegmentGroupControls): add DICOMs to convertable list
PaulHax Apr 12, 2024
4fa4cd6
fix(segmentGroups): avoid endless spinner after switching primary sel…
PaulHax Apr 12, 2024
2dd813e
refactor: rename idsAsSelections and use SegmentGroupMetadata
PaulHax Apr 22, 2024
616ae77
refactor(datasets): explicitly call remove in sub stores
PaulHax Apr 23, 2024
e7fb0d3
fix(load-data): when loading non-dicom files
PaulHax Apr 24, 2024
35fa47f
Merge pull request #576 from PaulHax/auto-seg
PaulHax Apr 29, 2024
925efb6
feat(segmentGroups): create segments from converted image
PaulHax Apr 11, 2024
c9d705b
feat(load-data): name match DataSources as segment groups
PaulHax Apr 25, 2024
f53f5e4
refactor(load-data): rename function prefixes to filter and find
PaulHax Apr 25, 2024
72c920c
feat(configJson): add io.matchNames option
PaulHax Apr 26, 2024
10097fe
fix(load-data): avoid circular import
PaulHax Apr 26, 2024
6d2ea50
fix(loadUserFiles): no named segmentation image as primary
PaulHax Apr 26, 2024
73c7bf8
feat(configJson): configurable extension for auto seg group
PaulHax Apr 29, 2024
afa8253
chore(deps): bump chromedriver version
PaulHax Apr 30, 2024
cb6356f
Merge pull request #588 from PaulHax/auto-seg-by-name
floryst May 2, 2024
67f822a
feat(PolygonWidget): Add freehand dropping of points
PaulHax Apr 30, 2024
6530a0d
perf(polygon): decimate polygon points after placing
PaulHax May 1, 2024
7ff3a48
fix(polygon): use pixel size during line decimation
PaulHax May 1, 2024
253d261
feat(polygon): decimate with smallest pixel dimension
PaulHax May 2, 2024
7dc8823
feat(polygon): only show handles on hover
PaulHax May 2, 2024
f25fb04
Merge pull request #589 from PaulHax/freehand
floryst May 10, 2024
df7a118
fix: apply reset views button to slices and volume views
PaulHax May 13, 2024
a7b6290
Merge pull request #592 from PaulHax/reset-views
floryst May 14, 2024
1f02f96
feat: unify data IDs
floryst May 20, 2024
e4da486
feat(state): bump manifest version to 4.0.0
floryst May 21, 2024
9e650be
Merge pull request #594 from Kitware/unify-ids
floryst May 21, 2024
3c59f2b
feat(ControlStrip): Moved menu button to ControlStrip
Jun 7, 2024
6b4dcef
chore: remove canvas and msedgedriver
floryst Jun 18, 2024
8667972
Merge pull request #609 from Kitware/drop-canvas-msedgedriver
floryst Jun 18, 2024
ee0dbef
Revert "feat(ControlStrip): Moved menu button to ControlStrip"
Jun 19, 2024
93a0e02
feat(ControlStrip): Revert changes and always show menu button
Jun 19, 2024
d7f0c47
docs: migrate site to vitepress
floryst Jun 24, 2024
2e361bf
Merge pull request #613 from Kitware/migrate-docs
floryst Jun 24, 2024
177fe0e
docs(vitepress): fix base url
floryst Jun 27, 2024
53950c0
Merge pull request #605 from lchauvin/collapsible-menu
floryst Jun 27, 2024
c411384
Merge pull request #616 from Kitware/fix-vitepress-base-url
floryst Jun 27, 2024
4de16d7
docs: fix bad rendering
floryst Jun 28, 2024
c459681
chore(build): handle pkglock v2 and v3
floryst Jun 28, 2024
f8d81b8
Merge pull request #619 from Kitware/minor-fixes
floryst Jul 2, 2024
7597b57
feat(polygon): add merge polygon context menu option
PaulHax Jun 26, 2024
edddb20
feat(polygon): add frameOfReference space conversion function
PaulHax Jun 26, 2024
ad64d5a
feat(polygon): merge polygons with new dep polyclip-ts
PaulHax Jun 27, 2024
91d7976
refactor(polygon): move mergable filter logic to store
PaulHax Jun 27, 2024
01399ff
fix(polygons): only merge if polygons overlap
PaulHax Jul 2, 2024
9dc8127
feat(polygons): hold down key to auto merge new polygon
PaulHax Jul 2, 2024
11d93ed
feat(polygons): make merge key configurable
PaulHax Jul 2, 2024
c351d64
refactor(polygon): use polybool for merging
PaulHax Jul 3, 2024
50d897f
fix(polygon): merge overlapping polygons better
PaulHax Jul 5, 2024
72bf66b
Merge pull request #617 from PaulHax/merge-polygon
floryst Jul 9, 2024
5164af0
fix: typo
Jackie733 Jul 26, 2024
b14c519
fix(useKeyboardShortcuts): allow for shift key plus special characters
PaulHax Jul 26, 2024
58bdb06
Merge pull request #629 from PaulHax/special-char-shortcuts
floryst Jul 29, 2024
72b5fd6
Merge pull request #628 from Jackie733/main
floryst Jul 29, 2024
032df3e
chore(vite): remove extra package-lock check
floryst Jul 29, 2024
e420879
refactor(dicom): favor module-scoped worker
floryst Jul 29, 2024
869d2fb
chore(itk): update and pin itk-wasm pkgs
floryst Jul 29, 2024
a9b5d96
fix(io): do not terminate global worker
floryst Jul 22, 2024
8d8319b
Merge pull request #631 from Kitware/floryst-patch-1
floryst Jul 30, 2024
55016b7
fix(readWriteImage): updated image-io
floryst Jul 30, 2024
4dbb960
Merge pull request #630 from Kitware/improve-itk-dicom-usage
floryst Jul 30, 2024
8d2b7c0
fix(dicom): handle missing w/l tags
floryst Aug 6, 2024
c1349f3
Merge pull request #634 from Kitware/fix-empty-wl
floryst Aug 8, 2024
c4a60a0
Remove duplicate slashes
Jackie733 Aug 30, 2024
a5d409c
Merge pull request #645 from Jackie733/main
floryst Aug 30, 2024
4c3b979
docs: fix image;s error relative path
KazooTTT Sep 2, 2024
f78981a
Merge pull request #646 from KazooTTT/docs/path-update
floryst Sep 5, 2024
deaa77c
feat(camera): Add option to disable camera auto reset
lchauvin Sep 11, 2024
348c8a5
feat(camera): Allow camera and image synchronization
Sep 11, 2024
3575ff5
feat(camera): Prettified
Sep 26, 2024
7be4abe
Fix typo
Sep 26, 2024
5675ca4
feat(segment-groups): add opacity slider per segment group
PaulHax Sep 26, 2024
fb9aca4
feat(segment-groups): add visibility toggle button
PaulHax Sep 26, 2024
75ee5a1
refactor(segment-groups): add coloringStore.initConfig
PaulHax Sep 27, 2024
74c9998
chore(deps): update dependency polybool to v2.0.11
PaulHax Sep 30, 2024
62bf6bd
fix(VolumeRendering): on switching dataset, ensure CTF preset valid
PaulHax Oct 2, 2024
8ebf62e
Merge pull request #654 from PaulHax/seg-group-trans
floryst Oct 2, 2024
a7535a4
Merge pull request #656 from PaulHax/preset-fix
floryst Oct 2, 2024
b5e53d9
chore(deps): update itk-wasm and related packages
PaulHax Sep 25, 2024
4f0ebf5
Prettify
Oct 3, 2024
9a3982a
feat(dicom): run readOverlappingSegmentation for SEG
PaulHax Sep 25, 2024
589306f
feat(segmentGroups): use SEG metadata for segments label and color
PaulHax Oct 3, 2024
445fa47
fix(datasets-dicom): pick one component when overlapping SEG
PaulHax Oct 3, 2024
d193233
Merge pull request #653 from PaulHax/wasm-seg
floryst Oct 8, 2024
e7e1b78
Merge pull request #648 from lchauvin/disable-camera-auto-reset
floryst Oct 8, 2024
81e2e3c
fix(crop): wait for DICOM image load
floryst Oct 9, 2024
a77aad8
Merge pull request #652 from lchauvin/synchronize-cameras-images
floryst Oct 9, 2024
d4b0cc1
Merge pull request #658 from Kitware/fix-cropping-dicom
floryst Oct 9, 2024
2e8c887
fix(updateFileMimeType): overwrite mimetype
floryst Oct 15, 2024
ea41c89
fix: vtk.js version not showing up
floryst Oct 15, 2024
aae2183
fix(PatientStudyVolumeBrowser): show modality if thumbnail fails
PaulHax Oct 17, 2024
207067c
feat(SegmentList): add opacity slider for selected segment
PaulHax Oct 17, 2024
80fc1be
feat(segmentGroups): add visible property
PaulHax Oct 17, 2024
98a76e4
feat(SegmentList): add global visible toggle button
PaulHax Oct 17, 2024
38d46a7
feat(SegmentGroupControls): move opacity slider above list
PaulHax Oct 17, 2024
155f694
feat(paint): select first available segment group
PaulHax Oct 17, 2024
6a6e98f
feat(global.css): increase tooltip background opacity
PaulHax Oct 21, 2024
c8777aa
feat(SegmentGroupControls): ellipsis + tooltip for long seg names
PaulHax Oct 21, 2024
1bc37fe
refactor(paint): consolidate ensure segment group is active if exists…
PaulHax Oct 23, 2024
80021a2
Merge pull request #669 from PaulHax/segment-opacity
PaulHax Oct 23, 2024
379504f
Merge pull request #665 from Kitware/fix-aboutbox-vtkjs-version
floryst Oct 23, 2024
b649c65
Merge pull request #664 from Kitware/fix-nii-gz-files
floryst Oct 23, 2024
011991c
Merge pull request #668 from PaulHax/thumbnail-fail
floryst Oct 23, 2024
41a6c37
Merge pull request #671 from PaulHax/tooltip-opacity
floryst Oct 23, 2024
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 .github/workflows/checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ jobs:
runs-on: ubuntu-20.04
name: Code check and tests
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Setup node
uses: actions/setup-node@v1
with:
Expand Down
9 changes: 6 additions & 3 deletions .github/workflows/e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,12 @@ jobs:
env:
DOWNLOAD_TIMEOUT: 60000
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install node-canvas deps (macos)
if: matrix.os != 'ubuntu-20.04'
run: brew install pkg-config cairo pango libpng jpeg giflib librsvg pixman
- name: Install dependencies
run: npm ci
env:
Expand All @@ -34,9 +37,9 @@ jobs:
run: npm run test:e2e:chrome
- name: Archive test results
if: success() || failure()
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
continue-on-error: true
with:
name: image_comparison_results
name: image_comparison_results_${{ matrix.os }}
path: .tmp
retention-days: 5
4 changes: 2 additions & 2 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,11 @@ jobs:
- name: Install dependencies
run: npm ci
- name: Build docs
run: npm run doc
run: npm run docs:build
- name: Upload pages artifact
uses: actions/upload-pages-artifact@v1
with:
path: './documentation/build-tmp/public'
path: './docs/.vitepress/dist'

deploy:
name: Deploy Docs
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# VolView

![A screenshot of a sample VolView session](./documentation/content/gallery/VolView-Overview.jpg)
![A screenshot of a sample VolView session](./docs/assets/VolView-Overview.jpg)

## Try it

Expand Down
2 changes: 2 additions & 0 deletions docs/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
.vitepress/dist
.vitepress/cache
66 changes: 66 additions & 0 deletions docs/.vitepress/config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
import { defineConfig } from 'vitepress';

const GA_ID = 'G-MH4N62W0Z9';

// https://vitepress.dev/reference/site-config
export default defineConfig({
title: 'VolView',
base: '/VolView',
description:
'Open-source and freely available radiological viewer that runs in your web browser and provide photo-realistic, interactive, 3D visualizations.',

ignoreDeadLinks: 'localhostLinks',

head: [
['link', { rel: 'icon', href: '/favicon.ico' }],
[
'script',
{
async: 'true',
src: `https://www.googletagmanager.com/gtag/js?id=${GA_ID}`,
},
],
[
'script',
{},
`window.dataLayer = window.dataLayer || [];\nfunction gtag(){dataLayer.push(arguments);}\ngtag('js', new Date());\ngtag('config', '${GA_ID}');`,
],
],

themeConfig: {
logo: './logo.svg',
nav: [{ text: 'Live Demo', link: 'https://volview.kitware.app' }],

sidebar: [
{
text: 'Introduction',
items: [
{ text: 'What is VolView?', link: '/' },
{ text: 'Quick Start Guide', link: '/quick_start_guide' },
{ text: 'Screenshots', link: '/gallery' },
],
},
{
text: 'Features & Operation',
items: [
{ text: 'Welcome Screen', link: '/welcome_screen' },
{ text: 'Loading Data', link: '/loading_data' },
{ text: 'Toolbar', link: '/toolbar' },
{ text: 'Mouse/Keyboard Controls', link: '/mouse_controls' },
{ text: 'Cinematic Rendering', link: '/rendering' },
{ text: 'State Files', link: '/state_files' },
{ text: 'Remote Server Capabilities', link: '/server' },
{ text: 'Configuration File', link: '/configuration_file' },
],
},
],

socialLinks: [
{ icon: 'github', link: 'https://github.com/Kitware/VolView' },
],

footer: {
copyright: 'Copyright © 2020-PRESENT <strong>Kitware, Inc.</strong>',
},
},
});
18 changes: 18 additions & 0 deletions docs/.vitepress/theme/custom.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
.gallery {
margin-top: 8px;
}

.gallery img {
width: 32%;
display: inline-block;
padding: 5px;
}

.gallery br {
display: none;
}

footer.VPFooter {
display: block !important;
border: none !important;
}
4 changes: 4 additions & 0 deletions docs/.vitepress/theme/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import DefaultTheme from 'vitepress/theme';
import './custom.css';

export default DefaultTheme;
File renamed without changes.
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes.
File renamed without changes
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Configuration JSON File

By loading a JSON file, you can set VolView's:
By loading a JSON file, you can set VolView's configuration:

- Starting view layout (Axial Only, 3D Primary, etc).
- Labels for tools
Expand Down Expand Up @@ -49,10 +49,28 @@ VolView will include in the volview.zip file.
}
```

These are the supported file formats:
Working segment group file formats:

hdf5, iwi.cbor, mha, nii, nii.gz, nrrd, vtk

## Automatic Segment Groups by File Name

When loading files, VolView can automatically convert images to segment groups
if they follow a naming convention. For example, an image with name like `foo.segmentation.bar`
will be converted to a segment group for a base image named like `foo.baz`.
The `segmentation` extension is defined by the `io.segmentGroupExtension` key, which takes a
string. Files `foo.[segmentGroupExtension].bar` will be automatilly converted to segment groups for a base image named `foo.baz`. The default is `''` and will disable the feature.

This will define `myFile.seg.nrrd` as a segment group for a `myFile.nii` base file.

```json
{
"io": {
"segmentGroupExtension": "seg"
}
}
```

## Keyboard Shortcuts

Configure the keys to activate tools, change selected labels, and more.
Expand Down
41 changes: 41 additions & 0 deletions docs/gallery.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Screenshot Gallery

<div class="gallery">
<a href="./assets/VolView-Overview.jpg"><img alt="Overview" src="./assets/VolView-Overview.jpg"></a>
<a href="./assets/01-volview-welcome.jpg"><img alt="Welcome" src="./assets/01-volview-welcome.jpg"></a>
<a href="./assets/01-volview-welcome-notes.jpg"><img alt="Welcome notes" src="./assets/01-volview-welcome-notes.jpg"></a>
<a href="./assets/02-volview-about.jpg"><img alt="About" src="./assets/02-volview-about.jpg"></a>
<a href="./assets/02-volview-notifications.jpg"><img alt="Notifications" src="./assets/02-volview-notifications.jpg"></a>
<a href="./assets/02-volview-settings.jpg"><img alt="Settings" src="./assets/02-volview-settings.jpg"></a>
<a href="./assets/03-volview-sample-datasets.jpg"><img alt="Sample datasets" src="./assets/03-volview-sample-datasets.jpg"></a>
<a href="./assets/04-volview-active-data.jpg"><img alt="Active data" src="./assets/04-volview-active-data.jpg"></a>
<a href="./assets/05-volview-select-data-to-delete.jpg"><img alt="Select data to delete" src="./assets/05-volview-select-data-to-delete.jpg"></a>
<a href="./assets/06-volview-corner-annotation.jpg"><img alt="Corner annotation" src="./assets/06-volview-corner-annotation.jpg"></a>
<a href="./assets/07-volview-layout.jpg"><img alt="Layout" src="./assets/07-volview-layout.jpg"></a>
<a href="./assets/09-volview-layout-3DPrimary.jpg"><img alt="3D primary" src="./assets/09-volview-layout-3DPrimary.jpg"></a>
<a href="./assets/10-volview-wl-pan-zoom.jpg"><img alt="W/L Pan Zoom" src="./assets/10-volview-wl-pan-zoom.jpg"></a>
<a href="./assets/10-volview-wl-pan-zoom-notes.jpg"><img alt="W/L Pan Zoom notes" src="./assets/10-volview-wl-pan-zoom-notes.jpg"></a>
<a href="./assets/11-volview-paint.jpg"><img alt="Paint" src="./assets/11-volview-paint.jpg"></a>
<a href="./assets/11-volview-paint-notes.jpg"><img alt="Paint notes" src="./assets/11-volview-paint-notes.jpg"></a>
<a href="./assets/12-volview-paint-options.jpg"><img alt="Paint options" src="./assets/12-volview-paint-options.jpg"></a>
<a href="./assets/13-volview-crop.jpg"><img alt="Crop" src="./assets/13-volview-crop.jpg"></a>
<a href="./assets/14-volview-ruler.jpg"><img alt="Ruler" src="./assets/14-volview-ruler.jpg"></a>
<a href="./assets/15-volview-crosshairs.jpg"><img alt="Crosshairs" src="./assets/15-volview-crosshairs.jpg"></a>
<a href="./assets/16-volview-rendering.jpg"><img alt="Rendering" src="./assets/16-volview-rendering.jpg"></a>
<a href="./assets/17-volview-colormap.jpg"><img alt="Colormap" src="./assets/17-volview-colormap.jpg"></a>
<a href="./assets/17-volview-colormap-notes.jpg"><img alt="Colormap notes" src="./assets/17-volview-colormap-notes.jpg"></a>
<a href="./assets/17-volview-opacity.jpg"><img alt="Opacity" src="./assets/17-volview-opacity.jpg"></a>
<a href="./assets/17-volview-opacity-notes.jpg"><img alt="Opacity notes" src="./assets/17-volview-opacity-notes.jpg"></a>
<a href="./assets/17-volview-opacity2.jpg"><img alt="Opacity 2" src="./assets/17-volview-opacity2.jpg"></a>
<a href="./assets/18-volview-presets.jpg"><img alt="Presets" src="./assets/18-volview-presets.jpg"></a>
<a href="./assets/19-volview-color.jpg"><img alt="Color" src="./assets/19-volview-color.jpg"></a>
<a href="./assets/19-volview-color2.jpg"><img alt="Color 2" src="./assets/19-volview-color2.jpg"></a>
<a href="./assets/20-volview-lightfollowcamera0.jpg"><img alt="Light follows camera 0" src="./assets/20-volview-lightfollowcamera0.jpg"></a>
<a href="./assets/20-volview-lightfollowcamera1.jpg"><img alt="Light follows camera 1" src="./assets/20-volview-lightfollowcamera1.jpg"></a>
<a href="./assets/20-volview-lightfollowcamera2.jpg"><img alt="Light follows camera 2" src="./assets/20-volview-lightfollowcamera2.jpg"></a>
<a href="./assets/20-volview-lightfollowcamera3.jpg"><img alt="Light follows camera 3" src="./assets/20-volview-lightfollowcamera3.jpg"></a>
<a href="./assets/21-volview-hybrid0.0.jpg"><img alt="Hybrid @ 0.0" src="./assets/21-volview-hybrid0.0.jpg"></a>
<a href="./assets/21-volview-hybrid0.5.jpg"><img alt="Hybrid @ 0.5" src="./assets/21-volview-hybrid0.5.jpg"></a>
<a href="./assets/21-volview-hybrid1.0.jpg"><img alt="Hybrid @ 1.0" src="./assets/21-volview-hybrid1.0.jpg"></a>
<a href="./assets/21-volview-hybrid-final.jpg"><img alt="Hybrid final" src="./assets/21-volview-hybrid-final.jpg"></a>
</div>
5 changes: 2 additions & 3 deletions documentation/content/doc/index.md → docs/index.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
title: What is VolView?
----
# What is VolView?

VolView is an open source radiological viewer developed for clinical professionals. With VolView, you can gain a deeper understanding of your data through high-quality, interactive visualizations, including cinematic volume renderings. Since VolView runs in your browser, you do not need to install software, and your data stays securely on your machine.

![Welcome](../gallery/VolView-Overview.jpg)
![Welcome](./assets/VolView-Overview.jpg)

## Features

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,4 +66,4 @@ To layer images:
1. On the Data tab, click the Add Layer button on the upper layer dataset.
1. Under the Rendering tab, an opacity slider changes the transparency of the upper layer.

![Add Layer](../images/add-layer.jpg)
![Add Layer](./assets/add-layer.jpg)
Original file line number Diff line number Diff line change
@@ -1,11 +1,5 @@
# Keyboard shortcuts

<style>
table {
width: 100%;
}
</style>

## Data management

| Shortcut | Action |
Expand Down
Binary file added docs/public/favicon.ico
Binary file not shown.
File renamed without changes
Original file line number Diff line number Diff line change
@@ -1,15 +1,8 @@
title: Quick Start Guide
----

<style>
table {
width: 100%;
}
</style>
# Quick Start Guide

The Welcome screen for VolView is annotated in the image shown below. More information on the components of the welcome screen is provided in the ["Welcome Screen"](welcome_screen.html) documentation.

![Welcome](../gallery/01-volview-welcome-notes.jpg)
![Welcome](./assets/01-volview-welcome-notes.jpg)

Starting from the welcome screen, there are four simple constructs needed to generate stunning and insightful visualizations from DICOM data.
1. Loading data
Expand All @@ -36,13 +29,13 @@ VolView can also load many other image data formats. To learn more, see the doc

The three main radiological controls are as following:

* Layout: This toolbar button is illustrated below. Use it to choose between four useful window arrangements. As in all things, if you have a particular layout that you would like to see added, please make a feature request on our ["issue tracker"](https://github.com/Kitware/VolView/issues). ![Layout](../gallery/07-volview-layout-notes.jpg)
* Layout: This toolbar button is illustrated below. Use it to choose between four useful window arrangements. As in all things, if you have a particular layout that you would like to see added, please make a feature request on our [issue tracker](https://github.com/Kitware/VolView/issues). ![Layout](./assets/07-volview-layout-notes.jpg)

* 2D Left mouse button: Window / Level, Pan, Zoom, or Crosshairs: Select these options to control the function of the left mouse button in the 2D windows. ![Window-Level, Pan, Zoom, Crosshairs](../gallery/10-volview-wl-pan-zoom-notes.jpg)
* 2D Left mouse button: Window / Level, Pan, Zoom, or Crosshairs: Select these options to control the function of the left mouse button in the 2D windows. ![Window-Level, Pan, Zoom, Crosshairs](./assets/10-volview-wl-pan-zoom-notes.jpg)

* 2D Annotations: Paint and Ruler: When the ruler tool selected, the left mouse button is used to place and adjust ruler end-markers. Right clicking on a end-marker displays a pop-up menu for deleting that ruler. Switch to the "Annotations" tab to see a list of annotations made to currently loaded data. Select the location icon next to a listed ruler to jump to its slice. Select the trashcan to delete that ruler. When the paint tool is selected, you can paint in any 2D window. Click on the paint tool a second time to bring up a menu of colors and adjust the brush size. ![Paint and Ruler](../gallery/11-volview-paint-notes.jpg)
* 2D Annotations: Paint and Ruler: When the ruler tool selected, the left mouse button is used to place and adjust ruler end-markers. Right clicking on a end-marker displays a pop-up menu for deleting that ruler. Switch to the "Annotations" tab to see a list of annotations made to currently loaded data. Select the location icon next to a listed ruler to jump to its slice. Select the trashcan to delete that ruler. When the paint tool is selected, you can paint in any 2D window. Click on the paint tool a second time to bring up a menu of colors and adjust the brush size. ![Paint and Ruler](./assets/11-volview-paint-notes.jpg)

* 3D Crop: Select this tool to adjust the extent of data shown in the 3D rendering. In the 3D window you can pick and move the corner, edge, and side markers to make adjustments. In the 2D windows, grab and move the edges of the bounding box overlaid on the data. ![Crop](../gallery/13-volview-crop.jpg)
* 3D Crop: Select this tool to adjust the extent of data shown in the 3D rendering. In the 3D window you can pick and move the corner, edge, and side markers to make adjustments. In the 2D windows, grab and move the edges of the bounding box overlaid on the data. ![Crop](./assets/13-volview-crop.jpg)

[***Watch the video!***](https://youtu.be/Bj4ijh_VLUQ)

Expand All @@ -53,15 +46,15 @@ For information on the toolbar, see the documentation on ["Mouse controls"](mous

VolView reads the DICOM tags of your data to determine appropriate preset parameter values for cinematic volume rendering for your data, but often you will want to tweak those presets to emphasize specific details. We recommend the following sequence of tweaks to improve your visualizations.

1. Cinematic volume rendering involves two "transfer functions": one maps the recorded intensity values (e.g., CT hounsfield units) to opacity and the other maps recorded intensity values to color. Both can be adjusted using the controls at the top of the Rendering tab. The graph at the top shows a histogram of the recorded intensity values in light gray and the current opacity transfer function as an overlaid curve in black. In that graph, beneath the black curve, is a depiction of the color transfer function. ![Cinematic](../gallery/16-volview-rendering.jpg)
a. Begin by adjusting the opacity transfer function by a press-and-drag right/left on the top graph. ![Opacity](../gallery/17-volview-opacity-notes.jpg)
b. Then adjust the color transfer function by moving the blue dots on the colorbar beneath the graph. ![Color](../gallery/17-volview-colormap-notes.jpg)
1. Cinematic volume rendering involves two "transfer functions": one maps the recorded intensity values (e.g., CT hounsfield units) to opacity and the other maps recorded intensity values to color. Both can be adjusted using the controls at the top of the Rendering tab. The graph at the top shows a histogram of the recorded intensity values in light gray and the current opacity transfer function as an overlaid curve in black. In that graph, beneath the black curve, is a depiction of the color transfer function. ![Cinematic](./assets/16-volview-rendering.jpg)
a. Begin by adjusting the opacity transfer function by a press-and-drag right/left on the top graph. ![Opacity](./assets/17-volview-opacity-notes.jpg)
b. Then adjust the color transfer function by moving the blue dots on the colorbar beneath the graph. ![Color](./assets/17-volview-colormap-notes.jpg)

2. You may decide that the colormaps and/or transfer function aren't suitable for your data. Click on the "Presets" bar to expand and show the available presets that offer alternative opacity and color transfer functions. ![Presets](../gallery/18-volview-presets.jpg)
2. You may decide that the colormaps and/or transfer function aren't suitable for your data. Click on the "Presets" bar to expand and show the available presets that offer alternative opacity and color transfer functions. ![Presets](./assets/18-volview-presets.jpg)
3. Next, the lighting can be controlled.
a. Ambient lighting is the general brightness of the scene.
b. Diffuse lighting controls how the light reflects off the data. It is influenced by the position of the light relative to the orientation of the data's local surface.
c. Light-follows-camera can be enabled / disabled to create shadows that highlights details within the data. When enabled, the light will be positioned in-line with the camera. When disabled, the last position of the light stays fixed relative to the data, even if the camera is moved. With light-follows-camera enabled, here is a view when the light is following the camera: ![Default Lighting](../gallery/20-volview-lightfollowcamera1.jpg) By moving the camera (and thereby the light) to the front of the data and then disabling light-follows-camera, the view should look light this: ![Light Setup](../gallery/20-volview-lightfollowcamera2.jpg) Then moving back to the side view will show shadows that emphasize depth and details: ![Shadows](../gallery/20-volview-lightfollowcamera3.jpg)
c. Light-follows-camera can be enabled / disabled to create shadows that highlights details within the data. When enabled, the light will be positioned in-line with the camera. When disabled, the last position of the light stays fixed relative to the data, even if the camera is moved. With light-follows-camera enabled, here is a view when the light is following the camera: ![Default Lighting](./assets/20-volview-lightfollowcamera1.jpg) By moving the camera (and thereby the light) to the front of the data and then disabling light-follows-camera, the view should look light this: ![Light Setup](./assets/20-volview-lightfollowcamera2.jpg) Then moving back to the side view will show shadows that emphasize depth and details: ![Shadows](./assets/20-volview-lightfollowcamera3.jpg)

4. Advanced, you can also explore alternative cinematic rendering methods. Detailed documentation will soon follow that describes these methods and demonstrates their utility for various types of medical data.
a. Standard
Expand Down
Loading
Loading