-
-
Notifications
You must be signed in to change notification settings - Fork 144
Expand file tree
/
Copy pathVolumeLoader.cs
More file actions
154 lines (119 loc) · 5.55 KB
/
VolumeLoader.cs
File metadata and controls
154 lines (119 loc) · 5.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
using UnityEditor;
using UnityEngine;
using System.IO;
using System.Collections.Generic;
using System;
using System.Linq;
using System.Threading.Tasks;
namespace UnityVolumeRendering
{
public class VolumeLoader
{
public static void LoadNRRDDataset(VolumeRenderedObject renderedObject)
{
LoadNRRDDatasetAsync(renderedObject);
}
public static void LoadNIFTIDataset(VolumeRenderedObject renderedObject)
{
LoadNIFTIDatasetAsync(renderedObject);
}
public static void LoadImageFileDataset(VolumeRenderedObject renderedObject)
{
LoadImageFileDatasetAsync(renderedObject);
}
public static void LoadParDataset(VolumeRenderedObject renderedObject)
{
LoadParDatasetAsync(renderedObject);
}
// TODO : Load Dicom Async
public static async void LoadNRRDDatasetAsync(VolumeRenderedObject renderedObject)
{
if (!SimpleITKManager.IsSITKEnabled())
{
if (EditorUtility.DisplayDialog("Missing SimpleITK", "You need to download SimpleITK to load NRRD datasets from the import settings menu.\n" +
"Do you want to open the import settings menu?", "Yes", "No"))
{
ImportSettingsEditorWindow.ShowWindow();
}
}
string file = EditorUtility.OpenFilePanel("Select a dataset to load (.nrrd)", "DataFiles", "");
if (File.Exists(file))
{
Debug.Log("Async dataset load. Hold on.");
using (ProgressHandler progressHandler = new ProgressHandler(new EditorProgressView(), "NRRD import"))
{
progressHandler.ReportProgress(0.0f, "Importing NRRD dataset");
IImageFileImporter importer = ImporterFactory.CreateImageFileImporter(ImageFileFormat.NRRD);
VolumeDataset dataset = await importer.ImportAsync(file);
renderedObject.SetSegmentationDataset(dataset);
progressHandler.ReportProgress(0.8f, "Loading object");
}
}
else
{
Debug.LogError("File doesn't exist: " + file);
}
}
public static async void LoadNIFTIDatasetAsync(VolumeRenderedObject renderedObject)
{
string file = EditorUtility.OpenFilePanel("Select a dataset to load (.nii)", "DataFiles", "");
if (File.Exists(file))
{
Debug.Log("Async dataset load. Hold on.");
using (ProgressHandler progressHandler = new ProgressHandler(new EditorProgressView(), "NIFTI import"))
{
progressHandler.ReportProgress(0.0f, "Importing NIfTI dataset");
IImageFileImporter importer = ImporterFactory.CreateImageFileImporter(ImageFileFormat.NIFTI);
VolumeDataset dataset = await importer.ImportAsync(file);
renderedObject.SetSegmentationDataset(dataset);
progressHandler.ReportProgress(0.0f, "Loaded object");
}
}
else
{
Debug.LogError("File doesn't exist: " + file);
}
}
public static async void LoadImageFileDatasetAsync(VolumeRenderedObject renderedObject)
{
string file = EditorUtility.OpenFilePanel("Select a dataset to load", "DataFiles", "");
if (File.Exists(file))
{
Debug.Log("Async dataset load. Hold on.");
using (ProgressHandler progressHandler = new ProgressHandler(new EditorProgressView(), "Image file import"))
{
progressHandler.ReportProgress(0.0f, "Importing image file dataset");
IImageFileImporter importer = ImporterFactory.CreateImageFileImporter(ImageFileFormat.Unknown);
VolumeDataset dataset = await importer.ImportAsync(file);
renderedObject.SetSegmentationDataset(dataset, progressHandler);
progressHandler.ReportProgress(0.0f, "Loaded object");
}
}
else
{
Debug.LogError("File doesn't exist: " + file);
}
}
public static async void LoadParDatasetAsync(VolumeRenderedObject renderedObject)
{
string file = EditorUtility.OpenFilePanel("Select a dataset to load", "DataFiles", "");
if (File.Exists(file))
{
Debug.Log("Async dataset load. Hold on.");
using (ProgressHandler progressHandler = new ProgressHandler(new EditorProgressView(), "AVSP import"))
{
progressHandler.ReportProgress(0.0f, "Importing VASP dataset");
IImageFileImporter importer = ImporterFactory.CreateImageFileImporter(ImageFileFormat.VASP);
VolumeDataset dataset = await importer.ImportAsync(file);
renderedObject.SetSegmentationDataset(dataset, progressHandler);
progressHandler.ReportProgress(0.0f, "Loaded object");
}
}
else
{
Debug.LogError("File doesn't exist: " + file);
}
}
// TODO : Load Sequence Async
}
}