Volume Viewer

Publish a scan as something a reader can look through, not a picture of one slice. Drop a NIfTI (.nii or .nii.gz) or an NRRD (.nrrd) — an MRI, a CT, a micro-CT of a specimen, a confocal z-stack — and it arrives as a GPU-raymarched volume with the controls a radiologist or a microscopist actually uses: window and level for contrast, maximum-intensity projection for the whole depth at once, iso-surface for a single threshold, and a crop box that cuts slabs on all three axes. VOXEL SIZE IS THE DETAIL THAT MATTERS: the brick is built at the file's own spacing — NIfTI pixdim scaled by xyzt_units, NRRD spacings or the space-direction lengths — and normalised to millimetres, so an anisotropic stack (a confocal z-step several times its xy pixel, a CT with thick slices) keeps its true proportions and the measure tools read in mm; a file that lies about pixdim renders squashed, which is worth checking before publishing. INTENSITY: the render texture is 8-bit, so the reader maps the 0.5th-99.5th percentile of the source values to black and white rather than min-to-max, because one hot voxel or one dead detector element otherwise compresses everything real into a few grey levels; the pair of source values behind that window is kept, so the scalar bar prints Hounsfield numbers or raw intensities instead of a meaningless 0 to 1. Each axis is capped at 256 voxels, so a 512-cube CT loads decimated by two and an iso threshold sits very slightly differently than it would at full resolution. CUTTING: use the crop box, NOT section planes — sections work by setting the renderer's clipping planes, which three.js injects into its own materials, and the raymarcher is a hand-written shader that never receives them, so this plate deliberately offers no section tool. A segmentation overlay tints the render by integer label and can be toggled and faded here, but it arrives through volume.setSegments rather than the dropzone, which loads one volume at a time. NOT READ: DICOM (a directory of per-slice files with a dozen possible compressions — convert with dcm2niix first), NIfTI-2, detached NRRD headers, and 4D series beyond their first frame. As with every heavy-data plate the voxels are never serialized: a published track reopens on the same window, colormap and crop, and the file is re-dropped.

Supported file formats: NII, NII.GZ, NRRD