|
@@ -50,6 +50,16 @@ class NRRDLoader extends Loader {
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ *
|
|
|
|
+ * @param {boolean} segmentation is a option for user to choose
|
|
|
|
+ */
|
|
|
|
+ setSegmentation( segmentation ) {
|
|
|
|
+
|
|
|
|
+ this.segmentation = segmentation;
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
parse( data ) {
|
|
parse( data ) {
|
|
|
|
|
|
// this parser is largely inspired from the XTK NRRD parser : https://github.com/xtk/X
|
|
// this parser is largely inspired from the XTK NRRD parser : https://github.com/xtk/X
|
|
@@ -378,10 +388,22 @@ class NRRDLoader extends Loader {
|
|
const yIndex = headerObject.vectors.findIndex( vector => vector[ 1 ] !== 0 );
|
|
const yIndex = headerObject.vectors.findIndex( vector => vector[ 1 ] !== 0 );
|
|
const zIndex = headerObject.vectors.findIndex( vector => vector[ 2 ] !== 0 );
|
|
const zIndex = headerObject.vectors.findIndex( vector => vector[ 2 ] !== 0 );
|
|
|
|
|
|
- const axisOrder = [];
|
|
|
|
- axisOrder[ xIndex ] = 'x';
|
|
|
|
- axisOrder[ yIndex ] = 'y';
|
|
|
|
- axisOrder[ zIndex ] = 'z';
|
|
|
|
|
|
+ let axisOrder = [];
|
|
|
|
+
|
|
|
|
+ if ( xIndex !== yIndex && xIndex !== zIndex && yIndex !== zIndex ) {
|
|
|
|
+
|
|
|
|
+ axisOrder[ xIndex ] = 'x';
|
|
|
|
+ axisOrder[ yIndex ] = 'y';
|
|
|
|
+ axisOrder[ zIndex ] = 'z';
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+
|
|
|
|
+ axisOrder[ 0 ] = 'x';
|
|
|
|
+ axisOrder[ 1 ] = 'y';
|
|
|
|
+ axisOrder[ 2 ] = 'z';
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
volume.axisOrder = axisOrder;
|
|
volume.axisOrder = axisOrder;
|
|
|
|
|
|
} else {
|
|
} else {
|
|
@@ -423,7 +445,7 @@ class NRRDLoader extends Loader {
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
- if ( ! headerObject.vectors ) {
|
|
|
|
|
|
+ if ( ! headerObject.vectors || this.segmentation ) {
|
|
|
|
|
|
volume.matrix.set(
|
|
volume.matrix.set(
|
|
1, 0, 0, 0,
|
|
1, 0, 0, 0,
|