public byte[] DICOMSeriesToVolume(DicomDirectoryRecord series, out Int3 size) { size = GetSizeForRecord(series); var voxels = new VolumeBuffer <Color32>(size); var tex = new Texture2D(2, 2); var instanceNumbers = series.LowerLevelDirectoryRecordCollection.Select(x => x.Get <int>(DicomTag.InstanceNumber)).OrderBy(x => x).ToArray(); for (var z = 0; z < instanceNumbers.Length; z++) { var frame = instanceNumbers[z]; tex = loadDicomInstance.GetTexture2DForRecord(series, frame); var fromPixels = tex.GetPixels32(); for (var y = 0; y < size.y; y++) { for (var x = 0; x < size.x; x++) { var from = fromPixels[x * resolution + ((size.y - 1 - y) * size.x) * resolution * 2]; voxels.SetVoxel(new Int3(x, y, z), from); } } } voxels.ClearEdges(new Color32(0, 0, 0, 0)); return(VolumeTextureUtils.Color32ArrayToByteArray(voxels.DataArray)); }