Skip to content

Commit c7ba534

Browse files
bruyeretfinetjul
authored andcommitted
feat(VolumeMapper): Add sphere volume
1 parent 3b61b5e commit c7ba534

File tree

1 file changed

+20
-7
lines changed
  • Sources/Rendering/Core/VolumeMapper/example

1 file changed

+20
-7
lines changed

Sources/Rendering/Core/VolumeMapper/example/index.js

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,7 @@ Object.keys(ColorMixPreset).forEach((key) => {
162162
optionElem.label = 'Default';
163163
optionElem.value = '';
164164
presetSelectElem.appendChild(optionElem);
165+
presetSelectElem.value = optionElem.value;
165166
}
166167

167168
const setColorMixPreset = (presetKey) => {
@@ -172,8 +173,8 @@ const setColorMixPreset = (presetKey) => {
172173

173174
volumeSelectElem.addEventListener('change', () => {
174175
const { comp, data } = volumeOptions[volumeSelectElem.value];
175-
setColorMixPreset('');
176176
if (comp === 1) {
177+
setColorMixPreset('');
177178
presetSelectElem.style.display = 'none';
178179
} else {
179180
presetSelectElem.style.display = 'block';
@@ -200,21 +201,29 @@ reader.setUrl(`${__BASE_PATH__}/data/volume/LIDC2.vti`).then(() => {
200201
const baseComp = 1;
201202
const baseData = array.getData();
202203
const newComp = 2;
203-
const newData = new Float32Array(newComp * baseData.length);
204+
const cubeData = new Float32Array(newComp * baseData.length);
205+
const sphereData = new Float32Array(newComp * baseData.length);
204206
const dims = imageData.getDimensions();
205207
for (let z = 0; z < dims[2]; ++z) {
206208
for (let y = 0; y < dims[1]; ++y) {
207209
for (let x = 0; x < dims[0]; ++x) {
208210
const iTuple = x + dims[0] * (y + dims[1] * z);
209-
newData[iTuple * newComp + 0] = baseData[iTuple];
210-
const isInMask =
211+
const isInCube =
211212
x >= 0.3 * dims[0] &&
212213
x <= 0.7 * dims[0] &&
213214
y >= 0.3 * dims[1] &&
214215
y <= 0.7 * dims[1] &&
215216
z >= 0.3 * dims[2] &&
216217
z <= 0.7 * dims[2];
217-
newData[iTuple * newComp + 1] = isInMask ? 1 : 0;
218+
cubeData[iTuple * newComp + 0] = baseData[iTuple];
219+
cubeData[iTuple * newComp + 1] = isInCube ? 1 : 0;
220+
const isInSphere =
221+
(x / dims[0] - 0.5) ** 2 +
222+
(y / dims[1] - 0.5) ** 2 +
223+
(z / dims[2] - 0.5) ** 2 <
224+
0.2 ** 2;
225+
sphereData[iTuple * newComp + 0] = baseData[iTuple];
226+
sphereData[iTuple * newComp + 1] = isInSphere ? 1 : 0;
218227
}
219228
}
220229
}
@@ -223,9 +232,13 @@ reader.setUrl(`${__BASE_PATH__}/data/volume/LIDC2.vti`).then(() => {
223232
comp: baseComp,
224233
data: baseData,
225234
};
226-
volumeOptions['Labelmap volume'] = {
235+
volumeOptions['Sphere labelmap volume'] = {
227236
comp: newComp,
228-
data: newData,
237+
data: sphereData,
238+
};
239+
volumeOptions['Cube labelmap volume'] = {
240+
comp: newComp,
241+
data: cubeData,
229242
};
230243

231244
Object.keys(volumeOptions).forEach((key) => {

0 commit comments

Comments
 (0)