@@ -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