Skip to content

Commit ab7569c

Browse files
sedghifinetjul
authored andcommitted
fix(imageResliceMapper): refine texel size normalization for consistent label outlines
1 parent 89e6e08 commit ab7569c

2 files changed

Lines changed: 13 additions & 5 deletions

File tree

-6.42 KB
Loading

Sources/Rendering/OpenGL/ImageResliceMapper/index.js

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -999,17 +999,25 @@ function vtkOpenGLImageResliceMapper(publicAPI, model) {
999999
}
10001000
}
10011001

1002-
// Set per-input texture-coordinate steps normalized by spacing so label
1003-
// outline thickness stays visually consistent on anisotropic reformats.
1002+
// Normalize by the finest axis so outlines respect anisotropic spacing
1003+
// without becoming visually thicker on coarse axes.
10041004
for (let i = 0; i < model.currentValidInputs.length; i++) {
10051005
const uniformName = `texelSize${i}`;
10061006
if (program.isUniformUsed(uniformName)) {
10071007
const imageData = model.currentValidInputs[i].imageData;
10081008
const inputDims = imageData.getDimensions();
10091009
const inputSpacing = imageData.getSpacing();
1010-
model._tmpTexelSize[0] = 1.0 / (inputDims[0] * inputSpacing[0]);
1011-
model._tmpTexelSize[1] = 1.0 / (inputDims[1] * inputSpacing[1]);
1012-
model._tmpTexelSize[2] = 1.0 / (inputDims[2] * inputSpacing[2]);
1010+
const minSpacing = Math.min(
1011+
Math.abs(inputSpacing[0]),
1012+
Math.abs(inputSpacing[1]),
1013+
Math.abs(inputSpacing[2])
1014+
);
1015+
model._tmpTexelSize[0] =
1016+
minSpacing / (inputDims[0] * Math.abs(inputSpacing[0]));
1017+
model._tmpTexelSize[1] =
1018+
minSpacing / (inputDims[1] * Math.abs(inputSpacing[1]));
1019+
model._tmpTexelSize[2] =
1020+
minSpacing / (inputDims[2] * Math.abs(inputSpacing[2]));
10131021
program.setUniform3fv(uniformName, model._tmpTexelSize);
10141022
}
10151023
}

0 commit comments

Comments
 (0)